「列全体が選択されているか判定」
という検索が、このサイト『インストラクターのネタ帳』で行われていました。
列全体が選択されているかどうかを判定するVBAのコードを探していた方による検索でしょうか。
行全体が選択されているかどうかを判定するコードを既にご紹介しています。そのうちの、Selection.AddressとSelection.EntireRow.Addressを比較することで行全体が選択されているのか判定するのと同じ考え方で、列全体が選択されているのかを判定することもできます。
列全体が選択されているかを判定するサンプルマクロ
具体的には以下のようなコードです。
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
If .Address = .EntireColumn.Address Then
MsgBox "列全体が選択されています。"
Else
MsgBox "列全体が選択されていません。"
End If
End With
End Sub
サンプルマクロの解説
Excel VBAのSelectionプロパティは、選択されているオブジェクトを返します。
セルが選択されていれば、もちろんRangeオブジェクトが返されます。
また、RangeオブジェクトのEntireCoumunプロパティは、列全体を表すRangeオブジェクトを返します。
選択されているセルのAddressプロパティと、
選択されているセルの列全体のAddressプロパティを比較して、
If .Address = .EntireColumn.Address Then
同じであれば、列全体が選択されているということになります。
Selection.Addressと、Selection.EntireColumn.Addressがそれぞれ何を返すのかは、以下のようなサンプルマクロを実行してご確認ください。
Sub Sample()
With Selection
MsgBox .Address
MsgBox .EntireColumn.Address
End With
End Sub
最終更新日時:2021-09-04 12:27
- Newer:Word VBAで表をまとめて中央揃えに
- Older:オブジェクトブラウザの便利さがよくわかった
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで列全体が選択されているかを判定する