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


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

対象:Excel2007, Excel2010, Excel2013

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

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

行が選択されているかどうかは、いろいろな方法で判定することができます。

[スポンサードリンク]

IsNumeric関数を使って行全体の選択かを判定する

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

Sub 行が選択されているか判定する_IsNumeric()  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()
 With Selection
  If .Address = .EntireRow.Address Then
   MsgBox "行が選択されています。"
  Else
   MsgBox "行が選択されていません。"
  End If
 End With
End Sub

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

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

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

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

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

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

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

関連語句
行を選択しているのかセルを選択しているのか
[スポンサードリンク]

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

TrackBack:1

TrackBack URL
列全体が選択されているかを判定するVBAのコード from インストラクターのネタ帳
Excel(エクセル)VBAで、列全体が選択されているかどうかを判定するには、Selection.AddressとSelection.EntireColu...

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

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

検索


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

.