VBA(Visual Basic for Applications)はExcelやWordなどのMicrosoft製品をカスタマイズする際に便利なプログラミング言語です。なかでも「If文」は、条件によって処理を分けるための基本的かつ重要な構文です。
この記事では、VBA初心者の方にもわかりやすく「If文」の基本的な書き方から応用的な使い方まで丁寧に解説していきます。これを読めば、あなたも「条件によって処理を切り替える」ことができるようになります。例文も豊富に紹介するので、ぜひ最後までご覧ください。
VBAにおけるIf文は、「もし〇〇なら、△△する」という条件分岐を実現するための構文です。人間の判断に似た動きをプログラムに取り入れることができます。
たとえば「セルの値が100以上なら文字の色を赤にする」といった処理は、If文で簡単に書けます。
最もシンプルなIf文の形は以下の通りです。
If 条件 Then
処理
End If
If Range("A1").Value >= 100 Then
MsgBox "100以上です"
End If
このコードは、A1セルの値が100以上だった場合にメッセージボックスを表示します。
条件が成り立たなかった場合の処理を書くには「Else」を使います。
If 条件 Then
条件がTrueのときの処理
Else
条件がFalseのときの処理
End If
If Range("A1").Value >= 100 Then
MsgBox "100以上です"
Else
MsgBox "100未満です"
End If
これで、条件に応じた2通りのメッセージを表示することができます。
条件が複数あるときは、「ElseIf」を使って複数のパターンに対応できます。
If 条件1 Then
条件1がTrueの処理
ElseIf 条件2 Then
条件2がTrueの処理
Else
どちらもFalseの処理
End If
Dim score As Integer
score = Range("A1").Value
If score >= 80 Then
MsgBox "優秀です"
ElseIf score >= 60 Then
MsgBox "合格です"
Else
MsgBox "再試験です"
End If
このように、ElseIfを使えば3段階以上の評価にも対応できます。
複数の条件を一度にチェックしたい場合は、AndやOrを使います。
And
:すべての条件がTrueである場合にTrueOr
:どれか一つでもTrueであればTrueIf Range("A1").Value >= 50 And Range("B1").Value >= 50 Then
MsgBox "両方とも50点以上です"
End If
If Range("A1").Value >= 50 Or Range("B1").Value >= 50 Then
MsgBox "どちらかは50点以上です"
End If
簡単な処理なら1行で書くこともできます。
If 条件 Then 処理
If Range("A1").Value = "" Then MsgBox "未入力です"
ただし、処理が複雑になる場合は可読性のためにも通常の形式で書いた方がよいです。
If文の中にさらにIf文を書くことを「ネスト」と言います。複雑な条件を組み合わせる際に使います。
If 条件1 Then
If 条件2 Then
処理
End If
End If
If Range("A1").Value >= 50 Then
If Range("B1").Value >= 50 Then
MsgBox "両方とも合格です"
End If
End If
読みづらくなるため、ネストは必要最小限にするのがコツです。
If文が多くなりすぎるとコードが見づらくなります。
このようなときはSelect Case
を使うことでスッキリ整理できます。
Select Case score
Case Is >= 80
MsgBox "優秀です"
Case Is >= 60
MsgBox "合格です"
Case Else
MsgBox "再試験です"
End Select
条件が数段階ある場合は、Select Caseのほうが見やすくおすすめです。
Then
を書き忘れないEnd If
を忘れずに書くIf (a > 10) And (b < 5) Then
VBAにおいて「If文」は非常に基本でありながら、さまざまな処理に応用できる強力な構文です。
本記事で紹介した内容を繰り返し練習することで、Excel操作の自動化や業務効率化が飛躍的にアップします。
ぜひ実際にVBAエディタでコードを書いて、条件分岐の力を体感してみてください。