ディクショナリオブジェクトの生成方法

スポンサーリンク

使用方法

ディクショナリオブジェクトを使用するには、 CreateObject 関数を使用してディクショナリオブジェクトを生成します。この際、引数に”Scripting.Dictionary”を指定します。

構文
'ディクショナリオブジェクトへの参照を格納するための変数
Dim dco     As Object
'ディクショナリオブジェクトの生成と変数への格納
Set dco = CreateObject("Scripting.Dictionary")

ディクショナリオブジェクトを生成すると、Add メソッドでキー項目とその値を登録したり、Item プロパティで値を取得することができるようになります。

 ディクショナリオブジェクトのプロパティ・メソッド

使用例

社員番号照会ツール

キー項目として社員名、対応する値として社員番号をディクショナリオブジェクトに登録し、その内容をインプットボックスから照会する例です。社員名から社員番号を表示したり、登録済み社員名の一覧を表示することができます。

Sub sample_dc012_01()
    Dim dco         As Object
    Dim varList     As Variant
    Dim strName     As String

    'ディクショナリオブジェクトの生成
    Set dco = CreateObject("Scripting.Dictionary")

    'ディクショナリオブジェクトへ値の登録
    With dco
        .Add "田中 一郎", 1001
        .Add "鈴木 次男", 1002
        .Add "山田 サンタローズ", 1003
    End With

    'インプットボックスのキャンセルが押されるまで照会処理を繰り返します。
    Do While (True)
        strName = InputBox("社員名を入力してください。" & vbLf & _
                    "※ALL を入力すると登録済社員名の一覧を表示します。", _
                    "◆◆◆ 社員番号照会 ◆◆◆")

        If StrPtr(strName) = 0 Then
            'キャンセルボタンか、×ボタンが押されたら終了
            Exit Do
        ElseIf strName = "" Then
            MsgBox "社員名が入力されていません。", vbExclamation
        ElseIf strName = "ALL" Then
            '社員名の一覧を取得
            varList = dco.Keys
            '社員名の配列をvbLfで結合して表示
            MsgBox "登録済社員は以下の" & dco.Count & "名です。" & _
                    vbLf & vbLf & Join(varList, vbLf), vbInformation
        ElseIf dco.Exists(strName) Then
            '登録済社員の社員番号を表示
            MsgBox "『" & strName & "』さんの社員番号は『" & _
                    dco.Item(strName) & "』です。", vbInformation
        Else
            '登録されていない場合はエラーを表示
            MsgBox "『" & strName & "』さんは登録されていません。", _
                    vbExclamation
        End If
    Loop

    'オブジェクトの破棄
    Set dco = Nothing
End Sub

  Setステートメント  Do…Loop  Withステートメント
  InputBox関数  MsgBox関数  Join関数 

上記サンプルマクロを実行するとインプットボックスが表示されます。

まずは、登録されていない社員名を適当に入力してみます。

登録されていない社員名を入力
登録されていない社員名を入力

登録されていない旨のエラーメッセージが表示されました。

登録されていない社員名が入力された場合はエラー
登録されていない社員名が入力された場合はエラー

次に登録済みの社員名を入力してみます。

登録済みの社員名を入力
登録済みの社員名を入力

社員名に対応する社員番号が正しく表示されました。

社員名と社員番号を表示
社員名と社員番号を表示

次は”ALL”と入力してみます。

ALLを入力
ALLを入力

登録済みの社員名がすべて表示されました。

登録済社員名の一覧を表示
登録済社員名の一覧を表示

照会処理を終了するには、キャンセルボタン を押下します。

処理終了
処理終了

オブジェクトライブラリへの参照設定

ディクショナリオブジェクトはVBAに組み込まれているオブジェクトではなく外部のオブジェクトライブラリ(scrrun.dll)により提供されています。参照設定とはこの外部ライブラリとして提供されるオブジェクトを使用する場合に、事前にその外部ライブラリへの参照を設定しておくことを言います。

このオブジェクトライブラリにはディクショナリオブジェクト以外にもファイルシステムオブジェクト が含まれており、参照設定の方法とそのメリットについてはファイルシステムオブジェクトと全く同じです。
参照設定についての解説はファイルシステムオブジェクトのカテゴリ内で解説していますので、以下のリンク先よりご覧になってください。

 オブジェクトライブラリへの参照設定

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