2011-04-12 10 views
13

VBAでNull文字列、日付または整数を定義するにはどうすればよいですか?VBA内の変数のNULL値

データが不完全または無関係なときに特定のレコードの一部のフィールドにNull値を割り当てる必要がありますが、変数をString、DateまたはIntegerとして宣言すると、Nullを割り当てるときにエラーが発生します値。

バリアントを使用する唯一のソリューションはありますか?もしそうなら、VBAの他のすべてのデータ型のポイントは何ですか?

答えて

27
Dim x As Variant 
x = Null 

バリアントデータ型のみが値Nullを保持できます。

Aバリアントは、あらゆる種類のデータを含めることができる特殊なデータ型である[...] A変異体はまた、特別な値空、エラーが含まれている何もない、とヌルことができます。

他のすべてのデータ・タイプの「ポイント」は、正確に、彼らはは、データの任意の老いの種類を含めることはできませんということです。プログラマが誤って変数に意図しない種類のデータを割り当てるようにするために、これはコンパイル時に検出されますので、それは、より困難だ

  • :これは私が考えることができる2つの利点があります。これはバグを防ぎ、あなたとあなたのコードを維持する次の人のために物事をより明確にするのに役立ちます。
  • 狭いデータ型は記憶領域を節約します。 Variant(16バイト)に整数を入れると、Int(2バイト)に入れるよりもメモリが多くなります。これは、大きな配列を持っている場合に重要になります。

もちろん、このサイトの他のスレッドで議論されているように、バリアントも同じです。

+0

私は長い時間の間、VBAをプログラミングしてきましたが、Variantは、Empty、Nothing、Nullの3つの特殊な値をすべて取ることができます。 –

+0

多分私のSQLとPHPの経験ですが、Nullを「古いデータ」とはみなさず、ほとんどのSQLデータ型で有効な値です...それは変種です。 – HorusKol

+2

Office 2013では、「Variant」も「Void」、「Absent」、「Unspecified」、「None」、「Vacuum」の値を取ると聞いています。 –

関連する問題