Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » Excel VBAでRange型変数がNothingかを判定する

Excel VBAでRange型変数がNothingかを判定する

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2511(ビルド19426.20186クイック実行)

「excel vba range nothing 判定」
という検索キーワードでアクセスがありました。


Excel VBAで、Range型のオブジェクト変数がNothingかどうかを判定するには、どのようなコードにすればいいのかを調べていらしたのでしょうか。

[スポンサードリンク]

Range型変数がNothingかを判定するサンプルマクロ

まずは、以下のExcelマクロを実行してみてください。

Sub Range型変数がNothingかを判定する()
 
 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

End Sub

実行すると、
「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プロシージャを作成して、

Sub Range型変数を確認する()
 
 Dim rng As Range
 Set rng = ActiveCell
 Set rng = Nothing

End Sub

ローカルウィンドウで変数rngの値が、変数宣言の直後と「Set rng = Nothing」の直後はNothingであることを確認してみてください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » Excel VBAでRange型変数がNothingかを判定する

「条件分岐」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.