• ベストアンサー

エクセル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) っていうような感じで作ってみたのですが動かないです;; よろしくお願い致します

質問者が選んだベストアンサー

  • ベストアンサー
  • hogehage
  • ベストアンサー率50% (54/107)
回答No.1

Cells(4, 1).End(xlDown).Offset(1, 0) を Cells(65536, 1).End(xlUp).Offset(1, 0) では、どうですか。

nanny
質問者

お礼

お礼が遅くなりまして申し訳ございません。 無事に上記方法で解決いたしました。 誠にありがとうございます。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

>...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

nanny
質問者

お礼

お礼が遅くなりまして申し訳ありません。 とりあえず今回は、下の方の構文を使わせて頂くことになりました。 また、今後とも色々とご指導よろしくお願い致します。

関連するQ&A