Class 在VBA中将窗体对象作为类参数传递

Class 在VBA中将窗体对象作为类参数传递,class,ms-access,vba,Class,Ms Access,Vba,我有一个名为cls_Utilitario的类,方法如下: Public Function LimparCampos(arg_form As Object) Dim campo As Control For Each campo In arg_form.Controls With campo Select Case .ControlType Case acComboBox, acTextBox

我有一个名为cls_Utilitario的类,方法如下:

Public Function LimparCampos(arg_form As Object)
    Dim campo As Control

    For Each campo In arg_form.Controls
        With campo
            Select Case .ControlType
                Case acComboBox, acTextBox
                    .Value = Null
            End Select
        End With
    Next campo

    Set campo = Nothing
    Set arg_form = Nothing
End Function
我在表格中输入了以下代码:

Private Sub btnNovo_Click()
    Dim obj_Utilitario As cls_Utilitario

    Set obj_Utilitario = New cls_Utilitario
    obj_Utilitario.LimparCampos (Me.Form)

End Sub
如果我将参数更改为对象类型,为什么不起作用?我也尝试了变体和表单类型,但没有成功

提前感谢。

更改

obj_Utilitario.LimparCampos (Me.Form)

在VBA中,如果未将函数的返回值存储在变量中或未使用所示的关键字调用,则不得使用括号。

更改

obj_Utilitario.LimparCampos (Me.Form)


在VBA中,如果未将函数的返回值存储在变量中或未使用如图所示的关键字调用,则不得使用括号。

我猜问题出在括号中。不要使用它们。不要使用Me.Form,而只使用Me,因为代码在表单中运行,所以Me指的是表单,希望Access中的这与Excel中的相同。因此,我认为调用应该是这样的:obj_Utilitario.LimparCampos mei如果您将arg_form作为对象传递给LimparCampos,那么我认为arg_form.Controls将无法工作,除非您将其作为form.hi Dee和DeanOC进行转换。谢谢你的快速帮助。如果没有像这样的括号,它工作得非常完美:obj_Utilitario.LimparCampos Me.FormI我想问题出在括号里。不要使用它们。不要使用Me.Form,而只使用Me,因为代码在表单中运行,所以Me指的是表单,希望Access中的这与Excel中的相同。因此,我认为调用应该是这样的:obj_Utilitario.LimparCampos mei如果您将arg_form作为对象传递给LimparCampos,那么我认为arg_form.Controls将无法工作,除非您将其作为form.hi Dee和DeanOC进行转换。谢谢你的快速帮助。没有像这样的括号,它工作得非常完美:obj_Utilitario.LimparCampos Me.FormManu,非常感谢!没有像这样的括号,它工作得非常完美:obj_Utilitario.LimparCampos Me.FormManu,非常感谢!没有像这样的括号,它工作得非常完美:obj_Utilitario.LimparCampos Me.Form
obj_Utilitario.LimparCampos Me.Form