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




コメント