VBA初心者です。 セルをコピーしていきたいのです。下記のようなものはしてみたのですが、回数が決まっていない時はどうすれば良いでしょうか? 質問の仕方もよくわかりませ。

Visual Basic120閲覧

ベストアンサー

0

その他の回答(4件)

0

cells(rows.count,1).end(xlup).row を使って最終行を得る事が多いです。 以下、段階を踏んで説明します。 ①cells(行、列) 指定された行列にある単一セルを指します。 ②rows.count これは予め決められた数で、Excelの行の上限を意味します。 ③cells(rows.count,1) 行がExcel上限行、列が1(A列)の単一のセルを返します。 ④cells(rows.count,1).end(xlup) 上限行、1列(A列)セルから、上方向に進んで、はじめに空白出ないセルを指します。ちょうど、シートの一番したからCtrl+↑を押した時に選択されるセルです。 ⑤cells(rows.count,1).end(xlup).row 上記④で到達したセルの行数を意味します。 単一のセルではなく、数字を指していることに注意です。 以上のことを踏まえて、 for i = 1 to cells(rows.count,1).end(xlup).row とすることで、1からA列で使用している最大行の数までiを処理を繰り返すことができます。 初心者のうちは『cells(rows.count,1).end(xlup).row』の使用頻度は高いので、意味とセットで覚えておくと良いと思います。

1

https://www.tipsfound.com/vba/03001 for文のようなものをループ文と言います。 ループ文は、終わり方を決めないと、永遠にループして、抜けられなくなります。そうすると、利用者側から見たら、フリーズしたようになってしまいますね。 回数で終わる、ループ文は、一般にfor文を使います。 回数以外の条件で終わるループ分は、for文を使うコンピューター言語もあれば、他の文を使うものもあります。 VBAの場合には、Do While、Do Until、Do Loopのいずれかを使います。 Do WhileとDo Untilは肯定文か否定文かの違いだけで同じで、何かが条件を満たす(満たさない)間、整数回繰り返します。 Do Loopでは、条件をループの入り口では示さずに繰り返し、ループしている途中で何らかの条件を満たしたときに、ループから抜け出します。

1人がナイス!しています

1

回数が決まっていないといっても何かしら条件があると思うので、例えば最終行までなら「1 To 10」の所を「1 To 最終行」とかにします。具体的にはどのような条件でコピーをするのでしょうか?

1人がナイス!しています

回答ありがとうございます。 具体的にはファイルに入っているワークシートの内容のチェックが終了したらそのワークシート名をマクロを実行しているシートにコピーしていきたいのですが、その時によってワークシートの数が違います。 説明になっているでしょうか? すみませんm(_ _)m

1

VBA超入門シリーズ:その10 ~ループ処理~ https://www.techhub.tokyo/magazine/introduction-to-vba-10/

1人がナイス!しています

回答ありがとうございます。 今回質問させて頂いた事とは違うのですが、 もうひとつわからなかった事が解決しました。 思ったとおりに動いてくれたので嬉しいです。ありがとうございましたm(_ _)m