VBA - 撰寫 Visual Basic 程序

05 Dec 2018

撰寫 Sub 程序

Sub程序是一系列的 Visual Basic 陳述式前後加上SubEnd Sub 陳述式所執行的動作,但不會傳回一個值。 Sub 程序可能需要傳遞引數,例如常數、變數或運算式,會呼叫程序。 如果子程序沒有任何引數, Sub陳述式必須包含括號空集合。

撰寫屬性程序

屬性程序是一系列的 Visual Basic陳述式,可讓程式設計人員來建立和操作的自訂屬性。

當您建立屬性程序時,它會成為包含該程序的模組的屬性。 Visual Basic 提供下列三種類型的屬性程序。

程序 描述
Property Let 此程序設定屬性的值。
Property Get 傳回值屬性的程序。
Property Set 設定物件的參照程序。

宣告屬性程序的語法如下所示。

[Public | Private] [Static] Property {Get | Let | Set} propertyname [(arguments 引數)][As type] statements陳述式 End Property

屬性程序通常是用於配對: Property Get與屬性設定並使用Property GetProperty Let 。 宣告Property Get程序單獨就像是宣告唯讀屬性。 一起使用所有三個屬性程序類型時才有用的Variant變數,因為只有一個Variant可以包含的物件或其他資料類型資訊。 Property Set被預定用於物件;Property Let則不。

下表顯示在屬性程序宣告中宣告的必要引數。

程序 宣告語法
Property Get Property Get propname(1,…, n) As type
Property Let Property Let propname(1,…、、 n, n + 1)
Property Set Property Set propname(1,…、 n, n + 1)

透過最後一個引數 (1,…, n) 下一步] 的第一個引數必須共用相同的名稱和資料類型屬性的所有程序具有相同名稱。

Property Get程序宣告會比相關的Property LetProperty Set宣告一個較少引數。 Property Get程序的資料類型必須是相關的Property LetProperty Set宣告中的最後一個引數 (n + 1) 的資料類型相同。 例如,如果您要宣告下列的Property Let程序, Property Get宣告都必須以Property Let程序的引數具有相同名稱和資料類型使用引數。

Property Let Names(intX As Integer, intY As Integer, varZ As Variant) 
 ' Statement here. 
End Property 
 
Property Get Names(intX As Integer, intY As Integer) As Variant 
 ' Statement here. 
End Property 

Property Set的宣告中的最後一個引數的資料類型必須是一種物件類型或Variant。

撰寫函式程序

函式程序是一系列的FunctionEnd Function 陳述式所含括的 Visual Basic陳述式。 該函數程序會類似於Sub 程序,但函數也可以傳回一個值。

函數程序可能需要引數,例如常數、變數或運算式,會以傳入呼叫的程序。 如果該函數程序會不有任何引數,其Function陳述式必須包含括號空集合。 函式會傳回一個值指派值給它的程序的一個或多個陳述式中的名稱。

在下列範例中,攝氏函式會計算從華氏度攝氏度。 函式呼叫時從Main程序,包含引數值變數會傳遞至函數。 計算的結果是傳回呼叫程序,並顯示在訊息方塊中。

Sub Main() 
 temp = Application.InputBox(Prompt:= _ 
 "Please enter the temperature in degrees F.", Type:=1) 
 MsgBox "The temperature is " & Celsius(temp) & " degrees C." 
End Sub 
 
Function Celsius(fDegrees) 
 Celsius = (fDegrees - 32) * 5 / 9 
End Function