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

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

対象:Excel2007, Excel2010, Excel2013

「vba if 行選択だったら」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

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

行が選択されているかどうかは、いくつかの方法で判定できます。

[スポンサードリンク]

IsNumeric関数を使って判定する

RangeオブジェクトのAddressプロパティで返される文字列が、数字のみかどうかを調べることで、行が選択されているかの判定をできます。

Sub 行が選択されているか判定する_IsNumeric()
 If TypeName(Selection) <> "Range" Then Exit Sub

 Dim rng_addr As String
 rng_addr = Selection.Address(False, False)
 rng_addr = Replace(rng_addr, ":", "")
 If IsNumeric(rng_addr) Then
  MsgBox "行が選択されています。"
 Else
  MsgBox "行が選択されていません。"
 End If
End Sub

Range.Addressプロパティで、選択されているセルのアドレスを変数に格納し、
  rng_addr = Selection.Address(False, False)

「:」(コロン)を取り除いて、
  rng_addr = Replace(rng_addr, ":", "")

数字だけかどうかを判定しています。
  If IsNumeric(rng_addr) Then

Range.Addressプロパティは、第1引数・第2引数ともにFalseを指定すると、絶対参照マーク「$」のないセル番地を返してきます。

例えば、
A1セルが選択されていれば「A1」
A1:G8セルが選択されていれば「A1:G8」
1行目から8行目が選択されていれば「1:8」
という文字列を返してきます。

行が選択されているときは、数字と「:」(コロン)だけなのがポイントです。

行が選択されているときは、「:」を取り除いてしまえば数字だけになります。

それを利用したのが上記のサンプルマクロです。

AddressとEntireRow.Addressを比較して判定する

Range.AddressプロパティとRange.EntireRow.Addressプロパティを比較するという方法でも、行が選択されているかという判定ができます。

Sub 行が選択されているか判定する_EntireRow()
 If TypeName(Selection) <> "Range" Then Exit Sub

 With Selection
  If .Address = .EntireRow.Address Then
   MsgBox "行が選択されています。"
  Else
   MsgBox "行が選択されていません。"
  End If
 End With
End Sub

Range.EinterRowプロパティは、元のRangeオブジェクトの、行全体のRangeオブジェクトを返してくるプロパティです。

Excel.Range.EntireRow

Selection.EntireRowは、セルが選択されているときには、選択されているセルの行全体のRangeオブジェクトを返してきます。

例えば、A1:G8セルが選択されているときにSelection.EntireRowは、1行目から8行目までのセル範囲を返してきます。

そのAddressプロパティ、Selection.EntireRow.Addressは、「$1:$8」という文字列を返してきます。

1行目から8行目までの行全体が選択されているときは、
Selection.Addressも
Selection.EntireRow.Addressも同じ「$1:$8」を返してきます。

これを利用したのが上記のサンプルマクロです。

関連語句
行を選択しているのかセルを選択しているのか

最終更新日時:2021-09-05 06:40

[スポンサードリンク]

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

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

検索


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

.