VBAで空、空欄、存在しないや変数の初期値などの時に登場するものに、Empty、Nothigがあります。
違いがわかりにくいこともあり、これらについて備忘録として残しておきたいと思います。
目次
1.Empty
セルが空白、空欄の時やVariant型の変数の初期値として使われるのがEmptyです。
VBAで型指定せずに変数を使用した場合にはVariant型となるためこの場合の初期値はEmptyとなります。
Emptyかどうかを判断する場合には、以下のようにIsEmpty()関数を使用するか""と比較するかします。
簡単な例としては、
str = Cells(3,3) If (str = "") Then
MsgBox ("セルは空です") Else
MsgBox ("セルは入力済です")" End If
または、
str = Cells(1,1) If (IsEmpty(str) = True) Then Debug.Print "セルは空です" Else Debug.Print "セルは入力済です" End If
となります。
2.Nothing
NothingはObject型の変数の初期値です。
Object型の変数には種々のクラスのインスタンスがはいります。
クラスは変数などの型を定義したものを差し、インスタンスはその実体として値を入れたものです。
使用例としてはたとえば以下のようになります。
この例ではExcelを起動後Quitで終了し、最後にObject型変数にNothingを入れることで参照を解放しています。
Dim xlObj As Object Set xlObj = CreateObject("excel.application") xlObj.Visible = True xlObj.Quit Set xlObj = Nothing
NothingはObject型変数の初期値や参照の解放に用いられます。
また、Object型変数がNothingかどうかを判定する場合には、以下のように
「obj Is Nothing」
などと記載します。
If (obj Is Nothing) Then 処理記載 End If
以上が、空や空欄、存在がない場合などに使われるEmptyとNothingの簡単な説明になります。