|
▼kousen さん:
レスを全文引用されると、要旨が把握できにくくなるので、
質問に必要な個所のみに絞って引用をお願いします。
>ひつこいようですが今一度お願いします。
>この式をほかにも応用しようと思って自分なりに修正したのですが、エラーになってしまいます。
>sheet1とsheet1のようにたんいつSHEETだけでの場合上の式はどの程度省略できるのでしょうか?
ヘルプによると、RangeオブジェクトのCopyメソッドの構文は以下のようです:
Range.Copy (Destination)
ここで、引数Destination:= には コピー先のセル範囲を指定します。
この引数を省略すると、クリップボードへコピーされます。
とあります。
範囲のコピーには、これを使っているだけです。
まず、同じシート内で あるセル範囲を別のセルへコピーするには
Range("A2:A12").Copy Destination:=Range("D2")
とします。
引数名 Destination:= を省略して、
Range("A2:A12").Copy Range("D2")
としても、OK です。
つぎに、あるシートの範囲を「同じBookの」別のシートへCOPYするときは
範囲の前に シートを明示的に指定してやります。
(そうしないと、範囲は ActiveSheet の範囲と解釈されます
<標準モジュール> 内では)
Worksheets("Sheet1").Range("A2:A12").Copy _
Worksheets("Sheet2").Range("A2")
(注)上の記述で、一行目のお尻に スペース+ _ がありますが、
これは「文章が次の行に続くよ」という意味です。
Worksheets("Sheet1").[A2:A12].Copy Worksheets("Sheet2").[A2]
と書いても同じことです。
今度は、本題の異なるBook間のコピーです。
このばあいは シートのまえに、Bookを明示してやります。
どのWorkbookかは Book名を使ってもいいし、
先述のように マクロのあるBookが ThisWorkbookオブジェクト、
いまアクティブになっているWorkbook が ActiveWorkbook で
あることを利用していもいいです。
たとえば、Rangeの簡略記法を使って書くと、
ActiveWorkbook.Worksheets("Sheet1").[A2:A12].Copy _
ThisWorkbook.Worksheets("Sheet2").[A2]
となります。
ActiveWorkbookの複数シートのセルを巡回してマクロのあるBookに
COPYを繰り返すときは、先述したように
For Each 〜 Next 構文を利用したりします。
|
|