初期値についての備忘録

先日、危うく失敗しかけたので、備忘録としてまとめておく。

Date型の変数:myDateを宣言し、直ぐにその値をA1に書き出してみる。

Sub てすと()
    Dim myDate As Date
        Range("A1") = myDate
End Sub

すると、次の結果が得られる。
f:id:Infoment:20201217224032p:plain

宣言した時点では空っぽなはずだが、しかし、それなりに何か入っているわけで(初期値)。Date型の場合は「0」が入っているようだ。
これをyyyy/mm/dd_hh:mm:ss形式で表示すると、このようになる。
f:id:Infoment:20201217224414p:plain

ではマクロで、Date型の変数に何か格納されたかどうかを調べるには、どうすれば良いか。まず初期値が0なので、値が0かどうかを調べてみる。
f:id:Infoment:20201217224624p:plain
一応、空っぽと判定された。

では、0を入れたうえで判定するとどうなるか。
f:id:Infoment:20201217224804p:plain
0を格納したうえで0かどうか訊いているのだから、0と答えが返るのは当然か。
ただこの場合、最初から空だったのか、空と同じ値をセットしたかの見分けが
つかないかも。

次に、これではどうか。
f:id:Infoment:20201217225035p:plain
この場合も、空の判定となった。
emptyと0は、同じ扱いをして良いということか。
f:id:Infoment:20201217225258p:plain

最後に、IsEmpty関数で評価すると、このようになった。どうして?
f:id:Infoment:20201217225434p:plain

調べてみると、IsEmpty関数は、Variant型変数に対してのみ有効なようだ。
www.officetanaka.net

実は先日、日付がセットされたか否かを判定するためにIsEmpty関数を用いて、
危うく失敗するところだったわけで。

中途半端な知識、やばし。

参考まで。