[VBA] ブール型変数 (Boolean)

ブール型変数 (Boolean)

 ブール型変数 (Boolean)True または False の 2 種類の値のみ入ります。True は「真」、False は「偽」の意味で、ある条件式が正しいかどうか(真偽)を判定するときなどに用います。ちなみに、こばとは正直者なので、その発言は全て True(真)なのです。え? 嘘ばかりつくな? まあとにかく講座を始めますよ。まずは簡単なマクロでブール型変数を試してみましょう。

'[VBA] Boolean による等式成立判定 [1]

Sub TrueOrFalse1()

 Dim tf As Boolean

 tf = (10 = 10)

 Debug.Print tf

End Sub

 等式 10 = 10 が成り立っているかを判定するマクロです。この式の "=" は「等しい」ことを表す記号で、値を代入しているのではありません。一方で変数 tf のあとの "=" は値を代入するものです。紛らわしさを避けるために式を ( ) で括ってありますけど、

tf = 10 = 10

と記述しても同じです。もちろん等式 10 = 10 は正しいので、このマクロを実行すると True が返ってきます。このマクロを少し書き換えて

'[VBA] Boolean による等式成立判定 [2]

Sub TrueOrFalse2()

 Dim tf As Boolean

 tf = (5 > 10)

 Debug.Print tf

End Sub

としてみると、5 > 10 は正しくない不等式なので False と表示されます。
 

Boolean の正体?

 実は True の正体は「-1」、 False の正体は「0」という数値 (16ビットの整数) なのです。ですから、たとえば

'[VBA] Boolean を数値で表示 [1]

Sub IntTrue()

 Dim i As Integer

 i = (10 = 10)

 Debug.Print i

End Sub

のように書いて、True を整数型変数 (Integer) に入れてみると「-1」の値が表示されます。また、

'[VBA] Boolean を数値で表示 [2]

Sub IntTrue()

 Dim i As Integer

 i = (5 > 10)

 Debug.Print i

End Sub

のように書いて、False を整数型変数に入れると「0」が返ってきます。Boolean 型の True や False を数値として用いると色々な場面で応用することができます。たとえば下の図にあるような 2 列に並んだ数値の中から、となり合うセルの数値が互いに等しい組をかぞえてみます。

Excel VBA Boolean 隣り合うセルが等しい

'[VBA] となり合うセルの数値が等しい組をかぞえます

Sub EqualNumber()

 Dim tf As Boolean
 Dim i As Integer
 Dim s As Integer

 For i = 2 To 11
  tf = Cells(i, 2) = Cells(i, 3)
  s = s + tf
 Next i

 Debug.Print Abs(s)

End Sub

 変数 s に True の値「-1」を加算させています。Abs関数で絶対値をとれば求める組の個数がカウントされます。上のワークシートの通りに数値を入力した場合、このマクロを実行すると「3」という数値が返ってくるはずです。

 ≫ VBA 辞典メニューに戻って他の記事も読んでくれると嬉しいな~♪

関連コンテンツ

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください