いつもお世話になります。
ツリービューを作りたくて関数を作成したのですが、
Variantで取得したデータでフォームをセットしようとすると
「オブジェクトが必要です」というエラーになってしまいます。
下記のコードでbからfの引渡しをうまくやりたいのですが、
どのようにやればよいのでしょうか?
申し訳ありませんが、よろしくお願いいたします。
(ちなみにBに空白を入れてNothingを設定するとうまくいきます)
Dim a As String
Dim b As Variant
Dim c As Long
Dim d As Integer
Dim f As Form
' a = "メンテナンスメニュー"
' b = ""
' c = 1
' d = 1
a = "メンテナンスメニュー"
b = "Form1"
c = 1
d = 1
mr_MnuMan.MenuAdd "管理会計システム", Nothing, 0, 1
If b = "" Then
Set f = Nothing
Else
Set f = b
↑ここで、オブジェクトが必要ですというエラーになります。
End If
<関数>mr_MnuMan.MenuAdd (a, f, c, d)
a・・・String型 、f・・・Form型、c・・・Long型、d・・・Integer型
になっています。
> b = "Form1"
これは、Form1のインスタンスではなく、
『"Form1"という文字列』に過ぎません。
例えば、
Dim X As Form1
Set X = New Form1
Load X
X.Show
:
などと書いている場合や、
Dim X As Form1
Set X = Forms.Add("Form1")
X.Visible = True
:
としたり、あるいは、
Dim X As Form1
Dim Y As Form
For Each Y In Forms
If TypeOf Y Is Form1 Then
Set X = Y
Exit For
End If
Next
であるとか、
Dim X As Form1
Load Form1
Form1.Show
Set X = Form1
などとしているのであれば、これらの変数 X は、
特定のフォームを指している事になります。
魔界の仮面弁士様
Set f = Forms.Add(b)
のようにやったところうまくいきました。
本当に感謝しております。
ありがとうございました。またよろしくお願いいたします。
ツイート | ![]() |