2016-10-06 8 views
-2

私のforloopで項目を繰り返して、項目をExcelに追加するとき。私のプログラムはかなり遅くなり、反復が起こるのを見るとほとんどクラッシュします。このすべてのプロセスを一度に行う方法はありますか?反復のスピードアップ

Set rng = Range("A1:C2") 

For Each row In rng.Rows 
    For Each cell in row.Cells 
    'Do Something 
    Next cell 
Next row 
+3

短い答えを:配列にすべてをロードし、アレイを投稿する代わりに、そのを通して繰り返しますバック。長い答えはあなたがしたいことにかかっています。何が求められているかに応じて短期間で切り捨てられます。 –

+2

セルを1つずつ順番に繰り返すことは、おそらく***です。***あなたがVBAでできる最も遅いものです。 'Dim rng As Variant'、次に' rng = ActiveSheet.Range( "A1:C2").Valueは2Dバリアント配列を処理します。 'For'ループを使って配列を反復すると、それは夜となるでしょう。 –

+2

メンテナンス性、可読性、性能などの向上に関する建設的なフィードバックを得るために、*実際の実際の作業コード*を[codereview.se]に投稿することができます。しかし、コードレビューのために。 –

答えて

0

あなたが使用してオンと画面更新/イベントオフにすることができます:

Application.ScreenUpdating = True 
Application.EnableEvents = True 

Application.ScreenUpdating = False 
Application.EnableEvents = False 
+2

それはおそらく '何か何か'が実際にやっていることに応じて助けになるでしょう。実際のボトルネックは、スクリーン更新やワークシート/ワークブックイベントではなく、OPが*個々のセルを反復しているという事実です*。 –