VBAではTrueは-1でFalseは0に変換される

Excel VBA でブール型の値として True と False が用意されていますが、 True と False を整数に変換するとそれぞれ -1 と 0 に変換されます。 Excel のワークシート上では TRUR は 1 、 FALSE は 0 に変換されるので注意が必要です。ここでは実際に変換を行って結果を確認してみます。

(Last modified: )

ブール型の値を整数に変換する

Excel VBA ではブール型の値として「True」と「False」が用意されています。数値が必要とされる場所で「True」や「False」を記述すると自動的に変換されて使用されますが、「False」は 0 、「True」は 0 以外の値として使用されることが多いです。

では実際にどのような値に変換されるのかを確認してみます。変換を行うのは CInt 関数を使用します。次のような簡単なプログラムを作成しました。

Option Explicit

Sub テスト()
    Debug.Print "True = " & CInt(True)
    Debug.Print "False = " & CInt(False)
End Sub

True および「False」の値を整数に変換してイミディエイトウィンドウに出力します。では実際にプログラムを実行してみます。

ブール型の値を整数に変換する(1)

イミディエイトウィンドウには次のように表示されました。

ブール型の値を整数に変換する(2)

このように Excel VBA では「True」は -1 に「False」は 0 に変換されます。

注意点として Excel のワークシートで TRUE および FALSE を数値に変換するとそれぞれ 1 と 0 に変換される点です。

ブール型の値を整数に変換する(3)

VBA とワークシートでは変換される値が異なるので注意してください。(Excel のワークシートで論理値を数値に変換するには N 関数を使用します。詳しい使い方は「TRUEを1にFALSEを0に変換する(N)」を参照されてください)。

-- --

Excel VBA で True や False がどのように数値に変換されるのかについて解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。