如何使全局对象访问Excel窗体控件

时间:2014-09-16 07:30:17

标签: excel forms excel-vba vba

我有一个全局删除功能的代码:

Public Function delete()
    Dim ctl
    For Each ctl In add_form.Controls
        If TypeOf ctl Is msforms.TextBox Then
            ctl.Text = ""
        End If
    Next ctl
End Function

此代码有效,但仅用于访问1表单。我希望该函数能够访问全局表单。我尝试使用UserForm.Controls,但输出只是一个带有文本"Object Required"的调试。

我非常感谢任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您的意思是希望此功能是通用的,那么当您调用它时,您需要将表单传递给它:

Public Function delete(oForm as Object)
    Dim ctl
    For Each ctl In oForm.Controls
        If TypeOf ctl Is msforms.TextBox Then
            ctl.Text = ""
        End If
    Next ctl
End Function

因此,如果您从表单中调用此方法,则只使用Delete Me

几点意见: 这个功能可以用一个更好的名字 2.由于您没有返回值,因此通常使用sub而不是函数。