概要
GetSelectionCellは、現在のSelectionがRangeかどうかを確認し、セル範囲であれば返す汎用関数です。セル以外、たとえば図形やグラフを選択している場合はNothingを返します。
選択セルに追従する増減ボタンでは、増減ボタンを押したときに現在の対象セルを取得するために使っています。
使う場面
- 現在選択中のセルを安全に取得したい
- 図形選択中にセル前提の処理が落ちるのを防ぎたい
- 汎用マクロで
Selectionを扱う前に型チェックしたい - ボタン操作時に直前の選択セルを利用したい
使用例
セルが選択されているときだけ処理を続ける形で使います。
Dim targetCell As Range
Set targetCell = GetSelectionCell()
If targetCell Is Nothing Then Exit Sub
MsgBox targetCell(1).Address
コピー可能な実装コード
GetSelectionCell.bas
vba
コードを読み込み中...初心者向けコード解説
Selectionは、セルだけでなく図形、グラフ、オブジェクトなどを返すことがあります。そのままRangeとして扱うとエラーになるため、いったんObject型のDummyへ受けています。
TypeName(Dummy) = "Range"でセル範囲かどうかを確認し、RangeならOutputへセットします。RangeでなければOutputはNothingのままです。
関連記事
注意点
- 複数セル選択の場合もRangeとして返ります。
- 呼び出し側で
If SelectCell Is Nothing Then Exit Subのように確認してから使います。 - 選択範囲の先頭セルだけを使いたい場合は、呼び出し側で
SelectCell(1)のように扱います。
軽いまとめ
GetSelectionCellを挟むだけで、Selectionを使うマクロの安全性が上がります。セル前提の処理を汎用化するときに、先に入れておきたい小さな保険です。
