VBA ブール型変数(Dimで宣言)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 2月 5, 2023

ブール変数型

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

上記のコードを実行すると、以下のメッセージボックスが表示されます。

vba boolean msgbox example ブール型変数

モジュールレベルまたはグローバルレベルでのブール型変数の宣言

前の例では、プロシージャの中でブール型変数を宣言しました。プロシージャで宣言された変数は、そのプロシージャ内でのみ使用することができます。

vba boolean procedure declare ブール型変数

代わりに、モジュールレベルまたはグローバルレベルでブール型変数を宣言することができます。

モジュールレベル

モジュールレベルの変数は、コードモジュールの先頭でDimステートメントを使用して宣言します。

vba boolean module declare ブール型変数

これらの変数は、そのコードモジュール内の任意のプロシージャで使用することができます。

グローバルレベル

コードモジュールの先頭で グローバルレベルの変数を宣言することもできます。ただし、Dimステートメントの代わりにPublicステートメントを使用して、ブール型変数が VBA プロジェクト全体で使用可能であることを宣言します。

Public blnA as Boolean

vba boolean global declare ブール型変数

モジュールレベルでブール型変数を宣言し、それを別のモジュールで使用しようとすると、エラーが発生します。

vba boolean module declare error ブール型変数

しかし、Public キーワードを使用してブール型変数を宣言していれば、エラーは発生せず、プロシージャは完全に実行されます。

ブール型変数の使用

ブール型変数は、論理比較で使用します。 これらは、上記の例のように、条件が 真か偽かをテストするIf 文でよく使われます。また、論理テストを適用するコード行で、ある値が他の値より大きいかどうかを確認するためにも使用されます。

Sub blnExample()
'ブール型変数を宣言する
   Dim blnA As Boolean
'ある数字が次の数字より大きいかどうかをテストする
   blnA = 45 > 68
'メッセージボックスに結果を表示する
   MsgBox blnA
End Sub

上のコードを実行すると、次のようなメッセージボックスが表示されます。

vba boolean msgbox false ブール型変数

当然、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を返します。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples