配列(Dictionary)

Dictionaryで「451:Property Letプロシージャが定義されておらず、Property Getプロシージャからオブジェクトが返されませんでした」の回避方法

451:Property Letプロシージャが定義されておらず、Property Getプロシージャからオブジェクトが返されませんでした

CreateObject(“Scripting.Dictionary”)でDictionaryを実行するとエラーが発生する場合があります。

ユーザー定義型変数はDictionaryに格納不可のサンプルコード

下記コードを実行するとコンパイルエラーが発生します。

実行時エラー451:
Property Letプロシージャが定義されておらず、Property Getプロシージャからオブジェクトが返されませんでした

Public Sub sample()
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
     
    dic.Add "test", 1

    Dim sKey As Variant    
    '■実行時エラー451:Property Let プロシージャが定義されておらず、Property Get プロシージャからオブジェクトが返されませんでした。
    sKey = dic.Keys(0)
        
End Sub

Microsoft Scripting.Runtimeを事前に参照設定で回避可能です

'要事前設定 Microsoft Scripting Runtime
Public Sub sample()
    Dim dic As Dictionary
    Set dic = New Dictionary
     
    dic.Add "test", 1
    
    Debug.Print dic.Keys(0)
End Sub

関連記事

コメント

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