首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 学院论坛
精选专题 | 精美壁纸 | 专家答疑 | Flash剧场 | Photoshop | 名词解释 | 梦幻桌面 | PS高手进阶 | QQ区 | 图书 | 黑客教材
Flash教程| 卡通制作 | AutoCAD | 3DMax实例 | PS视频教程| 网页制作 | CorelDRAW| Firework | 滤镜与实例 | 全部视频教程
当前位置:eNet硅谷动力 > 学院频道 > VB

Excel中的“宏”的应用
2004-02-20 16:34 来源:eNet论坛
【简 介】
Excel电子表格软件是应用最广泛的软件之一,它的数据处理、图表功能及各种函数和工具深受广大用户的喜爱。Excel文件是一个工作薄,一个工作薄最多可以包含255个工作表,每个工作表又可以包含大量的数据。
    
加入收藏  设为首页

  Excel的强大优势还在于它提供的宏语言Visual Basic for Application(VBA).Visual Basic是windows环境下开发应用软件的一种通用程序设计语言,功能强大,简便易用。VBA是它的一个子集,可以广泛地应用于Microsoft公司开发的各种软件中,例如Word、Excel、Access等。

  那么,"宏"到底是什么呢?

  在Excel 97中,"宏"是一个难以理解的概念,但对于一个具体的"宏"而言,却是容易理解的,如果说"将一块文字变为注释:黑体注释:,字号为注释:三号注释:"就可以看作一个"宏"的话,那么"宏"就不难理解了,其实Excel 97中的许多操作都可以是一个"宏"。

  "记录宏"其实就是将工作的一系列操作结果录制下来,并命名存储(相当于VB中一个子程序)。在Excel 97中,"记录宏"仅记录操作结果,而不记录操作过程。例如,改变文字字体时,需要打开"字体"栏中的下拉列表,再选择一种字体,这时文字即变为所选择的字体,这是一个过程,结果是将所选择的文字改变为所选择的字体。而"记录宏"则只记录"将所选择的文字改变为所选择的字体"这一结果。

  Excel 97中工作表是由行和列组成的二维表格,我们可以通过系统提供的语句activesheet.cells(I,j),将当前工作表中的第I行第j列所在的单元格中的数据取出(也可将它数据填入到指定的单元格中),然后反把它放入所定义的数组中,这时就可以对其进行各种操作,如求平均分、总分、分数段人数等等。

  本人就利用Excel 97中所提供的宏功能来做学生成绩的分析处理程序。本程序是Excel中的一个文件,其中包含以下几个宏:分班、总分、平均分、分数段、删除等。

  说明:⑴本程序是以本校高三理科班学生成绩进行分析。

     ⑵有关程序中用到的几具宏的功能说明:

  分班:针对于难以确定班级的情况下,以班为单位进行分班,本宏可以作为高一新生入学时进行分班的功能。

  总分:对原始的成绩自动求总分。

  平均分:对原始的成绩以班为单位进行各学科平均成绩的计算及全校各学科成绩的计算。

  分数段:给定一个最高分数及最低分数,然后统计出各班各个分数段的人数,各分数段人数进行累计。

  删除:用于删除不用的工作表。

  现将各个宏的代码列举如下:

  ⑴分班

  Sub 分班()

 Const studentno = 191 注释:学生人数
 Const zdno = 12 注释:字段数
 Dim zd$(zdno) 注释:定义为12个字段的数组
 Dim a(studentno, zdno), stu(60, zdno)
 Dim nam$(studentno), bjname$(60) 注释:定义一个存放全校学生名字及各班学生名字的数组
 Dim bj(studentno) 注释:定义存放班级的一个数组
 注释:理科班工作表
 Sheets("高三理").Select
 For i = 2 To studentno
  bj(i) = ActiveSheet.Cells(i, 1)
  nam$(i) = ActiveSheet.Cells(i, 2)
  For j = 3 To zdno
   a(i, j) = ActiveSheet.Cells(i, j)
  Next j
 Next i
 注释:存放字段到数组中。
 For i = 1 To zdno
  zd$(i) = ActiveSheet.Cells(1, i)
 Next i
 注释:先建立各个班级的工作表
 Sheets("高三理").Select
 Sheets("高三理").Copy After:=Sheets("分数段")
 Sheets("高三理 (2)").Select
 Sheets("高三理 (2)").Name = "33"
 For i = 2 To studentno
  For j = 1 To zdno
   ActiveSheet.Cells(i, j) = Space$(1)
  Next j
 Next i
 Range("a1").Select
 For i = 1 To zdno
  ActiveSheet.Cells(1, i) = zd$(i)
 Next i
 注释:34到36班工作表的建立
 For i = 34 To 36
  x$ = Mid$(Str(33), 2)
  Sheets(x$).Select
  Sheets(x$).Copy After:=Sheets("分数段")
  Sheets(x$ + " (2)").Select
  Sheets(x$ + " (2)").Name = Mid$(Str(i), 2)
 Next i
 注释:具体分班。
 For k = 33 To 36
  bjrs = 0
  x$ = Mid$(Str(k), 2)
  no = k Mod 10
  Sheets(x$).Select
  For i = 2 To studentno
   If bj(i) = no Then
    bjrs = bjrs + 1
    bjname$(bjrs) = nam$(i)
    For j = 3 To zdno
     stu(bjrs, j) = a(i, j)
    Next j
   End If
  Next i
  For i = 2 To bjrs
   ActiveSheet.Cells(i, 1) = no
   ActiveSheet.Cells(i, 2) = bjname$(i)
   For j = 3 To zdno
    ActiveSheet.Cells(i, j) = stu(i, j)
   Next j
  Next i
 Next k
