Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで列全体が選択されているかを判定する

VBAで列全体が選択されているかを判定する

対象:Excel2007, Excel2010, Excel2013

「列全体が選択されているか判定」
という検索が、このサイト『インストラクターのネタ帳』で行われていました。

列全体が選択されているかどうかを判定するVBAのコードを探していた方による検索でしょうか。

行全体が選択されているかどうかを判定するコードを既にご紹介しています。そのうちの、Selection.AddressとSelection.EntireRow.Addressを比較することで行全体が選択されているのか判定するのと同じ考え方で、列全体が選択されているのかを判定することもできます。

[スポンサードリンク]

列全体が選択されているかを判定するサンプルマクロ

具体的には以下のようなコードです。

Sub 列全体が選択されているかを判定する()
 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プロパティは、選択されているオブジェクトを返します。

Excel.Global.Selection

セルが選択されていれば、もちろんRangeオブジェクトが返されます。

また、RangeオブジェクトのEntireCoumunプロパティは、列全体を表すRangeオブジェクトを返します。

Excel.Range.EntireColumn

選択されているセルのAddressプロパティと、
選択されているセルの列全体のAddressプロパティを比較して、
  If .Address = .EntireColumn.Address Then

同じであれば、列全体が選択されているということになります。

Excel.Range.Address

Selection.Addressと、Selection.EntireColumn.Addressがそれぞれ何を返すのかは、以下のようなサンプルマクロを実行してご確認ください。

Sub Sample()
 With Selection
  MsgBox .Address
  MsgBox .EntireColumn.Address
 End With
End Sub

最終更新日時:2021-09-04 12:27

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで列全体が選択されているかを判定する

「行・列を表すRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.