変数って代入して初めて値が発生しているかと思いきや、宣言をしただけで値が入ってるんですよね。
今回は変数の型ごとの初期値を調べてみました。
変数の初期値一覧
早速だがこれが変数の型ごとの初期値一覧です。
| 型 | 初期値 |
|---|---|
| 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を入れたりすることもあったのですが、不要だということがわかりました。
ちょっとはコードが短くなって良いかも知れない。
以上ちょっと気になった事を調べてみた。