經(jīng)過前面的一系列文章的示例學(xué)習(xí),我們應(yīng)該已經(jīng)熟悉了Sub過程。通常我們看到的Sub過程的基本形式是:
Sub 過程名稱()
[此處放置代碼語句]
Exit Sub
End Sub
這也是我們在編寫大多數(shù)VBA程序時用到的結(jié)構(gòu)。其中:
過程名稱為編程人員給過程命名的名稱,其命名規(guī)則與變量名稱的規(guī)則相同。在同一模塊中的過程名稱不能同名。
Sub和End Sub配套出現(xiàn),它們之間構(gòu)成一個完整的程序過程。
過程中的代碼可以放置ExitSub語句,表示提前退出過程。
通常,在VBE編輯器中,寫下sub和過程名稱,按下回車鍵后,會自動添加End Sub語句。Sub過程用來執(zhí)行操作,而Function過程可以返回值,創(chuàng)建自定義函數(shù)。Function過程的基本語法形式為:
Function 過程名稱()
[此處放置代碼語句]
[過程名稱= 表達(dá)式或值]
[Exit Function]
[此處放置代碼語句]
[過程名稱= 表達(dá)式或值]
End Function
可以看出,其形式與Sub過程的基本形式相似,只是將關(guān)鍵詞Sub換成了Function。注意:
在Function過程的代碼語句中,應(yīng)至少有一次把某個確定的值賦值給函數(shù)過程的名稱。
建議避免使用Excel內(nèi)置函數(shù)名稱、單元格引用、單元格區(qū)域的名稱作為函數(shù)過程的名稱。
Function過程不能對單元格區(qū)域進(jìn)行修改,不能執(zhí)行與對象相關(guān)的操作。
Function過程可以應(yīng)用在工作表公式中,就像Excel的內(nèi)置函數(shù)一樣;Function過程也可以應(yīng)用在VBA代碼中。
過程代碼中可以放置ExitFunction語句,表示提前退出過程。
按慣例,方括號表示可選。
下面的示例代碼統(tǒng)計當(dāng)前可見工作簿的數(shù)量:
Function lWkbNum()
Dim lCount As Long ‘聲明計數(shù)變量
Dim wkb As Workbook ‘聲明工作簿對象變量
‘遍歷應(yīng)用程序中的工作簿
For Each wkb In Application.Workbooks
‘如果為可見工作簿則增加1
If wkb.Windows(1).Visible Then
lCount = lCount + 1
End If
Next wkb
‘將結(jié)果賦值給函數(shù)名
lWkbNum = lCount
End Function
就像運(yùn)用Excel內(nèi)置函數(shù)一樣,在工作表中輸入“=lWkbNum()”,顯示當(dāng)前已打開的可見工作簿的數(shù)量,如下圖所示。
圖:在單元格A1中輸入=lwkbnum(),顯示2,即當(dāng)前打開的可見工作簿數(shù)為2個
下面的代碼在Sub過程中調(diào)用自定義的lWkbNum函數(shù):
Sub testlWkbNum()
MsgBox “當(dāng)前可見工作簿的數(shù)量為:”& lWkbNum
End Sub
運(yùn)行后顯示如下圖所示的消息框:
由于之前的一系列文章中都是使用的Sub過程作為的例子,所以本文詳細(xì)介紹了Function過程的最基礎(chǔ)知識,給您一個初步的認(rèn)識。
不管是Sub過程還是Function過程,都可以帶有參數(shù),F(xiàn)unction過程還可以設(shè)置返回值的類型,我們將在后續(xù)逐步深入這些知識。