和風スパゲティのレシピ

日本語でコーディングするExcelVBA

配列(Array)

3/18(土)20:00~ VBA勉強会「配列入門!Array&Collection&Dictionary欲張りセット」

3/18(土)20:00~ Zoom勉強会に登壇します。「配列入門!Array&Collection&Dictionary欲張りセット」と題し、まだ配列を使ったことがない方、CollectionやDictionaryに触れてみたい方、3つの特長と使い分けポイントを整理したい方に向けた講座を行います。

Dictionary.Keys(i) .Items(i)と書いてはいけない

DictionaryのKeys/Itemsメソッドは全key/itemを1次元配列にして返すメソッドです。つまりKeys(i)はKeysの「引数i」ではなく、Keysが返す配列の「添字i」ということです。Keys(i)を使用したコードは都度配列を生成するため非常に遅くなります。

Dimを省略していきなりReDimを書いてもいい?

動的配列において、要素数を設定/変更するときには、ReDimステートメントを使用しますが、実はこのときDimステートメントは省略できます。しかし「変数の宣言を強制」問題と同じデメリットがあるため、動的配列のDimはしっかり書きましょう。

セル範囲や複数セルから1次元配列を生成する

セル範囲などRangeオブジェクトを格納した1次元配列を生成する方法を解説します。すべてのセルをForEach文でArrayに格納していくコードです。空セルを除外するなど条件を付ける場合は、ReDimPreserveを利用して要素数を動的に処理します。