以下のようにフォーム名をハードコーディングする代わりに、文字列変数を使用しようとしています。
FrmMainControl.Controls
しかし、これを使用したい。
Forms("FrmMainControl").Controls
ただし、「サブ」または「関数が定義されていません」というエラーが発生します。助けてください。これはVBAにあります。
フォームが編集されていると仮定すると、コレクション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