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

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

対象:Excel2007, Excel2010, Excel2013

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

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

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

[スポンサードリンク]

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

具体的には以下のようなコードで、列全体が選択されているかを判定できます。


Sub 列全体が選択されているか判定する()

 Dim msg As String

 With Selection
 If .Address = .EntireColumn.Address Then
  msg = "列全体が選択されています。"
 Else
  msg = "列全体が選択されていません。"
 End If
 End With

 MsgBox msg

End Sub

上記のマクロを実行したときに、列が選択されていれば、
「列全体が選択されています。」
列が選択されていなければ、
「列全体が選択されていません。」
とメッセージが表示されます。

サンプルマクロの解説

Excel VBAのSelectionプロパティは、選択されているオブジェクトを返してきます。

列全体が選択されているかを判定するVBAのコード

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

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

列全体が選択されているかを判定するVBAのコード

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

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

列全体が選択されているかを判定するVBAのコード

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

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

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

検索


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

.