アクセス上位ページ
 
最近の更新内容

Excel VBA ≫ 4.DCO - 概要と使用例(1)-b.ディクショナリオブジェクトの生成と使用例

ディクショナリオブジェクトの生成と使用例

ディクショナリオブジェクトを使用するには、 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
    
    ⇒ サンプルマクロ集 へ

    <マクロ実行結果>
  • 登録されていない社員名を入力した場合
  • 登録されていない社員名を入力 登録されていない社員名が入力された場合はエラー
  • 登録済みの社員名を入力した場合
  • 登録済みの社員名を入力 社員名と社員番号を表示
  • "ALL"を入力した場合
  • ALLを入力 登録済社員名の一覧を表示
  • 処理を終了したい場合
  • 処理終了


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

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

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

カテゴリ内ページ
Excel VBA 〜 総目次 〜
- 4.ディクショナリオブジェクト
-- (1). 概要と使用例
--- (1)-a.ディクショナリオブジェクトとは?
--- (1)-b.ディクショナリオブジェクトの生成と使用例
--- (1)-c.重複データの削除
--- (1)-d.集計処理



Page
Top