今のソースはこんな感じです。
標準モジュールでこのように宣言しており、
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です。
よろしくお願いします。
Dictionaryに格納できる値は、Variant型に格納可能なデータのみです。
ユーザー定義型は、レジストリに登録されたパブリックな型のみ格納できます。
> うまくやればできるのかと思っています。
ActiveX EXEプロジェクトにして、パブリックなクラスモジュール内で定義してみるとか。
なるほど基本的に無理なんですね。
ActiveX EXEプロジェクトにして…とまでは思っていないので、
多少かっこ悪くても別の方法で対処します。
ありがとうございます。
さわがせるようですが、ハッシュに格納できるようにクラスで定義したらどうでしょ?
面倒ですが。
ツイート | ![]() |