[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで複数の範囲をコピーしたい』(初心者)
今日の先ほどからVBA覚えようと取り組み始めたホヤホヤたまごです。
複数のセル範囲をコピーしたいのですが、
2つまでですと動作したのですが、
3つ以上を動作させようとするとエラーに
なってしまいます。
動作したもの
Range("A3:B35", "F3:F35").Copy
エラーになったもの
Range("A3:B35", "F3:F35", "I3:I35").Copy
解決方法をご教授ください。
よろしくお願い致します。
< 使用 Excel:Office365、使用 OS:Windows10 >
3つのセル範囲を選択する操作をマクロ記録すれば・・・。 (BJ) 2020/05/03(日) 10:03
ついでにその状態でコピーも。 (BJ) 2020/05/03(日) 10:09
記録してみたところ
Range("A3:B35", "F3:F35", "I3:I35").Select
Selection.Copy
になりました。
3つ以上は.SelectからSelection.Copyというもので実行しないとダメって事で合ってますか?
それとも、そもそも2つの範囲で実行できた最初の文自体が間違いで.SelectからSelection.Copyの流れで書くのが正しいのでしょうか?
VBAいきなり難しく感じてきました・・・
(初心者) 2020/05/03(日) 10:17
え〜と、 本当にマクロ記録したら、そうなったんですか? 私の知る範囲を超えているので、これ以上解りません。 (BJ) 2020/05/03(日) 10:34
(γ) 2020/05/03(日) 10:50
です。
3つ以上の範囲はRange("A3:B35, F3:F35, I3:I35").Selectから改行してSelection.Copyと書かないとダメなのかと、3つ以上じゃなくてもそう書くのが正しいのかご教授下さい。
(初心者) 2020/05/03(日) 11:03
http://officetanaka.net/excel/vba/speed/s2.htm
を参考にして下さい。
(γ) 2020/05/03(日) 11:06
ためになりました。
(初心者) 2020/05/03(日) 11:16
>そう書くのが正しいのかご教授下さい。
正解はいくつもあるので、なんともいえませんが、動けばそれは"正解"でしょう。
【複数】の範囲を示すのに【1つ】の文字列で表す方法は有効です。
【1つ】の範囲を示すのに【2つ】の文字列で表す方法も有効です、
↓をステップ実行してご確認ください。
Sub 実験1() Stop
Range("B2:C2,C4:D4,B5,C6:D6").Select Range("B2", "D6").Select Range(Range("B3"), Range("D7")).Select End Sub
(もこな2 ) 2020/05/03(日) 11:21
Sub 実験2() Stop
'▼ひとつの範囲をコピー Range("B2", "D6").Copy Range(Range("B3"), Range("D7")).Copy
'▼複数の範囲をコピー Range("B3:B6,D3:D6,F3:G6").Copy Range("B11:D11,B13:D14,B16:D16").Copy
'▼行(列)数が一定でないのでコピーできない(エラーになる) Range("B2:C2,C4:D4,B5,C6:D6").Copy
End Sub
ただし、複数の範囲をコピーするときに行(あるいは列)の数が一定でないと、コピーに失敗しますので注意が必要です。
(もこな2 ) 2020/05/03(日) 11:31
より理解が深まりました。
昨日もあれから色々勉強してましたが、VBAは難しいですね・・・
頭から煙が出そうになりつつも休憩しながらやってます。
みなさんに教えて貰った事、忘れないように繰り返していきます。
(初心者) 2020/05/04(月) 05:38
これで良いなら
Range("A3:B35,F3:F35,I3:I35").Copy は
Range("A3:I35").Copy (単一の範囲のコピー)でよいかもです。
(チオチモリン) 2020/05/04(月) 08:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.