VBA代碼必須存放在某個位置,這個地方就是模塊。有兩種基本類型的模塊:標準模塊和類模塊。模塊中的每個過程或者是函數(shù)過程,或者是子程序概念.本課的最后部分將討論函數(shù)過程和子程序的區(qū)別。
新術語:
模塊:它是作為一個單元保存在一起的VBA定義和過程的集合。
類模塊:VBA允許你創(chuàng)建自己的對象,對象的定義包含在類模塊中。
你的大部分工作集中在標準模塊中(簡稱為模塊)當錄制宏時如果不存在模塊,EXCEL自動創(chuàng)建一個。EXCEL和VBA不關心代碼存放在哪一個模塊中,只要代碼存在于打開的工作簿中即可。
4.2 對模塊的概覽
過程被定義為VBA代碼的一個單元,過程中包括一系列用于執(zhí)行某個任務或是進行某種計算的語句。工作簿的每個過程都有唯一的名字加以區(qū)分。
有兩種不同的過程:子程序和函數(shù)過程。子程序只執(zhí)行一個或多個操作,而不返回數(shù)值。當錄制完宏查看代碼時,所看到的就是子程序。宏只能錄制子程序,而不能錄制函數(shù)過程。一個子程序的例子如清單4-1所示。
程序清單4-1 子程序的例子
Sub cmdSmallFont_Click()
With Selection.Font
.Name="Arial"
.FontStyle="Regular"
.Size=16
End With
End sub
上面列出的過程實際上是一個事件過程。通過它的名字,就可以知道這是一個事件過程。這個過程的名字是由一個對象的名字CmdSmallFont和一個事件的名字Click組成的,兩者之間用下劃線分開。如果還不明白,可以告訴你,CmdSmallFont是一個命令按鈕的名字。也就是說,當單擊這個命令按鈕時,就會運行這個事件過程。
函數(shù)過程通常情況下稱為函數(shù),要返回一個數(shù)值。這個數(shù)值通常是計算的結果或是測試的結果,例如False 或True.正如前面所說,可以用VBA創(chuàng)建自定義函數(shù)。實際上可以在工作表上使用你創(chuàng)建的函數(shù)。程序清單4-2是一個計算價格的10%為運費的簡單例子。
程序清單4-2 簡單的用戶定義函數(shù)示例。
Public Function Shipping(Price)
Shipping = Price * 0.1
End Function
請注意,這個函數(shù)使用一個參數(shù)(Price).子程序和函數(shù)都可以使用參數(shù)。不論Price的值是多少,它都將決定運費額。Price可以是數(shù)字和單元格引用。函數(shù)返回計算出來的運費,這個函數(shù)可以用在單元格中。
A B
1 Price 100
2 Shipping =shipping(B1)
4.2.1 創(chuàng)建過程
創(chuàng)建第一個過程需要兩個基本步驟。首先,需要向工作簿中添加一個模塊。接著需要向模塊中添加一個工程。對于創(chuàng)建的每一個應用程序,只需添加一次模塊。可以使用多個模塊,但這是不必要的。某些開發(fā)者喜歡使用多個模塊,以便根據(jù)他們的目的或者窗體對過程進行組織。在本練習中,創(chuàng)建的過程只顯示一個消息框。
在本練習中創(chuàng)建的過程只顯示一個消息框。在本練習中使用Msgbox是為了提供一個可見的例子,雖然我們還沒有介紹過Msgbox語句,但是在本例中將使用它。要創(chuàng)建該過程,請按如下步驟進行:
1)打開一個新工作簿。
2)選擇"工具"-"宏"-"Visual Basic編輯器",打開VBA編輯器窗口。
3)在`VBA編輯器的左面,可以看到“工程資源管理器”窗口。在工程資源管理器窗口的“Thisworkbook"上單擊鼠標右鍵,選擇“插入”-“模塊”,這樣就將一個模塊添加到應用程序中了。(如果你沒有看見“工程資源管理器”窗口,可以按Ctrl+R)
4)選擇“插入”“過程”,顯示“添加過程”對話框。
5)輸入“第一個工程”作為過程名字。在“類型”分組框中,確認選擇了“子程序”。單擊“確定”按鈕。這樣一個新的過程就添加到模塊中了。可以在模塊中看到以 Public Sub 第一個過程()開始,以End Sub結束的語句結構。
6)在過程中插入光標,輸入以下語句并回車:
Msgbox "這是我的第一個過程"
在輸入Msgbox后,會自動彈出一個消息框告訴你有關這條命令的信息,稱之為自動列表技術。輸入完成的過程如下所示:
Public Sub 第一個過程()
Msgbox "這是我的第一個過程"
End Sub
VBA對子程序和函數(shù)有如下的命名規(guī)則:
* 名字中可以包含字母數(shù)字和下劃線。
* 名字中不能包含空格句號驚嘆號,也不能包含字符@ & $ #.
* 名字最多可以包含255個字符。
4.2.2 運行宏
創(chuàng)建這個過程后,可以運行一下。運行一個過程有幾種方法:可以直接使用“運行”菜單,“運行子程序/用戶窗體”工具欄按鈕或按下F5鍵。要運行一個過程,可以按照如下步驟:
1)單擊“運行子程序/用戶窗體”工具欄按鈕,過程執(zhí)行并顯示一個消息框。
2)單擊消息框之中的“確定”按鈕,關閉該消息框。
4.3 保存對模塊所做的改變
要保存新過程,需要保存過程所駐留的工作簿.可以用VBA編輯器保存工作簿.具體步驟如下:
1)選擇"文件"-"保存工作簿".因為本工作簿還沒有保存過,所以要給它命名.
2)輸入"HOUR4"作為文件名并按回車鍵,則工作簿和模塊與過程都保存下來了.