【エクセル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
コードに置き換えるとこんな感じです。
Dim Dic As Dictionary 
Set Dic = New Dictionary

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

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

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

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

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

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

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

さいごに

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

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

【エクセルVBA】AddメソッドでDictionaryオブジェクトにキーと要素を追加する方法
エクセルVBAのDictionaryオブジェクトを使った、リストの重複を排除する方法を連載でご紹介しています。今回は、Dictionaryオブジェクトにキーと要素を追加するAddメソッドのご紹介です。

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

連載目次:エクセルVBAのDictionaryオブジェクトでリストの重複を排除する

エクセルVBAでリストの重複を排除する方法として、Dictionaryオブジェクトを使った重複排除の方法をご紹介しています。

  1. 【エクセルVBA】リスト処理に便利!Dictionaryオブジェクトをコードで使うための準備
  2. 【エクセルVBA】AddメソッドでDictionaryオブジェクトにキーと要素を追加する方法
  3. 【エクセルVBA】DictionaryオブジェクトのExistsメソッドで重複があるかを確認する方法
  4. 【エクセルVBA】Dictionaryオブジェクトを使ったリストの重複排除プログラム
  5. 【エクセルVBA】重複排除処理が速いのはどっち?Dictionaryオブジェクト vs 複数ループ
  6. 【エクセルVBA】Dictionaryに格納したキーと要素をリストに書き出す方法

タイトルとURLをコピーしました