- ベストアンサー
エクセルVBAで、範囲指定を変数でしたいとき
Rows(\"10:20\").select という記述が可能ですが、この10と20を変数ro1とro2で指定したいのですが、Rows( ro1 & ":" & ro2).select ではエラーになってしまいます。 どのようにすれば良いでしょうか?
- みんなの回答 (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)
エラーになった場合、どのタイミングでどのようなエラーになったかを書いていただかないと回答が難しいです。少なくとも以下のマクロでは10:20行目が選択されましたが… Sub Macro3() Dim ro1, ro2 As Long ro1 = 10 ro2 = 20 Rows(ro1 & ":" & ro2).Select End Sub
- ionatsu
- ベストアンサー率33% (1/3)
\マークの意味がよくわかりませんが、おそらく10行目から20行目までを範囲指定したい、と言う意味かとお見受けしました。お答えします。 これで大丈夫です。 Ro1 = 10 Ro2 = 20 ActiveSheet.Rows(Ro1 & ":" & Ro2).Select もしエラーが出るようなら、どのようなエラーか教えて下さい。 私はこれで大丈夫でした。
お礼
ありがとうございます。¥マークは、投稿したら自動的に付いてしまいました。 実際には、Activeシートでなく別シートの行を選択したかったので、 Sheet1.Rows(ro1 & ":" & ro2) とやりましたが、これがいけなかったのでしょうか?
お礼
ありがとうございます。 実際には、Activeシートでなく別シートの行を選択したかったので、 Sheet1.Rows(ro1 & ":" & ro2) とやりましたが、これがいけなかったのでしょうか?