パソコン

ExcelVBA DictionaryのExistsがうまく機能しないときの対処法

エクセル

VBAのDictionaryを使って、テーブルの列に同じ文字列があるかないかをチェックしようと試していたのですが、結構苦労したのでメモしておきます。

DictionaryのExistsがうまく動作しなかったときのコード

宣言が悪いかと思い、

Dim Dic As Object
Set Dic = CreateObject(“Scripting.Dictionary”)

を試してみたり、Dictionaryへの追加方法が悪いのかと思い、一度配列に保存してから追加したりといろいろ試しましたが、やっぱりうまくいきません。

ひょっとしたらと思い、次の方法を試してみました。

DictionaryのExistsがうまく動作したときのコード

DictionaryのExistsが機能しなかった原因は?

なぜ動作しなかったのかというと、原因はこれでした。

Cells(1,1) = “1 山田太郎”

Mid関数とInStr関数を使って、名前だけにしたらやっと思った通りに動いてくれました。

数字から始まっているからか、半角スペースが入っているかまでは断定しませんでしたが、いずれかが原因でExistsがうまく機能しなかったようです。