Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8164 / 13644 ツリー ←次へ | 前へ→

【34849】貼り付けについて かわうそ 06/2/14(火) 19:05 質問[未読]
【34853】Re:貼り付けについて Kein 06/2/14(火) 19:44 回答[未読]
【34855】Re:貼り付けについて かわうそ 06/2/14(火) 20:14 お礼[未読]

【34849】貼り付けについて
質問  かわうそ  - 06/2/14(火) 19:05 -

引用なし
パスワード
   1コの範囲を複数に一括で貼り付ける仕方があったらどうか教えて下さい!
変数があるとどうもうまくいかず、ズラズラと書くしか術がありませんでした。。。

例を挙げますと、
変数無 
Sheet2.Range("AG6:AG7").Copy Destination:=Sheet2.Range("AH6,AI6,AJ6")

変数有 
Range(Worksheets("Sheet2").Range("A" & iyL1), Worksheets("Sheet2").Range("B" & iyL1)).Copy _
Destination:=Sheet2.Range("AC" & iyL1)
Range(Worksheets("Sheet2").Range("A" & iyL1), Worksheets("Sheet2").Range("B" & iyL1)).Copy _
Destination:=Sheet2.Range("AE" & iyL1)
Range(Worksheets("Sheet2").Range("A" & iyL1), Worksheets("Sheet2").Range("B" & iyL1)).Copy _
Destination:=Sheet2.Range("AK" & iyL1)
Range(Worksheets("Sheet2").Range("A" & iyL1), Worksheets("Sheet2").Range("B" & iyL1)).Copy _
Destination:=Sheet2.Range("AM" & iyL1)
Range(Worksheets("Sheet2").Range("A" & iyL1), Worksheets("Sheet2").Range("B" & iyL1)).Copy _
Destination:=Sheet2.Range("AO" & iyL1)


貼り付け箇所がもっと多くなると・・・・・
もっとスマートなのがあればどなたかお願いします!! 

【34853】Re:貼り付けについて
回答  Kein  - 06/2/14(火) 19:44 -

引用なし
パスワード
   Copyメソッドの引数で貼り付け先を指定する方法でなく、クリップボードを経由する
コードなら、少なくともコピーの方は一回で済みます。

Range("A1:B5").Copy
Range("D1").PasteSpecial
Range("D6").PasteSpecial
Range("D11").PasteSpecial
Application.CutCopyMode = False

貼り付け先が多ければ、応用としてループを使います。

Sub Cpy()
  Dim C As Range
 
  Range("A1:A5").Copy
  For Each C In Range("D1, D7, D13, D19, D25, D31")
   C.PasteSpecial
  Next
  Application.CutCopyMode = False
End Sub

PasteSpecialメソッドの引数を何も指定しなければ、書式なども含めた"全コピー"
になるので、結果として Copyメソッドの貼り付け先引数を指定するやり方と、
同じになります。

【34855】Re:貼り付けについて
お礼  かわうそ  - 06/2/14(火) 20:14 -

引用なし
パスワード
   Kein さん、
ありがとうございました!

クリップボードを経由する方法で簡素化出来ました。

8164 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free