こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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)

っていうような感じで作ってみたのですが動かないです;;
よろしくお願い致します

投稿日時 - 2005-02-02 16:51:10

QNo.1198430

困ってます

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

Cells(4, 1).End(xlDown).Offset(1, 0)



Cells(65536, 1).End(xlUp).Offset(1, 0)

では、どうですか。

投稿日時 - 2005-02-02 21:24:02

お礼

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

投稿日時 - 2005-02-03 17:48:25

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

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

投稿日時 - 2005-02-03 12:25:51

お礼

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

投稿日時 - 2005-02-03 17:51:41

あなたにオススメの質問