01-VBA

制御構文|Excel VBA (Part.1) 概要編

お知らせ

こちらの記事は、電子書籍「難しく考えないExcel VBA基礎学習編」として出版されました。記事は途中までが試し読みの対象となります。

howahowablogのVBA記事が電子書籍にて販売となりました。

Excel VBA 制御構文

制御構文ってなんだ?

プログラムでは、「記述された内容を順番に処理させたい場合」や、「ある一定の条件下でのみ処理させたい場合」、「同じ命令を繰り返して処理させたい場合」、「ある処理から別の処理を呼びだしたい場合」などがあります。

通常プログラムは書かれた内容を上から順番にひとつずつ処理する仕組みとなっているので、それ以外の動きを持たせたい場合には、その動きを行わせる専用の記述が必要になります。

このうち「記述された内容を順番に処理させるパターン」、「ある一定の条件下でのみ処理させるパターン」、「同じ命令を繰り返し処理させるパターン」は基本制御構造と呼ばれ、それぞれ「順接(順次)構造」「選択構造」「反復構造」と呼ばれます。

そして、この制御構造を実現するためのプログラムの文が「制御構文」と呼ばれます。

構造化プログラミング

構造化プログラミングはプログラムを3つの基本構造(順接、選択、反復)で組み合わせて記述する方法です。このうち、「順接」は上から順番に命令が行われるものです。その他に条件の成立・不成立によって処理を選択する「選択(条件分岐)」と条件の成立・不成立によって処理を反復する「反復(繰り返し)」があります。

選択構造と反復構造についてVBAでは「If文」「Select文」「For文」「Loop文」を利用して実現することができます。

Excel VBA 制御構文の種類

ここでは、プログラムを模写(書き写すこと)して、実行し動きを確認するだけの学習を行います。細かな文法などは後の記事で扱います。

条件分岐(選択構造)

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

実行結果

プログラムを記述したら以下の手順でプログラムを動かします。

  1. プロシージャ内にカーソルを置きます。(プロシージャ内をクリック)
  2. ツールバー内の「」をクリックします。

インプットボックスが表示されます。色々な値を入力して動きを見ることが出来ます。

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

実行結果

プログラムを記述したら以下の手順でプログラムを動かします。

  1. プロシージャ内にカーソルを置きます。(プロシージャ内をクリック)
  2. ツールバー内の「」をクリックします。

インプットボックスが表示されます。色々な値を入力して動きを見ることが出来ます。


繰り返し(反復)

制御構文のう繰り返し文に関しては大きく分けて【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

実行結果

プログラムを記述したら以下の手順でプログラムを動かします。

  1. プロシージャ内にカーソルを置きます。(プロシージャ内をクリック)
  2. ツールバー内の「」をクリックします。

MsgBoxがカウント回数分表示されます。

Do – Loop ステートメント(Do While – Loopステートメント)

構文Do While 条件
処理
Loop

例文

Sub conditionalBranchWhile()

    Dim i As Integer
    i = 1
    
    Do While i <= 5
        MsgBox i & "回目の表示です。"
        i = i + 1
    Loop

End Sub

実行結果

プログラムを記述したら以下の手順でプログラムを動かします。

  1. プロシージャ内にカーソルを置きます。(プロシージャ内をクリック)
  2. ツールバー内の「」をクリックします。

Forステートメント同様にMsgBoxがカウント回数分表示されます。

この記事の試し読みはここまでとなります。

今回は以上となります。

howahowablogのVBA記事が電子書籍にて販売となりました。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

演算子|Excel VBA (Part.4)【比較演算子】条件の発展的な利用(後編)

2022年10月28日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site