「教えて!ピックアップ」リリース!

VBAで下記のように配列に設定したNULL値を判定しようとしました。

Dim str()
ReDim Preserve str(2)
str(0) = "aaa"
str(1) = Null
str(2) = "bbb"

以下(1)、(2)の分岐処理ではNullと判定されませんでした。
どのように判定すれば良いでしょうか?
(1)
If str(1) = Null Then
Debug.Print "Null値です"
End If
(2)
If str(1) = "" Then
Debug.Print "Null値です"
End If

A 回答 (3件)

解決方法としては、他の方がお書きの通り、isNull() を使うわけですが、


if str(1) = Null Then などという文を書くと言うことは、Nullに対して誤解があるからだと思います。Nullは値ではなく、「有効な値が入っていない」「無効な値が入っている」ということを示すキーワードです。Null に対してどんな演算をしても結果は無効なので、Null になります。
Null = Null の結果=> Null
Null = 何かの値 の結果=> Null
Null <> 何かの値 の結果=> Null

あなたが本当にstr(1)に代入したかったのは、NullなのかEmptyなのか""なのか、もう一度考え直してはどうでしょう。この3つは全く別の物です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

DBからレコードを取得した際にカラムがNullであるかどうかを
判定する際に困っていました。

ご指摘頂いたのNull、Empty、""の違いをを勉強し直そうと思います。

お礼日時:2010/02/23 08:18

if isnull(str(1)) then Debug.Print "Null値です"



if typename(str(1))="Null" then Debug.Print "Null値です"

こんな所でしょうか
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Null判定にもいろいろあるのですね。

お礼日時:2010/02/23 08:13

If IsNull(str(1)) Then


Debug.Print "Null値です"
End If
    • good
    • 3
この回答へのお礼

ご回答ありがとうございます。

私が所持している参考書には
IsArrayやIsNumericはあるのですがIsNullはありませんでした…。

お礼日時:2010/02/23 08:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング