Vba frmMenu.控件(控件)代码有问题,但窗体除外

Vba frmMenu.控件(控件)代码有问题,但窗体除外,vba,forms,excel,Vba,Forms,Excel,很抱歉标题不好,但我不知道怎么说,因为英语是我的第二语言 我有一个名为“frmMenu”的表单,其中有一个名为“txtName”的文本框 我有一个模块中的代码: Public Sub TextMenu(ByVal SomeVariable As String) frmMenu.controls(SomeVariable).text="hi" end sub 我使用参数“txtName”调用模块,以指向表单上的文本框 如果有多个表单具有相同的文本框名称,如何指向多个表单?类似于“.control

很抱歉标题不好,但我不知道怎么说,因为英语是我的第二语言

我有一个名为“frmMenu”的表单,其中有一个名为“txtName”的文本框

我有一个模块中的代码:

Public Sub TextMenu(ByVal SomeVariable As String)
frmMenu.controls(SomeVariable).text="hi"
end sub
我使用参数“txtName”调用模块,以指向表单上的文本框

如果有多个表单具有相同的文本框名称,如何指向多个表单?类似于“.controls”代码的东西,但用于表单


谢谢

您需要在
VBA.UserForms
集合和表单上的每个控件上循环所有加载的UserForms

您可以让函数通过提供控件名称来返回控件

Public Function ControlByName(ByVal Name As String) As Object

    Dim f As UserForm, c As Control

    For Each f In VBA.UserForms
        For Each c In f.Controls
            If c.Name = Name Then
                Set ControlByName = f.Controls(Name)
                Exit For
            End If
        Next c
    Next
End Function
那么就称之为:

Sub T()

    Dim f As TextBox2
    Set f = ControlByName("TextBox1")

    Debug.Print f.Text

    Dim b As CommandButton
    Set b = ControlByName("CommandButton1")

    Debug.Print b.Caption
End Sub