質問: true このような方法はありますでしょうか。 ご教示のほど、宜しくお願いいたします。
回答: for ~lnext、do~loop両方やってみました。 10000行処理で両方共に約1秒の処理時間でした。 b1セルに処理時間表示するようにしてあります。 確認後はタイマーの不要部分は削除下さい。 処理速度はor ~lnextよりdo~loopの方が早いとネットで出てましたが、演算でないのであまり変わらないようです。 selectやactive、copy等は処理速度が遅くなるはずですので、使用は出来るだけ避けたほうが良いようです。 application.screenupdating = falseで画面更新を中断させました。これで私のpcで約0.5秒早く処理出来ました。 ご参考まで sub sample1() dim i, n as long dim dblstart as double '開始時刻取得エリア dim dblend as double '終了時刻取得エリア dim lngcnt as long 'カウンタ dim dbltime as double '所要時間取得エリア dblstart = timer '最終行が奇数行の場合は1を足し偶数行にする。 n = cells(rows.count, 1).end(xlup).row if n mod 2 = 1 then n = n + 1 application.screenupdating = false for i = 1 to n step 2 range(cells(i, 1), cells(i + 1, 1)).mergecells = true next '終了時刻を取得する dblend = timer '所要時間を計算する dbltime = dblend - dblstart ' 所要時間を表示します。 cells(1, 2) = "所要時間は" & format$(int(dbltime * 10 ^ 4 + 0.5) / 10 ^ 4) & "秒だよ。" application.screenupdating = true end sub sub sample2() dim i, n as long dim dblstart as double '開始時刻取得エリア dim dblend as double '終了時刻取得エリア dim lngcnt as long 'カウンタ dim dbltime as double '所要時間取得エリア dblstart = timer n = cells(rows.count, 1).end(xlup).row if n mod 2 = 1 then n = n + 1 i = 1 application.screenupdating = false do while i < n range(cells(i, 1), cells(i + 1, 1)).mergecells = true i = i + 2 loop '終了時刻を取得する dblend = timer '所要時間を計算する dbltime = dblend - dblstart ' 所要時間を表示します。 cells(1, 2) = "所要時間は" & format$(int(dbltime * 10 ^ 4 + 0.5) / 10 ^ 4) & "秒だよ。" application.screenupdating = true end sub