VBAの配列とコレクションとディクショナリ

f:id:nazuna_0124:20170312082946p:plain

VBAのクラスモジュールは使わないほうがいい!

そう思っていた時期がわたしにもありました。


元々よくわからないのと、使っているコードを見ても

メリットを感じられなかったからです。

(長くなるのでちゃんと読まなかったとも言う)



Javaやったあとだけに、いつのまにかわかるようになってました←


それでもVBAは他の人に引き継ぐことを考えると

教育コストが高いので基本的に使わないほうがよいと思ってます。


そう思っていたら、さすがに使ってもよいのでは思えるものを発見。

それが配列、コレクション、ディクショナリ関係です。



というわけで、この3つのおさらいです。

逆にいえば、この3つを使い分けてないならクラスモジュール使う必要は

やっぱりありません!


ちなみに意味もなく比喩ると

ノート、バインダー式ノート、手帳の使い分けみたいなかんじ。



配列

・Redim preserveがめんどくさい。(動的配列がめんどい)

・要素数の取得がUbound関数でめんどい

・Joinで結合が便利(1次元だけ)

Excelセルに高速書き込みに使う。(1次元はだめ)

・メソッドがないから(アタリマエ)いちいち処理書くのだるい。

・別に高速なわけでもない


Collection

・こいつだけなぜかindexが1からはじまる。

・vbsで使えない

・存在確認、重複チェックがない

・1次配列の代わりに使うとjoinできないのがイラつく


Dictionary

・add時に値の省略ができない

・重複時のエラー回避がめんどくさい

・2次元配列の代わりに使うとExcelセルの格納はできなくてイラつく



なんだか愚痴ばっかりですが、いろいろめんどくさいわけです!!

やりたいことまとめてクラスモジュールにするよと便利だよー

って話に繋がる予定。




ここまで書いて。

ArrayList使えるか調べたことなかったなーと気が付きました。

調べたらあるんですね!!

やっぱクラスモジュールいらないかも←



Office TANAKA - Excel VBA Tips[.NET Frameworkを使う]