准备工作
为便于理解、记忆,将工作表的名称分别更改为“工资表”、“工资条”。在“工资表”工作表中是每个员工的工资明细A1至K64,在“工资条”工作表中建立一个空白表格,作为成绩通知单模板,
编写代码
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)。
图2