Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » Rowsの行範囲・複数行指定を変数で

Rowsの行範囲・複数行指定を変数で

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2007 ビルド13029.20344 Microsoft Store)

「vba rows 変数 複数行」
といった検索キーワードで、時折アクセスがあります。

Excel VBAのRowsプロパティを使って、行範囲・複数行を表すRangeオブジェクトを取得するときに、引数を変数で指定するには、どのようなコードを書けばいいのかを探していた方による検索でしょう。

[スポンサードリンク]

「エクセル マクロ rows 変数」
「Excel vba 行範囲を変数で指定」
「1行目からn行目を選択 変数 マクロ」
も、同じことを探していらしたのではないかと推測しています。

「:」を変数の間に連結した指定で行範囲・複数行を取得するサンプル

以下のSubプロシージャが、わかりやすいと思います。

Sub Rowsで複数行取得時の引数を変数で_1()
 Dim r1 As Long: r1 = 3
 Dim r2 As Long: r2 = 5

 Rows(r1 & ":" & r2).Select
End Sub

Long型の変数r1とr2を準備して、サンプルとして「3」と「5」を代入しています。
  Dim r1 As Long: r1 = 3
  Dim r2 As Long: r2 = 5

これらの変数r1・r2を、間に文字列「:」を挟んで連結して、Rowsプロパティ(厳密にはRangeオブジェクトの既定プロパティ)に指定し、
  Rows(r1 & ":" & r2).Select

取得した3:5行目を、Rangeオブジェクトに用意されているSelectメソッドで選択しています。
  Rows(r1 & ":" & r2).Select

変数をRowsにそのまま指定して行範囲・複数行を取得するサンプル

上記のSubプロシージャが、まあ、わかりやすいと思いますが、2つの変数の間に「:」を挟んで連結して引数として指定する「r1 & ":" & r2」を、気持ち悪いと感じる方も、いらっしゃるような気がします。

そんな方には、以下のようなSubプロシージャでしょうか。

Sub Rowsで複数行取得時の引数を変数で_2()
 Dim r1 As Long: r1 = 3
 Dim r2 As Long: r2 = 5

 Range(Rows(r1), Rows(r2)).Select
End Sub

拙著『いちばんやさしいExcel VBAの教本』の、Lesson 59「Rangeオブジェクトを取得プロパティについて学習しましょう」でもお伝えしているとおり、Rangeプロパティには引数を2つ指定できます。

この引数指定を行った場合、その2つの引数で表されるセル範囲を表すRangeオブジェクトを取得できます。

Rowsプロパティ(しつこいですが、厳密にはRangeオブジェクトの既定プロパティ)に変数r1を指定することで、
  Range(Rows(r1), Rows(r2)).Select
上記のサンプルの場合3行目全体を表すRangeオブジェクトを取得しています。

Rowsプロパティに変数r2を指定することで、
  Range(Rows(r1), Rows(r2)).Select
5行目全体を表すRangeオブジェクトを取得しています。

これらの3行目全体・5行目全体を表すRangeオブジェクトを、Rangeプロパティの引数に指定することで、3:5行目全体を表すRangeオブジェクトを取得しています。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » Rowsの行範囲・複数行指定を変数で

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

検索


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

.