ホーム > ライブラリ > Dictionary > Dictionaryクラス

ライブラリ

Dictionaryクラス

Dictionary は使い勝手がよくて好きなんですが、
直してもらいたいことも...

①Itemsがローカルウィンドウで見れない(^_^;)

②Keysがローカルウィンドウで256までしか見れない(・・;)

③[変数]  = Dic.Item([Key]) の時に
  Dicに無いKeyだったら自動的にDicに追加され
  [変数]に自動的にEmptyが入る(T_T).。◯(無いって言ってよー)

そこで、Dictionary をとっつきやすくするクラスを大公開~!!!ノ゚∀゚)ノヤットサー!

*******************************************************************************************************************
使用例①・・・Dicの代わりとして

 Dim C_Dic As [Dicクラス]
 Set C_Dic = New [Dicクラス]
    ・・・後は通常のDicと同様に使用
*******************************************************************************************************************

*******************************************************************************************************************
使用例②・・・Dicのデバッグ
 Dim Dic As Scripting.Dictionary
 Dic.Add() などなど

 Dim C_Dic As [Dicクラス]
 Set C_Dic = New [Dicクラス]
    Set C_Dic.Dic = Dic '★Dictionaryをクラスに格納して、Keys,Items等を確認★
*******************************************************************************************************************

もしクラス使うのも面倒だ!! って人は、
ウォッチウィンドウに Dic.Keys や Dic.Items を入れると、
①,②が見れるようになりますよ~^^
※詳細はここでは割愛...

*******************************************************************************************************************

Option Explicit
'Scripting.Dictionary Class

Private myDic   As Scripting.Dictionary '参照設定:Microsoft Scripting Runtime
'Private myDic   As Object              '※参照設定なし用

Private Sub Class_Initialize()
    Set myDic = New Scripting.Dictionary
'    Set myDic = CreateObject("Scripting.Dictionary")   '※参照設定なし用
End Sub

Private Sub Class_Terminate()
    Set myDic = Nothing
End Sub

Property Let Dic(Dic As Scripting.Dictionary)
    '外からDicを受け取る
    Set myDic = Dic
End Property
Property Get Dic() As Scripting.Dictionary
    '外に自分のDicを渡す
    Set Dic = myDic
End Property

Property Get Exists(Key As Variant) As Boolean
    Exists = myDic.Exists(Key)
End Property

Property Get Count() As Long
    Count = myDic.Count
End Property

Property Let Item(Key As Variant, Item As Variant)
    myDic.Item(Key) = Item
End Property

Property Get Item(Key As Variant) As Variant
    If myDic.Exists(Key) = False Then
        'あり得ないKeyでDicから取ろうとしたらエラー表示
        Call MsgBox("I(Dic) don't have the Key", vbCritical, "Dictionary Class")
        Stop    '緊急停止
        Exit Function
    End If
    Item = myDic.Item(Key)
End Property

Property Get Keys() As Variant
    Keys = myDic.Keys
End Property

Property Get Items() As Variant
    Items = myDic.Items
End Property

Function Remove(Key As Variant)
    If myDic.Exists(Key) = True Then
        Call myDic.Remove(Key)
    End If
End Function

Function RemoveAll()
    myDic.RemoveAll
End Function

Dictionary   2021/02/10   shono

この記事へのコメント

コメントを送る

 
※ メールは公開されません
Loading...
 画像の文字を入力してください