• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでコピー&ペーストをループ化する方法)

VBAでコピー&ペーストをループ化する方法

このQ&Aのポイント
  • ワークシート(1)とワークシート(2)の間で特定のセル列をコピー&ペーストしたい
  • ループを使用して列のデータが無くなるまで処理したい
  • 既存のコードが動作しない

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

> 貼り付けたいワークシートのセルの空白まで i = 1 Do Until Worksheets(" 貼り付けたいワークシート").Cells(i, 2) = "" やりたいこと i = i + 1 Loop になりますが 一行目が空白なら何も起こりませんが、何がしたいのか良くわからなくなりました。 列のデータがなくなるまで、もしくは、貼り付けたいワークシートのセルの空白まで ということなのでしょうか?

Kurumatrou
質問者

お礼

度々のご回答ありがとうございます。上記に頂いた構文を組み込んだ所思ったように動作致しました。 *-----------* 列のデータがなくなるまで、もしくは、貼り付けたいワークシートのセルの空白まで ということなのでしょうか? *-----------* はい上記のご指摘どおりの動きでございます、私が言葉足らずで申し訳ありません。 kmetuさんが一番回答していただきましたのでベストアンサーとさせていただきます。 この度は誠にありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

たまたまエクセルVBAには最終データ入力済み(コピー貼り付けも)行を 見つけるやり方がある d=Range("A65536").End(Xlup).Row Sub test01() Worksheets("Sheet1").Range("A1:B5").Copy Sheets("Sheet4").Range("A65536").End(xlUp).Offset(1, 0) End Sub 貼り付け先はこれを繰り返せば良い。 貼り付け元は、条件を付けて終了条件をコードに書いて、ループを終了させる。 例 シートのA1:B5のデータを集める Sub test01() For i = 1 To 3 Worksheets("Sheet" & i).Range("A1:B5").Copy Sheets("Sheet4").Range("A65536").End(xlUp).Offset(1, 0) Next i End Sub

Kurumatrou
質問者

お礼

ご指導いただいた方法も試してみます、勉強になります。 この度はありがとうございました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

下から探して最後のデータが見つかるまでだと For i = 1 To Worksheets("ワークシート(2)").Range("E" & Rows.Count).End(xlUp).Row Worksheets("ワークシート(1)").Range("BJ" & i) = Worksheets("ワークシート(2)").Range("E" & i) Next 上から探して空白行までだと For i = 1 To Worksheets("ワークシート(2)").Range("E1").End(xlDown).Row Worksheets("ワークシート(1)").Range("BJ" & i) = Worksheets("ワークシート(2)").Range("E" & i) Next データが飛び飛びであった場合取り出すデータが変わります。

Kurumatrou
質問者

お礼

ご質問を増やして申し訳ありません、この度はありがとうございました。

Kurumatrou
質問者

補足

素早いご回答と丁寧なサンプルソースありがとうございます。大変助かりました。追加になりまして申し訳ありませんが、 「貼り付けたいワークシートのセルの空白まで」という判定はどんな構文を足せばよろしいでしょうか? いただいた構文で申しましたら、 Worksheets("ワークシート(1)").Range("BJ" & i) に End か <> "" などを使用するのでしょうか? ご質問が多くなり申しわけありませんがご確認の程お願い致します。

関連するQ&A