Form型のデータに引数を渡すには?

解決


kanegon  2003-09-10 04:39:24  No: 108608

いつもお世話になります。

ツリービューを作りたくて関数を作成したのですが、
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型
    になっています。


魔界の仮面弁士  2003-09-10 07:30:11  No: 108609

> 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 は、
特定のフォームを指している事になります。


kanegon  2003-09-10 18:54:14  No: 108610

魔界の仮面弁士様

Set f = Forms.Add(b)
のようにやったところうまくいきました。
本当に感謝しております。
ありがとうございました。またよろしくお願いいたします。


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

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






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