「vba rows 変数 複数行」
といった検索キーワードで、時折アクセスがあります。
Excel VBAのRowsプロパティを使って、行範囲・複数行を表すRangeオブジェクトを取得するときに、引数を変数で指定するには、どのようなコードを書けばいいのかを探していた方による検索でしょう。
「エクセル マクロ rows 変数」
「Excel vba 行範囲を変数で指定」
「1行目からn行目を選択 変数 マクロ」
も、同じことを探していらしたのではないかと推測しています。
「:」を変数の間に連結した指定で行範囲・複数行を取得するサンプル
以下のSubプロシージャが、わかりやすいと思います。
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プロシージャでしょうか。
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オブジェクトを取得しています。
- Newer:日付の年月日を分けるには
- Older:Windowsコレクションをループ処理しよう
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » Rowsの行範囲・複数行指定を変数で