For … Next Loopを早期に終了する(Microsoft Excel)
マクロプログラミングでFor … Nextループを使用する場合(誰が使用しないのですか?)、それらにはかなりの時間がかかる可能性があることを知っておく必要があります。必要なものをチェックするだけで、これを最小限に抑えることができます。たとえば、配列をチェックして値が存在するかどうかを確認する次のコードについて考えてみます。そうでない場合は、配列の最後に値を追加します。含まれている場合、値は追加されません。
AddIt = False For J = 1 to NumEntries If NumValues(J) = ToAdd Then AddIt = True Next J If AddIt Then NumEntries = NumEntries + 1 NumValues(NumEntries) = ToAdd End If
これはうまく機能しますが、配列が大きくなると、For … Nextループを何度も通過することになります。ここで、同じタスクを実行するが、一致が検出された場合はFor … Nextループから早期にダンプする次のコードについて考えてみます。
AddIt = False For J = 1 to NumEntries If NumValues(J) = ToAdd Then AddIt = True Exit For End If Next J If AddIt Then NumEntries = NumEntries + 1 NumValues(NumEntries) = ToAdd End If
これで、ループの早い段階で一致が見つかった場合、Exit Forステートメントが検出され、ループが基本的にすぐに終了するため、残りの反復はすべてスキップされます。その結果、実行速度の速いマクロになります。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(11335)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。
Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: