- ベストアンサー
エクセルVBA セルのコピー&ペーストで・・・
A1のセルに、123 B2のセルに、456 C3のセルに、789 とある A.xlsファイルがあるとして B.xlsファイルの A4のセルに123 B4のセルに456 C4のセルに789とコピーしたいのです・・・と ここまでは出来たのですが、ここからが悩み所で、 上記の状況で、A4~C4までにはデーターが入っているので、次はその下のA5~C5までにデーターを入れたいのです。 A.xlsのデーター入力部分は一緒で、B.xlsのペースト部分は、入力していないセルの一番上にペーストしたいのです。 ちなみにちょっと作ってみましたがだめでした;; Windows("A.xls").Activate DATA = Range("A1:N100") Windows("B.xls").Activate With Cells(4, 1).End(xlDown).Offset(1, 0) = DATA(1, 1) っていうような感じで作ってみたのですが動かないです;; よろしくお願い致します
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Cells(4, 1).End(xlDown).Offset(1, 0) を Cells(65536, 1).End(xlUp).Offset(1, 0) では、どうですか。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
>...Cells(4, 1).End(xlDown).Offset(1, 0) = DATA(1, 1) ご提示いただいたコードでは、A4セルから下にデータの終端を探しにいくわけですが、その途中にデータが一切無いと、A65536のOFFSET(1,0)でさらに1行下、、となりEXCELで扱える最大行数を超えてしまいます。 ただ、「どのようにダメだった」のかご質問文に記載がないため、推測の域です。 「A.xls の A1:N100セル の内容を B.xls のデータの終わりに付け足して転記したい」という動作であるとして、サンプルコードを示しました。ご参考下さい。 Sub Sample() Dim Buf As Variant Dim R As Long '元データ Buf = Workbooks("A.xls").Sheets("Sheet1").Range("A1:N100") '転記先 With Workbooks("B.xls").Sheets("Sheet1") '転記先データ終端行の行番号取得 'A列の最終セルA65536から上にみて、データのある最後のセル 'の行番号 R = .Cells(65536, "A").End(xlUp).Row If R = 1 Then R = 0 '取得されたデータ終端行の1行下に一括転記 .Cells(R + 1, "A").Resize(UBound(Buf), UBound(Buf, 2)) = Buf End With End Sub
お礼
お礼が遅くなりまして申し訳ありません。 とりあえず今回は、下の方の構文を使わせて頂くことになりました。 また、今後とも色々とご指導よろしくお願い致します。
お礼
お礼が遅くなりまして申し訳ございません。 無事に上記方法で解決いたしました。 誠にありがとうございます。