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