「excel vba range nothing 判定」
という検索キーワードでアクセスがありました。
Excel VBAで、Range型のオブジェクト変数がNothingかどうかを判定するには、どのようなコードにすればいいのかを調べていらしたのでしょうか。
Range型変数がNothingかを判定するサンプルマクロ
まずは、以下のExcelマクロを実行してみてください。
Dim rng As Range
If rng Is Nothing Then
MsgBox "Nothingです。"
Else
MsgBox "Nothingではありません。"
End If
Set rng = ActiveCell
If rng Is Nothing Then
MsgBox "Nothingです。"
Else
MsgBox "Nothingではありません。"
End If
Set rng = Nothing
If rng Is Nothing Then
MsgBox "Nothingです。"
Else
MsgBox "Nothingではありません。"
End If
実行すると、
「Nothingです。」
「Nothingではありません。」
「Nothingです。」
と、3回メッセージボックスが表示されます。
サンプルマクロで行っている処理
1回目の「Nothingです。」は、以下の部分で表示されます。
Dim rng As Range If rng Is Nothing Then MsgBox "Nothingです。" Else MsgBox "Nothingではありません。" End If
つまりRange型の変数は、宣言した状態だとNothingだということです。
次の、「Nothingではありません。」は、以下の部分で表示されます。
Set rng = ActiveCell If rng Is Nothing Then MsgBox "Nothingです。" Else MsgBox "Nothingではありません。" End If
グローバルメンバーのActiveCellプロパティの戻り値である、アクティブなセルを表すRangeオブジェクトが変数rngに代入されたので、Nothingではなくなったということです。
最後の「Nothingです。」は、以下の部分で表示されます。
Set rng = Nothing If rng Is Nothing Then MsgBox "Nothingです。" Else MsgBox "Nothingではありません。" End If
変数rngにNothingを代入した直後なので、変数rngはNothingになったということです。
ローカルウィンドウで確認しましょう
「Word VBAでRange型変数がNothingかを判定する」で、Word VBAのRange型オブジェクトを、ローカルウィンドウで確認することをおすすめしています。
Excel VBAのRangeについても、以下のようなSubプロシージャを作成して、
Dim rng As Range
Set rng = ActiveCell
Set rng = Nothing
End Sub
ローカルウィンドウで変数rngの値が、変数宣言の直後と「Set rng = Nothing」の直後はNothingであることを確認してみてください。
- Older:Word VBAで取り消し線を検索する
Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » Excel VBAでRange型変数がNothingかを判定する
『インストラクターのネタ帳』では、2003年10月からMicrosoft Officeの使い方などを紹介し続けています。










