VBAでハッシュテーブルを実装する

ハッシュテーブルは、キーと値の組み合わせを複数個格納して、キーを使って素早く値を取り出すデータ構造です。

これを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. 公式ドキュメント

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dictionary-object

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