【VBA】セルが選択されているときだけアドレスを取得する方法

Excel VBAでマクロを実行する際、ユーザーがセルを選択していない状態で実行されると、エラーや意図しない動作が発生する可能性があります。

本記事では、「セルが選択されているかどうか」を判定し、選択されている場合にのみそのアドレスを取得する方法について、実用的なコードとともに丁寧に解説いたします。


セルが選択されているかどうかを確認するには?

VBAでは、現在選択されているオブジェクトがセル範囲(Range)であるかどうかを調べるために、TypeName(Selection) を使用します。

以下のコードをご覧ください。

If TypeName(Selection) = "Range" Then
    MsgBox "選択セル範囲: " & Selection.Address
Else
    MsgBox "セルが選択されてません。"
End If

コードの説明

  • TypeName(Selection)
     → 現在の選択が何のオブジェクトであるかを文字列で返します。たとえば、セルを選択していれば "Range"、図形なら "Picture" などが返ります。
  • Selection.Address
     → 選択されているセル範囲のアドレス(例:”$A$1:$B$3″)を取得します。
  • MsgBox
     → 条件に応じて、選択セルのアドレス、または「セルが選択されていません」というメッセージを表示します。

実行結果の例

セルを選択している場合:

選択セル範囲: $C$2:$D$4

図形やグラフなどを選択している場合:

セルが選択されてません。

応用例:空白セルの選択を除外するには?

選択セルが空白かどうかも判定したい場合は、以下のように条件を追加できます。

If TypeName(Selection) = "Range" Then
    If WorksheetFunction.CountA(Selection) > 0 Then
        MsgBox "選択されたセル範囲:" & Selection.Address
    Else
        MsgBox "選択範囲は空白です。"
    End If
Else
    MsgBox "セルが選択されていません。"
End If

目次

まとめ

処理内容使用するVBA関数・構文
選択オブジェクトの型判定TypeName(Selection)
セル範囲かどうかの判定"Range" かどうかで判断
アドレスの取得Selection.Address
空白セル判定(任意)WorksheetFunction.CountA()

セルが選択されているかどうかを安全に判定することで、ユーザーの操作ミスを回避し、安定したマクロ動作が実現できます。
特に業務で他の方がマクロを使用する場合、このようなチェックは非常に重要です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次