VBA - 撰寫 Visual Basic 陳述式

04 Dec 2018

在 Visual Basic陳述式是完整的指令。 它可以包含關鍵字、 運算子、變數、常數和運算式。 每個陳述式屬於下列其中一個下列三種類別:

透過多行繼續陳述式

陳述式通常是適合在同一行,但您可以使用行接續字元繼續到下一行的陳述式。 在下列範例中, MsgBox可執行陳述式會繼續超過三行:

Sub DemoBox() 'This procedure declares a string variable, 
 ' assigns it the value Claudia, and then displays 
 ' a concatenated message. 
 Dim myVar As String 
 myVar = "John" 
 MsgBox Prompt:="Hello " & myVar, _ 
 Title:="Greeting Box", _ 
 Buttons:=vbExclamation 
End Sub

新增註解

註解可以說明程序或讀取您的程式碼的任何人的特定指示。 執行您的程序時,Visual Basic 會忽略註解。 註解行開始使用單引號 (’) 或Rem後面緊接著一個空格,並可以新增的程序中的任何地方。 若要將註解新增至陳述式的同一行,插入單引號之後的陳述式,後面接著註解。 根據預設,以綠色文字顯示註解。

請檢查語法錯誤

如果您在輸入一行程式碼後按 ENTER,列會顯示紅色 (錯誤訊息也會顯示),您必須了解您的陳述式有什麼問題,並加以修正。

撰寫宣告陳述式

您可以使用宣告陳述式名稱,並定義程序、變數、陣列和常數。 當您宣告程序、 變數,或常數,您也定義其範圍時,根據您將放在宣告和哪些關鍵字您使用宣告它。 下列範例會包含三個宣告。

Sub ApplyFormat() 
    Const limit As Integer = 33 
    Dim myCell As Range 
    ' More statements 
End Sub

Sub陳述式 (使用比對End Sub陳述式) 會宣告名為的程序ApplyFormat。 執行SubEnd Sub陳述式所含括的所有陳述式的每當ApplyFormat呼叫或執行程序。

Const陳述式會宣告常數limit指定Integer資料類型和值的 33。

Dim陳述式會宣告常數myCell變數。 資料類型是物件,在此情況下,Microsoft Excel Range物件。 您可以宣告為在您使用的應用程式中公開的任何物件的變數。 Dim陳述式是一種類型的陳述式,用來宣告變數。 用於 declarations 其他關鍵字是ReDimStaticPublicPrivateConst

撰寫指派陳述式

指派陳述式會指派給變數或常數的值或運算式。 指派陳述式一律包含等號 (=)。

下列範例會將InputBox函數的傳回值指派給變數。

Sub Question() 
 Dim yourName As String 
 yourName = InputBox("What is your name?") 
 MsgBox "Your name is " & yourName 
End Sub

Let陳述式是選擇性的並省略通常。 例如,可以撰寫先前指派的陳述式。

Let yourName = InputBox("What is your name?"). 

Set 陳述式用來將物件指派給已宣告為物件的變數。 需要Set關鍵字。 在下列範例中, Set陳述式會在 Sheet1 上的範圍指派給物件變數myCell

Sub ApplyFormat() 
Dim myCell As Range 
Set myCell = Worksheets("Sheet1").Range("A1") 
 With myCell.Font 
 .Bold = True 
 .Italic = True 
 End With 
End Sub

設定屬性值的陳述式也是指派陳述式。 下列範例會設定作用中儲存格的Font物件的Bold屬性。

ActiveCell.Font.Bold = True 

撰寫可執行陳述式

可執行陳述式會初始化巨集指令。 它可以執行某個方法或函式,而且它可以執行迴圈,或透過程式碼區塊的分支。 可執行陳述式通常包含數學或條件的運算子。

下列範例會使用 ForNext 陳述式來逐一查看_MyRange_作用中的 Microsoft Excel 活頁簿中 Sheet1 上名為範圍中每個儲存格。 變數c是包含_MyRange_中的儲存格的集合中的儲存格。

Sub ApplyFormat() 
Const limit As Integer = 33 
For Each c In Worksheets("Sheet1").Range("MyRange").Cells 
    If c.Value > limit Then 
        With c.Font 
            .Bold = True 
            .Italic = True 
        End With 
    End If 
Next c 
MsgBox "All done!" 
End Sub

IfThenElse 陳述式範例中的會檢查儲存格的值。 如果值大於 33, With陳述式會設定該儲存格的Font物件的BoldItalic屬性。 IfThenElseEnd If陳述式結尾。 With陳述式可以儲存輸入因為下列With關鍵字的物件上自動執行其所包含的陳述式。

下一個陳述式會呼叫包含_MyRange_中的儲存格的集合中的下一個儲存格。

Msgbox 函式 (這會顯示內建的 Visual Basic 對話方塊) 會顯示訊息,指出Sub程序已完成執行。