VBAでセルが選択されている判定する方法についてご説明します。
セルに対して操作する時に、セルを選択していないとエラーになることがあります。
例えばセルに文字を入力しようとした際に、シートに埋め込まれているユーザーフォームであったりグラフであったりと他のオブジェクトを選択していると意図しないエラーが発生します。
他にも「セルが選択されている時に実行」といったトリガーの分岐などにも使用できます。
今回紹介する方法はセル以外にも判定に使えますので、ぜひ覚えてみてください。
その他のセルの操作については下記記事をご覧ください。
1.セルが選択されているか判定する方法
セルが選択されているか判定する方法は「TypeName関数」を使用します。
「TypeName関数」は指定した変数に格納されているデータの型を返す関数です。
この「TypeName関数」は引数にSelectionを指定すると、現在選択しているオブジェクトを返します。
この特徴を使って、現在選択されているオブジェクトが何かを判定します。
基本構文は次のように記述します。
TypeName(変数)
今回は変数の部分を(Selection)とすることで、選択されているオブジェクトを取得出来ます。
セルが選択されている状態の返り値は「Range」です。
オブジェクトの返り値一覧
今回は「Range」でセルを判定していますが、他のオブジェクトも同様に判定出来ます。
選択しているオブジェクト | 返り値 |
セル | Range |
ワークシート | WorkSheet |
ワークシートのコレクション | WorkSheets |
ワークブック | Workbook |
ワークブックのコレクション | Workbooks |
FileSystemObject | FileSystemObject |
オブジェクト | Object |
Dictionary | Dictionary |
グラフ | Chart |
2.判定するサンプルコード
それでは「TypeName関数」を使用した判定のコードです。
Sub Sample1()
If TypeName(Selection) = "Range" Then '選択しているか判定
MsgBox "セルが選択されています。"
Else
MsgBox "セルは選択されていません。"
End If
End Sub
![](https://officedic.com/wp-content/uploads/2020/02/サンプル1-2.png)
「If TypeName(Selection) = “Range” Then」でセルを選択しているか判定します。