End Sub

  ⑵总分

 Const studentno = 190
 Const xknum = 6
 Const zdnum = 12
 Sheets("高三理").Select
 For i = 2 To studentno + 1
  Sum = 0
  For j = 1 To xknum
   Sum = Sum + ActiveSheet.Cells(i, j + 3)
  Next j
  ActiveSheet.Cells(i, zdnum-1) = Sum
 Next i
End Sub

  ⑶平均分

Sub 平均分()
 Const studentno = 190
 Const xknum = 6
 Dim fs(studentno, xknum), pjf3(4, 6), bjrs(4), qxpjf(6)
 Dim bj(studentno)
 Sheets("高三理").Select
 注释:以下程序段用于求全校平均分
 For i = 1 To studentno
  bj(i) = ActiveSheet.Cells(i + 1, 1)
  For j = 1 To xknum
   fs(i, j) = ActiveSheet.Cells(i + 1, j + 3)
  Next j
 Next i
 For i = 1 To xknum
  Sum = 0
  For j = 1 To studentno
   Sum = Sum + fs(j, i)
  Next j
  qxpjf(i) = Sum / (j - 1)
 Next i
 注释:以下程序段用于求各班平均分
 For j = 1 To 4
  For i = 1 To studentno
   If bj(i) = j + 2 Then
    bjrs(j) = bjrs(j) + 1
    For k = 1 To xknum
     pjf3(j, k) = pjf3(j, k) + fs(i, k)
    Next k
   End If
  Next i
 Next j
 For j = 1 To 4
  For i = 1 To 6
   pjf3(j, i) = pjf3(j, i) / bjrs(j)
  Next i
 Next j
 注释:写入各班各科平均分
 Sheets("平均分").Select
 For i = 1 To 4
  For j = 1 To 6
   ActiveSheet.Cells(i + 2, j + 1) = pjf3(i, j)
  Next j
 Next i
 注释:写入全校各科平均分
 i = 7
 For j = 1 To 6
  ActiveSheet.Cells(i, j + 1) = qxpjf(j)
 Next j
End Sub

⑷分数段

