• ベストアンサー

エクセル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