您当前的位置:JZ5U绿色下载站文章中心设计学院Photoshop → 文章内容
  • 用VBA实现Excel打印成绩通知单

 《中国电脑教育报》2005年第5期G5版与第28期E6版分别介绍了两种制作成绩通知单的方法,但存在一个共同的问题是:最后在成绩通知单格式上还得对每位考生进行一一设置,如果考生人数多同样显得繁琐。本文介绍利用VBA实现Excel打印成绩通知单,可以避免这一问题。 (点击查看更多软件使用技巧)

  准备工作

  为便于理解、记忆,将工作表的名称分别更改为“考试成绩”、“通知单”。在“考试成绩”工作表中是每个学生的考试成绩A1至K64,在“通知单”工作表中建立一个空白表格,作为成绩通知单模板,如图1所示。

图1

  编写代码

  1. 进入VB编辑环境,依次点击“工具→宏→Visual Basic 编辑器”。

  2. 定义触发事件。鼠标双击“工程”窗体中的“通知单”工作表,窗体右侧就出现了对应于该工作表的一些事件。选择响应“激活工作表”动作的事件activate,在窗体右侧的代码区域就出现了worksheet_activate()过程。接下来要做的就是在这个过程中添加代码了。

  3.为事件添加代码如下:

  Private Sub Worksheet_Activate()

  Dim i As Integer '循环变量

  For i = 1 To 100

  If Sheet1.Cells(i, 1) = "" Then

  '如果“考试成绩”工作表的考号中没有内容,则退出循环

  Exit For

  End If

  sbegin = (i - 1) * 5 + 1

  send = i * 5

  dbegin = i * 5 + 1

  dend = (i + 1) * 5

  '确定复制、粘贴“通知单”格式区域的起止行,5为复制区域的行数

  Sheet2.Range(Cells(sbegin, 1), Cells(send, 11)).Copy _

  Destination:=Sheet2.Range(Cells(dbegin, 1), Cells(dend, 11))

  '将(Cells(sbegin, 1), Cells(send, 11))区域中的格式拷贝到(Cells(dbegin, 1), Cells(dend, 11))

  Cells(sbegin + 3, 1).Value = Sheet1.Cells(i + 1, 1).Value

  Cells(sbegin + 3, 2).Value = Sheet1.Cells(i + 1, 2).Value

  Cells(sbegin + 3, 3).Value = Sheet1.Cells(i + 1, 3).Value

  Cells(sbegin + 3, 4).Value = Sheet1.Cells(i + 1, 4).Value

  Cells(sbegin + 3, 5).Value = Sheet1.Cells(i + 1, 5).Value

  Cells(sbegin + 3, 6).Value = Sheet1.Cells(i + 1, 6).Value

  Cells(sbegin + 3, 7).Value = Sheet1.Cells(i + 1, 7).Value

  Cells(sbegin + 3, 8).Value = Sheet1.Cells(i + 1, 8).Value

  Cells(sbegin + 3, 9).Value = Sheet1.Cells(i + 1, 9).Value

  Cells(sbegin + 3, 10).Value = Sheet1.Cells(i + 1, 10).Value

  Cells(sbegin + 3, 11).Value = Sheet1.Cells(i + 1, 11).Value

  '将“考试成绩”工作表的数据填入“通知单”相应位置

  Next i

  End Sub

  检验成果

  进入工作簿,按下“通知单”工作表,即可得到所有学生的成绩通知单了(如图2)。


  • 作者:互联网  来源:本站整理  发布时间:2005-09-27 21:54:15


------------------------------- · 相关文档浏览 · --------------------------------------------------------------------- · 热门文档浏览 · -------------------------------------