Excel VBA スタンダードの暗記項目まとめ【第三章 ステートメント】
この記事では、VBAエキスパートの「Excel VBA スタンダード」の受験用に、暗記すべき項目について、公式の試験範囲の第三章をまとめました。
とくに暗記すべきところは「太文字」や「表」でまとめてあります。とくにステートメントやメソッド、プロパティについては、記述できるレベルまで仕上げておくことをおすすめします。
この記事では暗記を優先するため、解説をできるだけ省いています。学習未経験の人は、Excel VBA スタンダードの公式テキストなどで試験範囲の内容に目を通してからの利用を推奨します。
また、公式テキストに掲載されていないなど、試験に出る可能性の低い内容の解説は、基本的に割愛しています。
Excel VBA スタンダード 第三章 ステートメント
3.1 Select Caseステートメント
Select Caseステートメントは、複数の条件を同時に判定すること目的で利用できます。
条件の指定は「Case 条件」とします。詳細な条件の指定は以下のとおりです。
- 「,」区切り:複数条件を「,」区切りで指定
- 「X To Y」:X~Yの値を条件に指定
- 「Is < 数値」:数値の大小などを条件に指定。「>」や「>=」なども可能。
- 「else」:全ての条件に当てはまらなかった場合の処理
以下の例では、Aの値が
- 「1,3,5」ならマントヒヒ
- 「10~100」ならバブーン
- 「101以上」ならチンパンジー(50~100まではバブーンになります)
- 「その他の値」ならマンドリル
と表示されます。「A=120」になっているので、実行した時の表示は「チンパンジー」です。
Sub Macro1()
Dim A As Integer
A = 120
Select Case A
Case 1, 3, 5
MsgBox "マントヒヒ"
Case 10 To 100
MsgBox "バブーン"
Case Is > 50
MsgBox "チンパンジー"
Case Else
MsgBox "マンドリル"
End Select
End Sub
3.2 Do…Loopステートメント(5パターン)
パターンは主に以下の5パターンがあります。
前判定(処理の前に条件を判断)で、条件を満たしている間繰り返すパターン
Do While 条件
処理
Loop
前判定(処理の前に条件を判断)で、条件を満たすまで繰り返すパターン
Do Until 条件
処理
Loop
後判定(処理を実施後に条件判定)で、条件を満たしている間繰り返すパターン
Do
処理
Loop While 条件
後判定(処理を実施後に条件判定)で、条件を満たすまで繰り返すパターン
Do
処理
Loop Until 条件
無限ループになっているパターン(処理の内部でExitステートメントを使い抜ける。公式テキストでメモ扱いなので出題率は低いと思います)。
Do
処理
If 条件 Then Exit Do
Loop
3.3 For Each…Nextステートメント
グループから値を順に取り出し、処理を行う場合に「For Each…Next」が利用されます。
For Each 変数 In グループ名
処理
Next 変数
グループは「コレクション」「複数のセル(Rangeなど)」「配列」を指定できます。コレクションとは、同じ種類のオブジェクトをまとめたものです(Workbooksなど)。
また、配列を指定した場合、「変数」の部分にはVariant型の変数を指定します(Split関数同様に「配列を受け取る=Variant型」と覚えておくといいです)。
3.4 その他のステートメント
Exitステートメント
Exitステートメントを利用すると「Subプロシージャ」「Functionプロシージャ」「For … Next」「For Each … Next」「Do…Loop」を終了することができます。以下の例のように、Exitの後に終了する処理を指定して利用します。
- Exit Sub
- Exit Function
- Exit For
- Exit Do
Ifステートメント
Ifステートメントでは二値を判定します(簡単にいえば正しいか、誤っているかを判定)。実際には、以下のような形式で記述します。
If 条件 Then
処理
Else
処理
End If
また、条件に「Or」や「And」を利用することで、複数の条件指定ができます。例えば「条件1 Or 条件2」なら条件1か2のどちらかにあてはまれば処理が実行されます。一方「条件1 And 条件2」なら、両方にあてはまらないと処理は実行されません。
Excel VBA スタンダードの公式テキストでは「ElseIf」が登場しません。恐らく、条件分岐を複数行いたい場合「Select Case」の利用を前提にしているからだと思います。
Pythonは逆に「Select Case(Switch文)」文がないので、Pythonからプログラミングを始めた人には、このあたりの感覚は若干つかみにくいかもしれません。
Withステートメント
公式テキストでは個別に紹介されていませんが、テキストのいたるところに登場するので、念のため解説しておきます。
Withステートメントでは、同じオブジェクトに何度も処理をする際に、記述を省略することができます。下の例では「With_Statement」プロシージャはWithステートメントを利用した例、「Not_With_Statement」ではWithステートメントを利用せず、同じ処理を行っています。
注意点として、Withステートメントで省略したあとの記述で、先頭の「.」を忘れないこと。慣れていないと、この「.」をつけ忘れます。
Sub With_Statement()
With Worksheets("Sheet1").Cells(1, 1)
.Offset(0, 0).Value = "マント"
.Offset(1, 0).Value = "ヒヒ"
.Offset(2, 0).Value = "マントヒヒ"
.Offset(3, 0).Value = "哲学するマントヒヒ"
End With
End Sub
Sub Not_With_Statement()
Worksheets("Sheet1").Cells(1, 1).Offset(0, 1).Value = "マント"
Worksheets("Sheet1").Cells(1, 1).Offset(1, 1).Value = "ヒヒ"
Worksheets("Sheet1").Cells(1, 1).Offset(2, 1).Value = "マントヒヒ"
Worksheets("Sheet1").Cells(1, 1).Offset(3, 1).Value = "哲学するマントヒヒ"
End Sub
<<第二章 変数の活用へ | 第四章 ファイルの操作へ>>