麻烦使用frmMenu.controls(控制)代码但是对于表单

时间:2017-12-08 17:19:38

标签: vba forms excel-vba excel

对不好的标题感到抱歉,但由于英语是我的第二语言,我不知道怎么说。

我有一个名为" frmMenu"使用名为" txtName"。

的文本框

我在模块中有代码:

Public Sub TextMenu(ByVal SomeVariable As String)
frmMenu.controls(SomeVariable).text="hi"
end sub

我使用参数" txtName"来调用模块。指向表单上的文本框

如果我有多个具有相同文本框名称的表单,我如何指向多个表单?类似于" .controls"代码,但表格。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要遍历VBA.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