🍇

Excel VBA_条件分岐(If文)の構文について

2022/12/08に公開約2,000字

この記事ではVBAの条件分岐についてまとめます。代表的な4つの構文とその具体例を整理していきます。

  • If〜Thenステートメント
  • If〜then~Elseステートメント
  • If〜then~ElseIfステートメント
  • Select~Caseステートメント

If〜Thenステートメント

まずは最も基本的なIf〜Thenステートメントの構文からです。1つの条件のみを判定できます。

構文
If 条件 Then
  条件に当てはまった場合の処理
End If
具体例
Dim num
num = 15
If num > 10 Then
    Range("A1") = "10より大きいです"
End If

If〜then~Elseステートメント

If〜then~Elseステートメントでは、条件に当てはまらなかった場合の判定ができます。Elseの後に「~それ以外」として条件を加えることができます。

構文
If 条件 Then
  条件に当てはまった場合の処理
  Else
   条件に当てはまらなかった場合の処理
End If

下記の例ではnum > 10の条件に当てはまらなかった場合の処理をElse以下で行っています。

具体例
Dim num
num = 15
If num > 10 Then
  Range("A1") = "10より大きいです"
 Else
  Range("A1") = "10以下です"
End If

If〜then~ElseIfステートメント

Else以下に追加でIf~Thenステートメントを加えることも可能です。Elseで終わるべきところへ更に条件2としてIf文による判定を行っています。

構文
If 条件1 Then
  条件1が成立した場合の処理
ElseIf 条件2 Then
  条件2が成立した場合の処理
Else  
  条件12が成立しなかった場合の処理
End If
具体例
Dim num
num = 15
If num <= 10 Then
    Range("A1") = "10以下です"
ElseIf num >= 20 Then
    Range("A1") = "20以上です"
Else
    Range("A1") = "10~20の間です"
End If

Select~Caseステートメント

If〜Then系の判定によるデメリットは処理が長くなってしまう点です。Select~Caseを使えば1つの条件を元に、それに当てはまるか?当てはまらないか?という視点で判定ができます。Select Case以下で書かれた条件が基準となって、条件に当てはまるかどうか判定されていきます。

構文
Select Case 条件
 Case 条件A
	処理A
 Case 条件B
	処理B
 Case 条件C
	処理C
End Select

こちらの方がIf文を使った時よりもスッキリと判定ができます。

数値を条件に指定
Select Case 10
  Case 10
    Range("A1") = "10と同じです"
  Case 20
    Range("A1") = "20と同じです"
  Case 30
    Range("A1") = "30と同じです"
  Case Else
    Range("A1") = "どれでもありません"
End Select

他にもSelece~Caseでは連続した値を条件にもできます。

連続した値を条件に
Select Case 15
  Case 10 To 20
    Range("A1") = "10~20です"
  Case 20 To 30
    Range("A1") = "20~30です"
  Case Is > 30
    Range("A1") = "30より大きいです"
  Case Else
    Range("A1") = "どれでもありません"
End Select

また複数の値を条件に指定もできます。

複数の値を条件に指定
Select Case 10
  Case 10, 20
    Range("A1") = "10か20です"
  Case 20, 30
    Range("A1") = "20か30です"
  Case Else
    Range("A1") = "どれでもありません"
End Select

Discussion

ログインするとコメントできます