変数って代入して初めて値が発生しているかと思いきや、宣言をしただけで値が入ってるんですよね。
今回は変数の型ごとの初期値を調べてみました。
変数の初期値一覧
早速だがこれが変数の型ごとの初期値一覧です。
型 | 初期値 |
---|---|
String | "" |
Boolean | False |
Byte | 0 |
Integer | 0 |
Long | 0 |
Single | 0 |
Double | 0 |
Currency | 0 |
Date | #0:00:00# |
Object | Nothing |
Range | Nothing |
Variant | Empty |
Emptyの不思議
Variant型の初期値「Empty」は不思議な性質を持っています。
Debug.Print Empty = 0 Debug.Print Empty = ""
いずれもTrueを返します。
文字列型・数値型いずれの初期値とも一致します。
ちなみに以下はエラーになります。
Debug.Print 0 = ""
次はEmptyがというか型に依存しているんでしょうが異なる結果になります。
Sub RngEmpty() Dim myVar As Variant Dim myRng As Range Set myVar = Range("A1") Set myRng = Range("B1") myVar = Empty myRng = Empty End Sub
Variant型の方は変数自体が初期化(empty)されますが、 Range型の方は取り込んだセルの値が初期化されます(B1が空白になる)。
一応Variant型の方も内部ではRange型になっているのに違う処理になります。
まとめ
特に数値型の変数になんとなく宣言後に0を入れたりすることもあったのですが、不要だということがわかりました。
ちょっとはコードが短くなって良いかも知れない。
以上ちょっと気になった事を調べてみた。