VBA - 撰寫 Visual Basic 陳述式
在 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
。 執行Sub到End Sub陳述式所含括的所有陳述式的每當ApplyFormat
呼叫或執行程序。
Const陳述式會宣告常數limit
指定Integer資料類型和值的 33。
Dim陳述式會宣告常數myCell
變數。 資料類型是物件,在此情況下,Microsoft Excel Range物件。 您可以宣告為在您使用的應用程式中公開的任何物件的變數。 Dim陳述式是一種類型的陳述式,用來宣告變數。 用於 declarations 其他關鍵字是ReDim、Static、Public、Private 和Const。
撰寫指派陳述式
指派陳述式會指派給變數或常數的值或運算式。 指派陳述式一律包含等號 (=)。
下列範例會將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
撰寫可執行陳述式
可執行陳述式會初始化巨集指令。 它可以執行某個方法或函式,而且它可以執行迴圈,或透過程式碼區塊的分支。 可執行陳述式通常包含數學或條件的運算子。
下列範例會使用 For…Next 陳述式來逐一查看_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
If…Then…Else 陳述式範例中的會檢查儲存格的值。 如果值大於 33, With陳述式會設定該儲存格的Font物件的Bold和Italic屬性。 If…Then…Else以End If陳述式結尾。 With陳述式可以儲存輸入因為下列With關鍵字的物件上自動執行其所包含的陳述式。
下一個陳述式會呼叫包含_MyRange_中的儲存格的集合中的下一個儲存格。
Msgbox 函式 (這會顯示內建的 Visual Basic 對話方塊) 會顯示訊息,指出Sub程序已完成執行。