宣告構成函式程序主體的名稱、引數以及程式碼。
語法
Function name [(arglist)] [statements] [name=expression] [Exit Function] [statements] [name=expression] End Function
引數:
Name:函式的名稱;依循標準變數命名慣例。
Arglist:代表呼叫函式程序時,傳遞至函式程序之引數的變數清單。以逗號分隔多個變數。
arglist 引數具有下列語法及部分:
[ByVal | ByRef] varname[( )]
Arglist 引數:
ByVal:表示由值傳遞引數。
ByRef:表示由參照傳遞引數。
Varname:代表引數的變數名稱;依循標準變數命名慣例。
Statements:要在函式程序的主體內執行的任何一組陳述式。
Expression:傳回函式的值。
備註
如果未使用 Public 或 Private 明確指定,則函式程序預設為公用,亦即,指令碼中的所有其他程序皆會顯示函式程序。函式中的區域變數值在呼叫程序之間不會被保留。
您無法在任何其他程序 (例如 Sub 或 Property Get) 中定義函式程序。
Exit 函式陳述式會立即結束函式程序。程式執行會繼續進行呼叫 Function 程序之陳述式後的陳述式。可以在 Function 程序中的任何位置顯示任何數目的 Exit 函式陳述式。
就像 Sub 程序一樣,Function 程序是可以採用引數、執行一系列陳述式以及變更其引數值的個別程序。不過,與 Sub 程序不同的是,當您想要使用由函式傳回的值時,您可以像使用任何內建函式 (例如 Functions Sqr、Mid 或 Chr) 的方式一樣,在表示式右側使用 Function 程序。
您可以在表示式中使用函式名稱 (後面以括號接著引數清單) 呼叫 Function 程序。請參閱 Call 陳述式,以取得有關如何呼叫 Function 程序的特定資訊。
若要從函式傳回值,請將值指派給函式名稱。可以在程序中的任何位置顯示任何數目的這類指派。如果未將值指派給名稱,則程序不會傳回任何值。
下列範例顯示如何將傳回值指派給名為 FindValue 的函式。在此情況下,會將 False 指派給名稱,以表示找不到某些值。
範例 1:
Function FindValue(val)
Dim notFound
notFound = True
'Business Logic
'val not found. Return a val of False.
If notFound Then
FindValue = False
Exit Function
End If
' Business Logic
End Function
'Usage:-
val = FindValue(8)
Function 程序中使用的變數分為兩種類別:明確在程序中宣告的變數,以及未明確宣告的變數。在程序中明確宣告的變數一律是程序的區域變數。除非在程序外部的最高層級明確宣告已使用但未明確宣告的變數,否則程序中的這些變數也是區域變數。