• ベストアンサー

エクセルVBAで、範囲指定を変数でしたいとき

Rows(\"10:20\").select という記述が可能ですが、この10と20を変数ro1とro2で指定したいのですが、Rows( ro1 & ":" & ro2).select ではエラーになってしまいます。 どのようにすれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

> エラーになってしまいます。 エラーの”内容”を書かないと。。 > 実際には、Activeシートでなく別シートの行を選択したかったので、 Select メソッドは、ActiveSheet 以外のモノに対して実行すると失敗します。 つまり、「Activeシートでなく別シートの行」は Select できません。 これは VBA の仕様です。   Sheet1.Activate   Rows(ro1 & ":" & ro2).Select のように Select する直前に、Sheet1 を Active にしてやれば良いでしょう。 ActiveSheet を切り替えたくないのであれば、コードを最適化します。 例えば、行の削除なら   Sheet1.Rows(ro1 & ":" & ro2).Delete のように シートを Active にしたり、行を Select する必要はありません。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

エラーになった場合、どのタイミングでどのようなエラーになったかを書いていただかないと回答が難しいです。少なくとも以下のマクロでは10:20行目が選択されましたが… Sub Macro3() Dim ro1, ro2 As Long  ro1 = 10  ro2 = 20  Rows(ro1 & ":" & ro2).Select End Sub

cmc32000
質問者

お礼

ありがとうございます。 実際には、Activeシートでなく別シートの行を選択したかったので、 Sheet1.Rows(ro1 & ":" & ro2) とやりましたが、これがいけなかったのでしょうか?

  • ionatsu
  • ベストアンサー率33% (1/3)
回答No.1

\マークの意味がよくわかりませんが、おそらく10行目から20行目までを範囲指定したい、と言う意味かとお見受けしました。お答えします。 これで大丈夫です。 Ro1 = 10 Ro2 = 20 ActiveSheet.Rows(Ro1 & ":" & Ro2).Select もしエラーが出るようなら、どのようなエラーか教えて下さい。 私はこれで大丈夫でした。

cmc32000
質問者

お礼

ありがとうございます。¥マークは、投稿したら自動的に付いてしまいました。 実際には、Activeシートでなく別シートの行を選択したかったので、 Sheet1.Rows(ro1 & ":" & ro2) とやりましたが、これがいけなかったのでしょうか?

関連するQ&A

  • VBAで列範囲、行範囲の指定方法の質問です。

    例えば、3行目から5行目を選択する記述、Rows("3:5").Select の記述で行番号を変数で指定することができますか? 要求側で   r1=3   r2=5 と指定してサブルーティンに渡し、 Rows("3:5").Select と同じ効果を期待したいのです。 なお、指定範囲が1行の場合は、次の記述で実現しています。 Sub 列の選択(Sheet as Ojbect, RowNo)   Sheet.Rows(RowNo).Select End Sub アクティブ シートへの処理なので、別にWorkSheet オブジェクトの指定は不要だと思うのですが、次の記述ではエラーで成功しません。 Sub 列の選択(RowNo)   Rows(RowNo).Select End Sub 結論として次のような Subroutine の作成が希望です。 Sub 複数列の選択(Sheet as Object, Row1, Row2) ・・・ End Sub

  • Excelマクロ:変数を使って範囲を指定してコピーするには?

    マクロ勉強中の初心者です。(OS:WindowsXP Excel2002) データの範囲を指定してコピーしたいと思っています。 cellsを使って、【変数を用いた】 記述の仕方を、教えて下さい。 変数を用いない場合は、以下のようなマクロで正常に動作しました。 【変数を用いない場合】   Sheets("Sheet2").Select Range("F3:K3").Select Selection.Copy Sheets("Sheet1").Select Range("C3").Select ActiveSheet.Paste

  • VBAのRows.Selectについて

    すみません。知っていれば教えてください。 Rows.Selectで、行をしてしたいと考えています。 行番号は変数gyouに代入されています。 そこで、普通であれば、Rows("4:4").select で指定できると思うのですが、今回、Rows("gyou:gyou").select にしたいです。 ただ、””でくくっているので、Gyouを数字ではなく文字列で認識するらしく、型がちがいますというエラーがでてきます。 どうすれば、変数で指定できのでしょうか? すみませんが、教えてください。

  • エクセルで指定した行範囲を別のシートにコピーするには?

    (1)指定した行(数値)を変数として登録する方法 tx1 = Sheets("0").Range("A1") tx2 = Sheets("0").Range("A2") tx3 = Sheets("0").Range("A3") A1=2 A2=2000 A3=2500 (2)(1)で指定した変数を使用して行範囲を他のシートSheets(”1”)、Sheets("2”)にコピーペースト。 行(”2:1999”) ←tx1 : tx2-1(A2の数値から1を引いた数値) Rows(▲▲▲▲▲▲).Select Selection.Copy Sheets("1").Select Rows("1:1").Select ActiveSheet.Paste 行(”2000:2499”) ←tx2 : tx3-1(A3の数値から1を引いた数値) Range(▲▲▲▲▲▲).Select Selection.Copy Sheets("2").Select Rows("1:1").Select ActiveSheet.Paste ▲部分がエラーになってしまい、うまくいきません。 正しい方法を教えてください。

  • Excelのマクロに変数で式入力

    いつもお世話になります。 Excelのマクロをはじめたばかりの初心者ですが、いま、特定のセルを選び、一行下に挿入してから、ずらした行のセルに式を入力してオートフィルをかけるという作業をしています。 この特定のセルが次々と移動していくので、変数を使おうと思い、 Dim ro1, ro2, ro3, ro4 As Long Dim セル番地 As String として、 For myCnt = 1 To 15 ro1 = 2 ro3 = ro1 + myCnt * 2 セル番地 = "C" & ro3 と記述していきました。   そして Rows(ro3 & ":" & ro3).Select Selection.Insert Shift:=xlDown Range(セル番地).Select ActiveCell.Formula = "=C2*セル番地" と記述して(実際にはまだつづきます)実行したところ、行の挿入とオートフィルがうまくいくものの、式の入力がうまく出来ません。 実際のシートを見ると、数式として =C2*セル番地 が入力されています。 本来はこの数式を =C2*C4 としたいのですが、いろいろとサイトを調べてもよくわかりません。 どなたか、よくご存知の方、教えていただけないでしょうか。 まだ勉強中なので、根本的に勘違いしているところもあるかもしれませんが、よろしくお願いいたします。

  • エクセルのマクロで行選択の選択範囲を変数指定する方法

    あるファイルのデータを別のファイルに行挿入でコピーするマクロを作ろうとしています。 コピー元の選択について、行範囲が固定であれば例えば   Rows("10:20").Select でよいのですが、コピー元行範囲がファイルにより異なるので変数化する必要があります。 単純には、 Sub Row_Copy() Dim AA, BB As Integer AA = 10 BB = 20 ' 10行目から20行目を行選択しコピーする Rows("AA:BB").Select '##ここが問題## Selection.Copy ' ' (簡単のため)同じシートに行挿入する例 Rows("30:30").Select Selection.Insert Shift:=xlDown End Sub ですが、これだと Rows("AA:BB").Select の部分でエラーになります。 いろいろとやってみましたが、どうしても何らかのエラーになってしまいます。Rowsは変数では使用できないのでしょうか? ちなみに、行範囲の選択ではなくRangeでセル範囲の選択をするという方法もありますが、複数ファイルのデータをコピー先の一つのファイルにマージするために行挿入でコピーしたいことと、列方向の柔軟性を持たせたいため、コピー元選択方法として行範囲の指定をしたいという趣旨があります。 また、1行毎のコピー・行挿入をデータの行数だけ繰り返すという手もありますが、データ量が多いとかなり処理時間がかかるためこれも避けたいと思っています。 マクロ初心者で知識不十分ですが、よろしくお願いします。

  • ExcelのVBAでの変数の範囲指定について

    Excel2010を使っている者です。 VBAでの変数の範囲指定についてわからない点があるのでお願いいたします。 私の使っている参考書に「プロジェクト内のどこでも有効な変数は、プロシージャの中ではなく、モジュールの一番上で、Publicと付けて宣言するように」と書いてあったのですが、プロジェクト内とはどういう意味でしょうか? よろしくお願いいたします。

  • EXCEL VBA----離れたセル範囲の指定

    こんにちは。初歩的なことで困っています。 Range("A3:A19,F3:F19").Select のように、離れたセル範囲を選択したいのですが 上の例の19行目が不定であるため、変数を使ったCellsプロパティを使用し i=Range("A3").End(xldown).Row Range("Cells(3, 1).Cells(i, 1), Cells(3, 6).Cells(i, 6)").Select と書いてみたのですが、エラーになってしまいました。 正しい指定の仕方を教えて下さい。よろしくお願いします。

  • EXCEL 変数を使ったセルの範囲指定

    EXCEL2003です。 セルの番地を変数aaaとbbbにそれぞれいれています。 (例:aaaは"A1"のセル、bbbは"A4"のセル) 範囲を指定する(Range("A1:A4")のように)のに、 変数でする場合は、どのような記述にすればよいのでしょうか。 よろしくお願いします。

  • エクセルのVBAで範囲指定に変数を入れたいんですけど・・・。

    エクセルのVBAで Range("A2:B○").Select という範囲を指定するときにA1に3が入っていたら○にB3を、4が入っていたら○にB4を入れるというふうにしたいんですがやり方がわかりません。 参照できるページでもいいのでよろしければ教えていただけないでしょうか?よろしくお願いします。

専門家に質問してみよう