大量のデータを処理していて速度が非常に重要でない限り、範囲をメインオブジェクトとして使用することを強くお勧めします。主な利点は次のとおりです。
Range("A1:B10")
範囲のアドレス指定に非常に柔軟性がありますRange(TopCell, BottomCell)
。Range("NamedRange")
.Resize(Rows, Cols)
柔軟な参照のための「.Offset(Rows、Cols)」
- 基本的に、範囲/セルのすべてのプロパティ、つまり、だけでなく、、、、...も変更
.Value
できます。.Formula
.Font
.Border
- 豊富なメソッドにより、高度な処理が可能になります(たとえば
.SpecialCells
、数式/値/ ...の検索、.Rows.Visible
非表示など)
For Each c in Range("YourRange").Cells
単純なループで範囲内のすべてのセルをループします
値自体以外のものを変更する場合は、範囲を使用する必要があります。より大きなデータセットで複雑な計算を実行する場合にのみ、範囲(または任意のデータソース)のコンテンツを配列に読み込み、配列/メモリで処理してから、結果をに書き戻すことでパフォーマンスを向上させることができます。一気に範囲。このアプローチにより、計算速度が大幅に向上しますが、いくつかの状況にのみ適用可能であり、パフォーマンスが本当に重要な場合に推奨されます。
コレクション/辞書について:
範囲と比較しないでください。特に、特定のタスクに役立つ手段です。メンバーのセットをループする場合。ただし、範囲自体は一種のコレクションです。つまり、その要素をループできます(新しいメンバーを削除/追加しないでください)。コレクションとディクショナリクラスの使用法を比較したい場合は、次の簡単な要約をご覧ください。
コレクションはVBAに組み込まれているため、参照する必要はありません。これは、ループまたはアドレス指定する単純な集計の主な選択肢です。ディクショナリの利点は、追加の機能、主に.Exists
プロパティと.Keys
コレクションを提供し、ハッシュのキーをループすることもできることです。したがって、これらの機能が必要なときはいつでも( Microsoft Scripting Runtimeで)辞書を参照しますが、それ以外の場合はコレクションに固執します。