「VBAでand演算子を使いたい!」
「3つ以上の条件をandでつなぎたい!」
それ、ぜひできるようになりましょう。
この記事では、VBAのand演算子の使い方を詳しく解説しています。
VBAのand演算子とは

VBAのand演算子は、条件Aと条件Bのどちらも当てはまっているか確認するために使います。
実際に見ていただいた方がわかりやすいと思うので、以下のVBAをコピーして実行してみてください。
Sub and_result()
Dim A As Long, B As Long, C As Long
Dim result As Variant
A = 8
B = 5
C = 3
result = A > B And B > C
MsgBox result
End Sub
上記は「AはBよりも大きい」「BはCよりも大きい」という2つの条件を満たしているかどうかの結果をresultに渡します。
満たしていると「True」、満たしていないと「False」がメッセージボックスに表示されます。
8は5よりも大きく、5は3よりも大きいため、この場合は「True」になります。
それからこのコード、実はand演算子を使わなくても書けるんです。
Sub and_result2()
Dim A As Long, B As Long, C As Long
A = 8
B = 5
C = 3
If A > B Then
If B > C Then
MsgBox "True"
Else
MsgBox "False"
End If
Else
MsgBox "False"
End If
End Sub
If文の中にIf文を入れ、どちらも一致しているときのみメッセージボックスに「True」を返します。
しかし、1つ目のVBAと比べ、コードが長くわかりにくくなっていますよね。
and演算子を使うことで、見た人がわかりやすいコードを書くことができます。
条件分岐でand演算子を使う方法

上記ではand演算子とIf文を別々に紹介しましたが、どちらも一緒に使うこともできます。
前章で紹介したVBAをIf文とand演算子、どちらも使って書いてみましょう。
Sub and_result3()
Dim A As Long, B As Long, C As Long
A = 8
B = 5
C = 3
If A > B And B > C Then
MsgBox "True"
Else
MsgBox "False"
End If
End Sub
ここでは2つの条件をandでつなぎましたが、3つ以上の条件をつなぐこともできます。
3つ以上の条件をつなぐには
3つの条件をand演算子でつないでみましょう。
例として、3教科のテストで1つでも30点未満があれば補修という条件を作ってみましょう。
「1つでも30点未満があれば補修」ということは、3教科とも30点以上をとっていないといけません。
and演算子を使って「3教科とも30点以上」という条件式を作ります。
Sub and_result4()
Dim kokugo As Long, sansu As Long, eigo As Long
kokugo = 50
sansu = 70
eigo = 30
If kokugo >= 30 And sansu >= 30 And eigo >= 30 Then
MsgBox "合格"
Else
MsgBox "補修"
End If
End Sub
上記のVBAを実行するとメッセージボックスに合格と表示されます。
いずれかの教科を30点未満の点数にすると、補修と表示されるので試してみてください。
それからIf文が横に長く、見にくくなっていますよね。
こういうときは「_(アンダーバー)」を使って改行し、条件を見やすくしましょう。
Sub and_result5()
Dim kokugo As Long, sansu As Long, eigo As Long
kokugo = 50
sansu = 70
eigo = 20
If kokugo >= 30 And _
sansu >= 30 And _
eigo >= 30 Then
MsgBox "合格"
Else
MsgBox "補修"
End If
End Sub
改行したいところで、半角スペース+アンダーバーを入れると、条件式を続けながら改行することができます。
条件がもっとたくさんあると、縦にそろっていた方が見やすいですよね。
適切に改行を使いましょう。
まとめ

最後まで読んでいただきありがとうございます。
and演算子は条件分岐を使うときに欠かせないものです。
基本をしっかりとおさえ、複雑な条件でもわかりやすく書けるようになりましょう。
この記事が、VBAを勉強するみなさんのお役に立てると嬉しいです。


コメント