用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)。