Excel VBA 制御構文
制御構文ってなんだ?
プログラムには、「ある一定の条件下でのみ命令を行わせたい場合」や「同じような命令を何度も繰り返して行わせたい場合」があります。通常プログラムは上から順番に書かれた内容をひとつずつ処理をする仕組みになっているので、それ以外の動きを持たせたい場合には、その動きを行わせる(制御する)専用の記述が必要になります。これらを制御構文と言います。
構造化プログラミング
構造化プログラミングはプログラムを3つの基本構造(順接、選択、反復)で組み合わせて記述する方法です。このうち、「順接」は上から順番に命令が行われるものです。、その他に条件の成立・不成立によって処理を選択する「選択(条件分岐)」と条件の成立・不成立によって処理を反復する「反復(繰り返し)」があります。
Excel VBA 制御構文の種類
制御構文が初めての方はまずは模写して動きを見てみるだけでもいいと思います。ゆっくり動きを確認することでプログラムの順番を段々と早く追えるようになります。
条件分岐(選択)
制御構文のうち条件分岐に関しては【If Thenステートメント】と【Select Caseステートメント】の二種類が存在します。
IF – Then ステートメント
構文 | If 条件 Then 条件に合ったときの処理 End If |
例文
Option Explicit
Sub conditionalBranchIf()
Dim age As Byte
On Error GoTo ErrorSample
age = InputBox("あなたの年齢を入力して下さい")
If age >= 20 Then
MsgBox age & "ですね。お酒の購入をしていただけます。"
Else
MsgBox age & "ですね。お酒の販売はできません。"
End If
Exit Sub
ErrorSample:
MsgBox "年齢を正しい形式で入力してください。"
End Sub
実行結果
プログラムを記述したら以下の手順でプログラムを動かします。
- プロシージャ内にカーソルを置きます。(動かしたいプロシージャ内をクリック)
- ツールバー内の「▶」をクリックします。
インプットボックスが表示されます。色々な値を入力して動きを見ることが出来ます。
Select – Case ステートメント
構文 | Select Case 条件 Case 条件1 処理1 Case 条件2 処理2 Case 条件3 処理3 Case Else 処理4 End Select |
例文
Sub conditionalBranchSelect()
Dim Department As String
Department = InputBox("部署を入力して下さい" & vbLf & _
vbLf & _
"経理部" & vbLf & _
"営業部" & vbLf & _
"企画部" & vbLf & _
"開発部")
Select Case Department
Case "経理部"
MsgBox "経理部ですね。本日のMTGはAM10:00からです。"
Case "営業部"
MsgBox "営業部ですね。本日のMTGはAM13:00からです。"
Case "企画部"
MsgBox "企画部ですね。本日のMTGはAM15:00からです。"
Case "開発部"
MsgBox "本日はMTGはありません。"
Case Else
MsgBox "正しい部署を入力してください。"
End Select
End Sub
実行結果
プログラムを記述したら以下の手順でプログラムを動かします。
- プロシージャ内にカーソルを置きます。(動かしたいプロシージャ内をクリック)
- ツールバー内の「▶」をクリックします。
インプットボックスが表示されます。色々な値を入力して動きを見ることが出来ます。
繰り返し(反復)
制御構文のう繰り返し文に関しては大きく分けて【For Nextステートメント】と【Do Loopステートメント】の二種類が存在します。
For – Next ステートメント
構文 | For カウンタ変数 = 初期値 To 終了値 (Step 値に対する幅) 処理 Next (カウンタ変数) |
例文
Sub conditionalBranchFor()
Dim i As Integer
For i = 1 To 5
MsgBox i & "回目の表示です。"
Next i
End Sub
実行結果
プログラムを記述したら以下の手順でプログラムを動かします。
- プロシージャ内にカーソルを置きます。(動かしたいプロシージャ内をクリック)
- ツールバー内の「▶」をクリックします。
MsgBoxがカウント回数分表示されます。
Do – Loop ステートメント(Whileステートメント)
構文 | Do While 条件 処理 Loop |
例文
Sub conditionalBranchWhile()
Dim i As Integer
i = 1
Do While i <= 5
MsgBox i & "回目の表示です。"
i = i + 1
Loop
End Sub
実行結果
プログラムを記述したら以下の手順でプログラムを動かします。
- プロシージャ内にカーソルを置きます。(動かしたいプロシージャ内をクリック)
- ツールバー内の「▶」をクリックします。
Forステートメント同様にMsgBoxがカウント回数分表示されます。
今回は以上となります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。