VBA ブール型変数(Dimで宣言)
In this Article
ブール変数型
VBAのブール(論理値)データ型は、True(真)またはFalse(偽)の値を格納するために使用されます。 True は 1、False は 0 で表すこともできます。 ブール型変数を宣言するには、Dimステートメント(Dimensionの略)を使用します。
Dim blnA as Boolean
そして、変数に値を代入するには、イコール記号を使うだけです。
blnA = True
これをプロシージャに書くと、次のようになります。
Sub blnExample()
'ブール型変数を宣言する
Dim blnA as Boolean
'変数に値を入れる - 通常、コードは if または case が使われる
If Range("A1") > 0 then
blnA = True
Else
blnA = False
End If
'メッセージボックスに結果を表示する
MsgBox "セルが0より大きい値を持っているかのテスト結果:" & blnA
End Sub
上記のコードを実行すると、以下のメッセージボックスが表示されます。
モジュールレベルまたはグローバルレベルでのブール型変数の宣言
前の例では、プロシージャの中でブール型変数を宣言しました。プロシージャで宣言された変数は、そのプロシージャ内でのみ使用することができます。
代わりに、モジュールレベルまたはグローバルレベルでブール型変数を宣言することができます。
モジュールレベル
モジュールレベルの変数は、コードモジュールの先頭でDimステートメントを使用して宣言します。
これらの変数は、そのコードモジュール内の任意のプロシージャで使用することができます。
グローバルレベル
コードモジュールの先頭で グローバルレベルの変数を宣言することもできます。ただし、Dimステートメントの代わりにPublicステートメントを使用して、ブール型変数が VBA プロジェクト全体で使用可能であることを宣言します。
Public blnA as Boolean
モジュールレベルでブール型変数を宣言し、それを別のモジュールで使用しようとすると、エラーが発生します。
しかし、Public キーワードを使用してブール型変数を宣言していれば、エラーは発生せず、プロシージャは完全に実行されます。
ブール型変数の使用
ブール型変数は、論理比較で使用します。 これらは、上記の例のように、条件が 真か偽かをテストするIf 文でよく使われます。また、論理テストを適用するコード行で、ある値が他の値より大きいかどうかを確認するためにも使用されます。
Sub blnExample()
'ブール型変数を宣言する
Dim blnA As Boolean
'ある数字が次の数字より大きいかどうかをテストする
blnA = 45 > 68
'メッセージボックスに結果を表示する
MsgBox blnA
End Sub
上のコードを実行すると、次のようなメッセージボックスが表示されます。
当然、45は68より大きくありません。
論理演算子の使用
ブール型変数は論理比較で使われ、論理演算子のANDとORを使って、複数の条件が真か偽かをテストすることができます。
AND演算子の使用
AND演算子を使用して、両方の条件が満たされているかどうかを確認できます。
Sub blnExample()
'ブール型変数を宣言する
Dim blnA As Boolean
'AND演算子を使用して、両方の条件が真であるかどうかをテストする
blnA = 10 > 13 And 15 > 12
'メッセージボックスに結果を表示する
MsgBox blnA
End Sub
または、Ifステートメントを使用して同じテストを実行することもできます。
Sub blnExample()
'ブール型変数を宣言する
Dim blnA As Boolean
'AND演算子を使用して、両方の条件が真であるかどうかをテストする
If 10 > 13 And 15 > 12 Then
blnA = True
Else
blnA = False
End If
'メッセージボックスに結果を表示する
MsgBox blnA
End Sub
上の2つの例では、10は13より大きくないので、両方ともFALSEを返します – 論理値としてTrueを返すためには、両方の条件が真でなければなりません。
OR 演算子の使用
OR 演算子を使用して、条件の 1 つが満たされているかどうかを確認することができます。
Sub blnExample()
'ブール型変数を宣言する
Dim blnA As Boolean
'OR演算子を使用して、少なくとも一つの条件が真であるかどうかをテストする
blnA = 10 > 13 Or 15 > 12
'メッセージボックスに結果を表示する
MsgBox blnA
End Sub
または、Ifステートメントを使用して同じテストを実行することもできます。
Sub blnExample()
'ブール型変数を宣言する
Dim blnA As Boolean
'OR演算子を使用して、少なくとも一つの条件が真であるかどうかをテストする
If 10 > 13 Or 15 > 12 Then
blnA = True
Else
blnA = False
End If
'メッセージボックスに結果を表示する
MsgBox blnA
End Sub
これらの例は、10は13より大きくないが、15は12より大きいため、TRUEを返します。 If 文を使うと、さらに多くの 論理演算子を使うことができます。
NOT演算子の使用
NOT演算子も、ブール型変数と一緒に使うことができます。 NOT演算子は、条件の値を否定します。つまり、ある条件が真であれば、NOT演算子はFalseを返します。
Sub FindDifferences()
'範囲変数を宣言する
Dim rng1 As Range
Dim rng2 As Range
'Sheet1をアクティブにする
Worksheets("Sheet1").Activate
'Rangeを設定する
Set rng1 = Range("A3")
Set rng2 = Range("B3")
'NOT演算子で値が等しいかどうかを確認する
If Not rng1.Value = rng2.Value Then
MsgBox "2つの値が等しくない"
Else
MsgBox "2つの値は等しい"
End If
End Sub
論理演算子XORの使用
XOR論理演算子は、2 つ以上の条件を比較するために使用され、いずれかの条件のみが真である場合にTRUEを返します。 2つの条件の場合、いずれもが真である、またはいずれも偽である場合、FALSEを返します。
Sub blnExample()
'整数を宣言する
Dim intA As Integer
Dim intB As Integer
'ブール型変数を宣言する
Dim blnResult As Boolean
'変数に値を入れる
intA = 5
intB = 10
'どちらかか一方のみが真かどうかを確認する
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
MsgBox blnResult
End Sub
上記の例では、条件のうち1つのみが真であるため、メッセージボックスはTRUEを返します。
Sub blnExample()
'整数を宣言する
Dim intA As Integer
Dim intB As Integer
'ブール型変数を宣言する
Dim blnResult As Boolean
'変数に値を入れる
intA = 5
intB = 5
'どちらかか一方のみが真かどうかを確認する
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
MsgBox blnResult
End Sub
しかし、上記の例では、両方の条件が真であるため、メッセージボックスはFALSEを
返します。
Sub blnExample()
'整数を宣言する
Dim intA As Integer
Dim intB As Integer
'ブール型変数を宣言する
Dim blnResult As Boolean
'変数に値を入れる
intA = 6
intB = 8
'どちらかか一方のみが真かどうかを確認する
If intA = 5 Xor intB = 5 Then
blnResult = True
Else
blnResult = False
End If
MsgBox blnResult
End Sub
となり、どちらの条件も偽なので、メッセージボックスもFALSEを返します。