IF文 VBAで自動化 VBAテクニック集 VBA一覧 文法・構文

【VBA】If文でAND条件を使用する方法

Excel VBAでIf文を使って条件分岐を行います。その中で、複数の条件を要求する場合にはAnd演算子を使います。この演算子を使うことで、すべての条件が満たされた場合にのみ特定の処理を実行するように設定できます。

If文とAnd条件の基本的な書き方や活用方法に関して紹介します。

If文とAND条件の基本構文

VBA のIf文とAnd条件を使用した基本的な構文は以下の通りです。

If 条件1 And 条件2 Then

' 条件がすべて満たされた場合の処理

Else

' 条件が満たされなかった場合の処理

End If

  • 条件1、条件2:2つ以上の条件を指定します。
  • And: 複数の条件を結合するために使用します。
  • 条件1と条件2が両方ともTrueの場合にのみ、Then後の処理が実行されます。

両方の条件が真の場合のみ処理を実行する

2つの数値が特定の条件を満たすかどうかをチェックする簡単な例です。

 

Sub AndConditionExample()

Dim a As Integer
Dim b As Integer

a = 10
b = 20

If a > 5 And b < 30 Then

MsgBox "条件を満たしました!"

Else

MsgBox "条件を満たしませんでした。"

End If

End Sub

解説

  • a > 5: 変数aが 5 より大きいかどうかをチェックします。
  • b < 30: 変数bが 30 未満であるかどうかをチェックします。
  • 両方の条件が満たされた場合には、メッセージボックスで「条件を満たしました!」と表示されます。

ElseIfを使用して複数の条件分岐を実装する

ElseIfを使用することで、さらに複雑な条件分岐を行うことができます。

【VBA】IF文のelseifを用いた複数条件

Sub ElseIfExample()

Dim score As Integer

score = 75

If score >= 90 And score <= 100 Then

MsgBox "優秀!"

ElseIf score >= 60 And score < 90 Then

MsgBox "合格です。"

Else

MsgBox "不合格です。"

End If

End Sub

解説

  • score >= 90 And score <= 100:90点以上100点以下の場合に「優秀!」と表示します。
  • score >= 60 And score < 90:60点以上90点未満の場合に「合格です。」と表示します。
  • それ以外の場合は「不合格です。」と表示します。

複数の条件でセルの背景色を変更する

指定した範囲内で値が特定の範囲内に収まっているセルの背景色を変更します。

【VBA】フォーマット設定:数値形式・フォント・背景色の一括/条件設定

Sub HighlightCells()

Dim rng As Range
Dim cell As Range

Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1:A10")

For Each cell In rng

If cell.Value >= 10 And cell.Value <= 20 Then

cell.Interior.Color = RGB(255, 255, 0) ' 黄色に変更

End If

Next cell

End Sub

解説

  • cell.Value >= 10 And cell.Value <= 20: セルの値が10以上20以下の場合をチェックします。
  • 条件を満たしたセルの背景色を黄色に変更します。

AND条件でデータをフィルタリングする

データの中から、特定の条件を満たす実行だけを抽出する例です。

Sub FilterData()

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Dim i As Long
For i = 2 To lastRow

If ws.Cells(i, 2).Value >= 50 And ws.Cells(i, 3).Value <= 100 Then

ws.Rows(i).Hidden = False ' 条件を満たす行を表示

Else

ws.Rows(i).Hidden = True ' 条件を満たさない行を非表示

End If

Next i

End Sub

解説

  • 列Bの値が50以上、列Cの値が100以下の場合のみ、その行を表示します。
  • 条件を満たさない実行は非表示となります。

よくある疑問点

ANDとORの違いは?

  • And:すべての条件が満たされる場合にTrueを返します。
  • Or:いずれかの条件が満たされれば True を返します。

条件が増えるとどうなる?

条件が複雑になる場合は、可読性を高めるために条件式を変数に入れるか、変更を活用すると良いです。

【VBA】If文の条件を変数に入れて可読性を向上させる方法

Dim condition1 As Boolean
Dim condition2 As Boolean

condition1 = (a > 5)
condition2 = (b < 30)

If condition1 And condition2 Then

' 処理

End If

まとめ

If文And条件やデータ処理で特定の条件に基づく処理は実用的な技術です。条件が適切に設定されている事を確認し、必要に応じてコメントを追加して可読性を考慮しましょう。

    -IF文, VBAで自動化, VBAテクニック集, VBA一覧, 文法・構文