秋ですが飽きもせずExcelネタ。色々寒風寒々しくなってまいりました。
まず、Excelでセルに値を入れる時、ループで1セルずつ処理すると大変遅うございます。
こんなの。100行×100列処理
dim r as range, i as long, j as long set r = thisworkbook.workshees("sheet1").range("a1") for i = 0 to 100 for j = 0 to 100 range.offset(i,j).value = hoge next next処理時間は1秒弱でしょうか? ScreenUpdating = False を使えばほぼ気にならないですが、 実際のプログラムだとこのループの間に計算式や他のセル参照などが入っていたりしてどんどん重くなってしまっていると思います。
そこで・・・
値を予め二次元配列に入れて、同じ大きさのRANGEに貼り付けるととても速いのです。
こんな感じ
dim r as range, i as long, j as long dim ary(100,100) as variant set r = thisworkbook.workshees("sheet1").range("a1") for i = 0 to 100 for j = 0 to 100 ary(i,j) = hoge next next r.resize(i+1,j+1) = aryマクロが遅くてお困りの方、お試しください!
0 件のコメント:
コメントを投稿