1

以下のようにフォーム名をハードコーディングする代わりに、文字列変数を使用しようとしています。

FrmMainControl.Controls

しかし、これを使用したい。

Forms("FrmMainControl").Controls

ただし、「サブ」または「関数が定義されていません」というエラーが発生します。助けてください。これはVBAにあります。

4

1 に答える 1

1

フォームが編集されていると仮定すると、コレクションloadを検索できます。UserForms

Dim form As UserForm: Set form = getInstanceOfLoadedUfrm("frmMainControl")
If Not form Is Nothing Then
    MsgBox form.Controls.Count
Else
    '//load
    Set form = UserForms.Add("frmMainControl")
    MsgBox form.Controls.Count
End If

Function getInstanceOfLoadedUfrm(name As String) As UserForm
name = UCase$(name)
For Each form In UserForms
    If (Ucase$(form.name) = name) Then
        Set getInstanceOfLoadedUfrm = form
    End If
Next
End Function
于 2012-11-14T17:31:33.113 に答える