- ベストアンサー
VBAで配列のNULL判定
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
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
解決方法としては、他の方がお書きの通り、isNull() を使うわけですが、 if str(1) = Null Then などという文を書くと言うことは、Nullに対して誤解があるからだと思います。Nullは値ではなく、「有効な値が入っていない」「無効な値が入っている」ということを示すキーワードです。Null に対してどんな演算をしても結果は無効なので、Null になります。 Null = Null の結果=> Null Null = 何かの値 の結果=> Null Null <> 何かの値 の結果=> Null あなたが本当にstr(1)に代入したかったのは、NullなのかEmptyなのか""なのか、もう一度考え直してはどうでしょう。この3つは全く別の物です。
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
if isnull(str(1)) then Debug.Print "Null値です" if typename(str(1))="Null" then Debug.Print "Null値です" こんな所でしょうか
お礼
ご回答ありがとうございます。 Null判定にもいろいろあるのですね。
- nag0720
- ベストアンサー率58% (1093/1860)
If IsNull(str(1)) Then Debug.Print "Null値です" End If
お礼
ご回答ありがとうございます。 私が所持している参考書には IsArrayやIsNumericはあるのですがIsNullはありませんでした…。
お礼
ご回答ありがとうございます。 DBからレコードを取得した際にカラムがNullであるかどうかを 判定する際に困っていました。 ご指摘頂いたのNull、Empty、""の違いをを勉強し直そうと思います。