Sub 分数段()
 Const max = 600
 Const min = 390
 Const studentno = 190
 Const bjnum = 4
 Const fsdnum = 22
 Dim bjfsd(bjnum, fsdnum), zf(studentno, 2)
 Sheets("高三理").Select
 For i = 1 To studentno
  zf(i, 1) = ActiveSheet.Cells(i + 1, 1) 注释:存放班级
  zf(i, 2) = ActiveSheet.Cells(i + 1, 11) 注释:存放总分
 Next i

 For i = 1 To studentno
  For j = 1 To 4 注释:3---6班共4个班级
   If zf(i, 1) = j + 2 Then
    For k = max To min Step -10
     low = Int((max + 10 - k) / 10)
     If zf(i, 2) > k Then bjfsd(j, low) = bjfsd(j, low) + 1
    Next k
   End If
  Next j
 Next i
 Sheets("sheet3").Select
 For i = 3 To 6
  For k = 1 To fsdnum
   ActiveSheet.Cells(i, k + 1) = bjfsd(i - 2, k)
  Next k
 Next i
 Range("M3:W6").Select
 Selection.Cut
 ActiveWindow.LargeScroll ToRight:=-1
 Range("B8").Select
 ActiveSheet.Paste
End Sub

  ⑸ 删除

Sub 删除()
  Sheets("33").Select
  ActiveWindow.SelectedSheets.Delete
  Sheets("34").Select
  ActiveWindow.SelectedSheets.Delete
  Sheets("35").Select
  ActiveWindow.SelectedSheets.Delete
  Sheets("36").Select
  ActiveWindow.SelectedSheets.Delete
End Sub


关键字:  
您对这篇文章的看法是:    喜欢 反感 支持 反对 加油 鄙视 学习 打击 佩服 漂亮 路过 发表评论
视频教程】 【专题汇总】 【不懂就问我关闭窗口

360安全卫士 V5.1.1正式版发布!
Photoshop给模特美腿加上质感肤色
了解差距 国外27款创意名片设计赏
认清五种被忽视的黑客攻击方式
QQ音乐播放器2009正式版今天发布!
 本栏目最新文章
·编写电话拨号程序时一点小技巧
·VB开发应用软件之写在动手之前
·用VB实现“木马”式隐形运行程序
·怎样实现在VB窗体中有Html页面
·用VB编程实现图像的熠熠生辉效果
 精彩回放
·3DSMAX打造书本翻开效果
·共享上网技巧应用四则
·陪酒女浸泡在酒里的青春
·美女的性感靓丽婚纱设计
·妖冶身姿 死或生3壁纸
·剿灭Win XP下的29个烦恼
·黑客必备 NET命令大全
·用PS制作精致绝伦的红酒
 精彩推荐
 今日软件下载
杀毒软件免费随便用
瑞星全功能安全软件2009 基于“云安全”策略和“智能主动防御”技术开发.
www.rising.com.cn
 往日推荐
·推荐“美图秀秀”就能赚Q币
·五大搜索引擎横向评测
·防御计算机病毒十大步骤

论坛精华
·史上最强最多 photo 
·photoshop完美扣图教 
·网络学院flash教程目 
·Photoshop下载大全 
·PhotoShop实例精选电 
·打包笔刷 附图的~~ 
热点推荐
绘制逼真金蛋
浪漫婚纱照片
Flash视频编程
Ulead GIF教程
热点关注
·Flash CS4 制作经典小游戏
·C语言程序设计视频教程
·PHP+MYSQL开发视频教程
·Flash CS4从入门到精通教程
·服装设计与效果图绘制教程
·21视频之Fireworks8网页制作
·Vray高级实例应用视频教程
·CorelDRAW14入门到高级教程
·Vray高级实例应用视频教程
全国计算机等级考试二级(VB语言)
往日推荐
网站重构设计
鹏哥C#教程
服装设计教程
PS唯美风景
焦点关注