サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

セル・セル範囲が選択されているか確認する【Excel/VBA】

はじめに

 VBA を書いていると、処理対象の Selection オブジェクトが、想定しているものであるかどうか調べたいことがあります。

 図形Shapeかどうかの確認については、以下のサイトがありました。

図形が選択されているか判定する-VarType関数・ShapeRangeプロパティ:エクセルマクロ・Excel VBAの使い方/DrawingObjectsオブジェクト

 セル範囲が選択状態にあるかどうかを判定するものは見つかりませんでした。「図形が選択されていなければ」という判定では不十分の可能性があります。グラフオブジェクトかもしれませんしね。

 ということで「セルまたはセル範囲が選択されている状態であるかどうか」を真偽値Booleanで返す関数を作ってみました。

VBA ソースコード

 アドレスを取得してみて、エラーが出なければ True を返すようにしています。

 Mac / Windows どちらでも動くと思います。

Function IsCellRangeSelect() As Boolean
    On Error Goto ErrHandle
    
    Dim abr As String
    adr = Selection.Address
    IsCellRangeSelect = True
    Exit Function
    
ErrHandle:
    Err.Clear
    IsCellRangeSelect = False
End Function