配列(Dictionary)

ユーザー定義型変数はDictionaryに代入不可【ExcelVBA】

ユーザー定義型変数(構造体)はDicitonaryに代入が出来ない

ユーザー定義型変数(構造体)をDictionaryやCollectionに格納しようとすると
以下コンパイルエラーが発生します。

user-error

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

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

コンパイル エラー:
パブリック オブジェクト モジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。

'要参照設定 Microsoft Scripting Runtime
Public Type myType
    tName As String
    tAge As Long
    tSex As String
End Type

Public Sub sample()
    Dim dic As Dictionary
    Set dic = New Dictionary
    Dim pInfo As myType

    dic.Add pInfo, 1

End Sub


ユーザー定義型変数をClass化する事で回避可能です


'クラスモジュール(Class1)に記載
Public tName As String
Public tAge As Long
Public tSex As String

'標準モジュールに記載
Public Sub sample()
    Dim dic As Dictionary
    Set dic = New Dictionary
    Dim pInfo As New Class1

    dic.Add pInfo, 1

End Sub

関連記事

コメント

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