「セル直接アクセスと変数仲介」では速度の紹介をしましたが、ここでは陥りやすいミスを防止することを書いておきます。。




シートのデータ(ある範囲のセル、レンジと表現します)バリアントの変数へ入れ、それをレンジに貼り直すと困った事象が発生することがあります。


15桁ほどの数字(顧客コードのような用途で使っているもの)が、戻した時には指数表記されてしまう経験がありました。バリアント型のバリアントたるゆえんではあります。




これの対策として、ストリング型の二次元配列を用意し、バリアントから一要素ずつ文字型へ変換してコピー(二重のForループで可)して対処し、それをレンジに戻すことで対処しました。




その際、混乱を避けるため Option Base 1 にしておくことをお薦めします。


通常、配列は 0 から始まるが、バリアント型にレンジをコピーした時は 1 からです。ストリング型のテーブルの配列要素が 1 から始まるようにすることでわざわざコーディング上で配列位置を調整(-1とか+1とか)しなくて済みます。






なお、データベースから読み取ったRecordSetでは、上記のような事象はないようです。