[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Do While 〜とLastRowを組み合わせて使いたい』(疑問)
教えて下さい。
今のマクロは下記のように、
3列目の値が空欄でない所まで処理を続けるようにしていますが、
row = 2
Dim st As Worksheet
Do While st. Cells(row, 3).Value < > " "
処理
row = row + 1 Loop
3列目の途中に空欄があったりすると最後まで処理されないので、
Lastrowと組み合わせて、3列目に値が入っている最終行まで…のように書いて
試しているのですが、エラーになります。やはり、この書き方はおかしいでしょうか?
Do While st. Cells(Rows.count, 3).end(xlUp).row
例えば、変数にLastRowを取得して、
For i = 2 To LastRow
のように、For Next〜でやれば出来たのですが、なぜか時間がかかるので、
Do Whileで出来たらやりたいな…と思っているのですが。
まだまだ勉強し始めで手探りです。
宜しくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Whileの後は条件式です。
Do While row <= LastRow
です
>For Next〜でやれば出来たのですが、なぜか時間がかかるので、 ちゃんと動くようになってから速度比較してください。 For Next と Do While で同じ処理をすれば、 速度はほぼ変わらないか、わずかに For Nextの方が有利だとおもいます (´・ω・`) 2022/01/19(水) 22:55
おおざっぱですが
エクセルが自動でカウントしてる物とそうでない物の違いでは? 独自にカウントアップする処理を1つ入れただけでも違います。
Sub tt1() st = Now() Do i = i + 1 Loop Until i = 100000000 MsgBox Format(Now() - st, "h:s:00") End Sub
Sub tt2() st = Now() Do i = i + 1 n = n + 1 Loop Until i = 100000000 MsgBox Format(Now() - st, "h:s:00") End Sub (オアシス) 2022/01/19(水) 23:14
これ書かないとだめだった? for 〜 next の方が速いです。
>For Next〜でやれば出来たのですが、なぜか時間がかかるので
なんかやってそうなので。 途中で i とかの変数に横やり入れてませんかね?
(オアシス) 2022/01/19(水) 23:29
そして、For nextの方が早いのですね。
〉途中でiを横やりしていないか…
他の人が作ったマクロに、編集加えようとしています。
Callで入り組んでいる複雑なコードなので、その可能性大です。。
上記、試して検証してみます。
色々と参考情報ありがとうございました!非常に勉強になります。
(疑問) 2022/01/20(木) 05:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.