[Public [Default]| Private] Function name [( arglist )] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function 參數(shù) Public 表示 Function 過程可被所有腳本中的所有其他過程訪問。 Default 只與 Class 塊中的 Public 關鍵字一起使用來表示 Function 過程是類的默認方法。如果在一個類中指定了不止一個 Default 過程,就有錯誤發(fā)生。 Private 表示 Function 過程只可被聲明它的腳本中的其他過程訪問或者如果函數(shù)是一個數(shù)據(jù)類,那么 Function 過程只能被該類中的其他過程訪問。 name Function 的名稱,遵循標準的變量命名規(guī)則。 arglist 代表調用時要傳遞給 Function 過程的參數(shù)的變量列表。用逗號隔開多個變量。 statements 在 Function 過程的主體中執(zhí)行的任意語句組。 expression Function 的返回值。 arglist 參數(shù)包含下列語法和部分:
[ByVal | ByRef] varname[( )]
參數(shù) ByVal 表示該參數(shù)是按值方式傳遞的。 ByRef 表示該參數(shù)按引用方式傳遞。 varname 代表參數(shù)變量的名稱;遵循標準的變量命名規(guī)則。 說明 如沒有顯式指定使用 Public 或 Private,則 Function 過程默認為公用,即它們對于腳本中的所有其他過程是可見的。Function 中局部變量的值在對過程的調用中不被保留。
不能在任何其他過程(例如,Sub 或 Property Get)中定義 Function 過程。
使用 Exit Function 語句可以從 Function 過程中立即退出。程序繼續(xù)執(zhí)行調用 Function 過程的語句之后的語句??稍?nbsp;Function 過程的任何位置出現(xiàn)任意個 Exit Function 語句。
與 Sub 過程類似,F(xiàn)unction 過程是可以獲取參數(shù)、執(zhí)行一系列語句并改變其參數(shù)值的獨立過程。與 Sub 過程的不同之處是:當要使用由函數(shù)返回的值時,可以在表達式的右邊使用 Function 過程,這與內部函數(shù)的使用方式一樣,例如 Sqr、Cos 或 Chr。
在表達式中,可以通過使用函數(shù)名,并在其后用圓括號給出相應的參數(shù)列表來調用 Function 過程。有關調用 Function 過程的詳細信息,請參閱 Call 語句。
警告 Function 過程可以是遞歸的,即該過程可以調用自身以完成某個給定的任務。但是,遞歸可能會導致堆棧溢出。 要從函數(shù)返回一個值,只需將值賦給函數(shù)名。在過程的任意位置都可以出現(xiàn)任意個這樣的賦值。如果沒有給 name 賦值, 則過程將返回一個默認值:數(shù)值函數(shù)返回 0,字符串函數(shù)返回零長度字符串 ("")。如果在 Function 中沒有對象引用被指定給 name(使用 Set),則返回對象引用的函數(shù)將返回 Nothing。
Function BinarySearch(. . .) . . . ' 未找到該值。返回 False 值。 If lower > upper Then BinarySearch = False Exit Function End If . . . End Function在 Function 過程中使用的變量分為兩類:一類是在過程內顯式聲明的,另一類則不是。在過程內顯式聲明的變量(使用 Dim 或等效方法)總是過程的局部變量。被使用但沒有在過程中顯式聲明的變量也是局部變量,除非在該過程外更高級別的位置顯式聲明它們。