【エクセルVBA】リスト処理に便利!Dictionaryオブジェクトをコードで使うための準備

★気に入ったらシェアをお願いします!


exce,vba,dictionary,object,eyecatch

皆様こんにちは、ノグチです。

VBAでツールを作るにあたって、リストの重複を除く処理って、悩ましいことの一つですよね。

ループを使って、一つ一つ重複チェックをする方法もありますが、リストのデータ件数が多ければ多いほど処理時間が長くなってしまうのが悩ましいところです。

しかも、ループで重複排除を行おうと思うと、ループに次ぐループで、ソースコードもなんだかゴチャゴチャとしてしまいます。

もっとスッキリしたコードで、かつ処理速度も速くなるような方法は無いものか…

そんな時に使えるのが、Dictionaryオブジェクトを使った処理。

今回はDictionaryオブジェクトを使ったリストの重複処理方法紹介の第一歩として、Dictionaryオブジェクトをご紹介していきます。

連想配列とは?

まず、Dictionaryオブジェクトは、連想配列をVBAで作るためのオブジェクトです。

連想配列とはなんぞや?

普段の生活ではあまり聞かない言葉ですよね。

連想配列は、簡単に言うと数値以外の型のキーと要素がセットになった配列のことです。

表で示すとこんな感じです。

キー 要素
東京 東京
神奈川 横浜
埼玉 さいたま
千葉 千葉
群馬 前橋
茨城 水戸
栃木 宇都宮

VBAにおける連想配列と配列の違い

連想配列と、Array関数で作る配列とは何が違うの?とお考えでしょうか。

配列の場合、コンピューターが各要素に対して0,1,2,3…とインデックス(数値)を振ってくれますよね。

つまり、インデックスが配列におけるキーになっています。

一方、連想配列は文字列もキーにすることができます。

配列におけるインデックスにあたるモノを、連想配列では任意の文字列や数値でキーとして表現するのです。

エクセルVBAのDictionaryオブジェクトとは?

先にも述べた通り、Dictionaryオブジェクトは、エクセルVBAで連想配列を作るためのオブジェクトです。

Array関数作った配列でインデックスが重複することがないのと同じく、Dictionaryのキーは重複することはできません。

キーに指定する文字列または数値は、Dicitonaryオブジェクトの中で必ず一意である必要があります。

そしてこの、キーは一意でなければならない、という特性を生かすことで、リストの重複を排除する処理が複雑なループ処理を使うことなくできるのです。

その方法については、次回以降の記事でご紹介していく予定です。

VBAでDictionaryオブジェクトを使う準備

VBAの参照設定

VBAでDictionaryオブジェクトを使うためには、Microsoft Scripting Runtimeを参照設定しておきましょう。

まず、VBEのメニューバーにある「ツール」>「参照設定」をクリックして、参照設定の画面を開きます。excel,vba,dictionary,参照設定

参照設定の画面で、参照可能なライブラリ ファイルのリストの中からMicrosoft Scripting Runtimeを探して、左側にあるチェックをONにします。

OKボタンを押せば、参照設定は完了です。

これで、VBAでDictionaryオブジェクトを使えるようになりました。

Dictionary型を宣言する

参照設定ができたら、VBAでDicitonaryオブジェクトを宣言しましょう。
宣言の記述方法はこちら。
Dim オブジェクト名 As  Dictionary
Set オブジェクト名 = New Dictionary
コードに置き換えるとこんな感じです。

参照設定せずにDictionaryオブジェクトを使う場合

Dictionaryオブジェクトは、Microsoft Scripting Runtimeの参照設定をしなくても使うことができます。

その場合は、以下のような宣言とオブジェクト変数への格納が必要になります。

Dim オブジェクト名 As Object
Set  オブジェクト名 = CreateObject(“Scripting.Dictionary”)

実際のコードに置き換えると、こんな感じになります。

ただ、参照設定を使うとコーディングの時にクイックヒントが出てきてくれたりするので便利ということもあって、個人的には参照設定をする方法をとることが多いです。

さいごに

今回は、Dictionaryオブジェクトと、コードで使うための準備をご紹介しました。

次回からは、このDictionaryオブジェクトを使った、リストから重複を除く処理の方法をご紹介していきます。

それでは、最後までお読みいただきありがとうございました!


The following two tabs change content below.

ノグチ

元製造子会社SE、ERPパッケージシステムコンサルタント(販売管理、購買管理、生産管理、設備管理他)。 業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁ、楽にお仕事してもらえたらいいなぁと日々夢見ております。