連想配列の値に構造体を入れるには?

解決


mady  2003-12-11 22:42:18  No: 80843

今のソースはこんな感じです。
標準モジュールでこのように宣言しており、
initをFormLoad時に呼ぼうと思っています。

Public Type WebFormData
    url As String
    formName As String
    element() As String
End Type

Public Sub init()
    
    Dim webFormDic             '変数を宣言します。
    Set webFormDic = CreateObject("Scripting.Dictionary")
    
    Dim webForm As WebFormData

    ' goo
    webForm.url = "http://community.goo.ne.jp/freemail/index.ghtml"
    webForm.formName = "login"
    ReDim webForm.element(1, 1) As String
    webForm.element(0, 0) = "uname": webForm.element(0, 1) = "***"
    webForm.element(1, 0) = "pass": webForm.element(1, 1) = "****"
    
    webFormDic.Add "goo", webForm
    …
End Sub
すると、最後のwebFormにフォーカスが当てられ、

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

というエラーメッセージがでます。
これは、勝手に定義したモノは連想配列の値には入れられない
ということなのかと思いました。が、メッセージは条件付肯定なので
うまくやればできるのかと思っています。

どうなんでしょう?この方法では無理なのか、できるのか。
できるのならその方法。代替案でもOKです。

よろしくお願いします。


魔界の仮面弁士  2003-12-11 23:02:07  No: 80844

Dictionaryに格納できる値は、Variant型に格納可能なデータのみです。
ユーザー定義型は、レジストリに登録されたパブリックな型のみ格納できます。

> うまくやればできるのかと思っています。
ActiveX EXEプロジェクトにして、パブリックなクラスモジュール内で定義してみるとか。


mady  2003-12-11 23:24:02  No: 80845

なるほど基本的に無理なんですね。

ActiveX EXEプロジェクトにして…とまでは思っていないので、
多少かっこ悪くても別の方法で対処します。

ありがとうございます。


いちゆ  2003-12-13 00:34:02  No: 80846

さわがせるようですが、ハッシュに格納できるようにクラスで定義したらどうでしょ?
面倒ですが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加