ハッシュテーブルは、キーと値の組み合わせを複数個格納して、キーを使って素早く値を取り出すデータ構造です。
これをVBAで実装する方法を紹介します。
0. ハッシュテーブルを使うと、どんなメリットがあるの?
コード量が少なくなり、処理速度が早くなるかもしれません。たとえば、
Type KeyValueType
Key As String
Value As String
End Type
Dim KeyValue() As KeyValueType
こんな変数があったとして、KeyをベースにValueを取得する場合、配列だと添字の最初から最後までループでまわしてIF文で判定するようなロジックが考えられますが、ハッシュテーブルを使うと1行で実装できます。
1. ハッシュテーブルオブジェクトの定義
VBAでハッシュテーブルを実装するには、Scripting.Dictionary オブジェクトを使用します。
Dim HashTable As Object
Set HashTable = CreateObject("Scripting.Dictionary")
2. Add メソッドで値を登録
Add メソッドを使用してハッシュテーブルに値を登録します。
HashTable.Add Key, Value
Key と Value を引数にセットして、ハッシュテーブルに登録します。
HashTable.Add “Apple”, “100”
このようにすると、「Apple」というキーで「100」という値をハッシュテーブルに格納します。
3. ハッシュテーブルから値を取得する
Value = HashTable(Key)
キーを引数にとって値を返します。簡単ですね。
Value = HashTable(“Apple”)
このようにすると、Valueには先ほど登録した「100」がセットされます。
4. キーの存在チェック existsメソッド
If HashTable.exists(key) Then
'存在する
Else
'存在しない
End If
Existsメソッドの引数にキーをセットして呼び出すと、存在チェックができます。
HashTable.exists(“Apple”)
このようにすると、”Apple”はキーとして登録済みですので、Trueが返ります。
5. 公式ドキュメント
Dictionary object
Office VBA reference topic
コメント