VBA入門
条件分岐(ElseIf)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-08-23

第21回.条件分岐(ElseIf)


前回のIFステートメントでは、真か偽の二択でした。
今回は、もっと多くの分岐が必要な、Ifステートメントで多肢条件分岐の場合の書き方です。


ステートメントとしては、Ifステートメントです。


IfステートメントのElseIfの構文

If 条件式1 Then
  条件式1が真の処理
[ElseIf 条件式2 Then
  条件式2が真の処理]
[ElseIf 条件式3 Then
  条件式3が真の処理]
・・・
[Else
  全ての条件式が偽の処理]
End If

[ ]は省略可能です。

条件式1に合致した場合(True)は、「条件式1が真の処理」が処理されます。
条件式1に合致しない場合(False)は、条件式2が判定されます。
条件式2に合致した場合(True)は、「条件式2が真の処理」が処理されます。
条件式2に合致しない場合(False)は、条件式3が判定されます。
条件式3に合致した場合(True)は、「条件式3が真の処理」が処理されます。
以下ElseIfが続く限り・・・


ElseIfの説明

ElseIf 条件式 Then
  条件式が真の処理

この部分は繰り返し何回も書く事が出来ます。
例えば、

If 条件式1 Then
  条件式1が真の処理
ElseIf 条件式2 Then
  条件式2が真の処理
ElseIf 条件式3 Then
  条件式3が真の処理
Else
  全ての条件式が偽の処理
End If

このように書きます。
これを、ElseIfを使わずに書くと、


If 条件式1 Then
  条件式1が真の処理
Else
  If 条件式2 Then
    条件式2が真の処理
  Else
    If 条件式3 Then
      条件式3が真の処理
    Else
      全ての条件式が偽の処理
    End If
  End If
End If

この二つのVBAコードは同じになります。
多肢分岐の場合は、ElseIfを使う事で、はるかに見易くなります。

ただし、できればこのElseIfより、Select Caseを使うことを考えましょう。
次回の、Select Caseを使う方が、より読みやすいVBAコードになる場合が多いです。




同じテーマ「マクロVBA入門」の記事

第18回.最終行の取得(End,Rows.Count)

・エクセルVBAにおける最終行取得の必要性 ・.End(xlDown):Ctrl+↓ ・.End(xlUp):Ctrl+↑ ・Endプロパティの方向(↑↓←→)について ・セルの行数を取得するRowプロパティ ・Cells(Rows.Count, 1).End(xlUp).Rowを日本語に訳す ・EndプロパティがRangeオブジェクトを返す ・Endプロパティの問題点 ・最終行に関するサイト内のページ
第19回.総合練習問題1
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第20回.条件分岐(IF)
・Ifステートメントの構文 ・IFステートメントの条件式 ・Ifステートメントの使用例文 ・Ifステートメントのネスト(入れ子) ・サイト内のIfステートメント参考ページ ・最後に
第21回.条件分岐(ElseIf)
第22回.条件分岐(Select Case)
・Select Caseステートメントの構文 ・Select Case の例文 ・Select Case の応用
第23回.メッセージボックス(MsgBox関数)
・MsgBox関数の構文 ・名前付き引数 ・MsgBox関数のbuttonsの定数 ・MsgBox関数の戻り値の定数 ・MsgBox関数の例文 ・MsgBoxの使い道
第24回.インプットボックス(InputBox関数)
・InputBox関数の構文 ・名前付き引数 ・InputBox関数の例文
第25回.名前付き引数について
・仮引数と実引数 ・メソッドとは ・名前付き引数について ・名前付き引数の例文 ・名前付き引数の必要性
第26回.総合練習問題2
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第27回.ブック・シートの選択(Select,Activate)
・アクティブ ・ブックをアクティブにする ・シートの選択、シートのアクティブ ・複数シートの選択(作業グループ化) ・複数ブックを開いている時のシート選択 ・VBAでの色々なシート指定方法
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
・選択セルとアクティブセル ・セルの選択 ・セルをアクティブにする ・行の選択、列の選択 ・セル領域の選択 ・メソッドとはプロパティとは


新着記事NEW ・・・新着記事一覧を見る

抜けている数値を探せ|エクセル雑感(2022-07-01)
.Net FrameworkのSystem.Collectionsを利用|VBA技術解説(2022-06-29)
迷路ネコが影分身の術を体得したら…|エクセル雑感(2022-06-27)
迷路にネコが挑戦したら、どうなるかな…|エクセル雑感(2022-06-26)
サロゲートペアに対応した自作関数(Len,Left,Mid,Right)|エクセル雑感(2022-06-24)
「マクロの登録」で登録できないプロシージャーは?|エクセル雑感(2022-06-23)
オブジェクトのByRef、ByVal、Variant|エクセル雑感(2022-06-22)
コメントから特定形式の年月を取り出す|エクセル雑感(2022-06-19)
4,9を使わない連番作成|エクセル雑感(2022-06-17)
連番を折り返して出力|エクセル雑感(2022-06-16)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.マクロって何?VBAって何?|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