2014-04-28 78 views
1

我有一個名爲cls_Utilitario下述方法類:傳遞表單對象作爲一類參數在VBA

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 

如果我將參數改爲「Object」類型,爲什麼不能工作?我也嘗試了「Variant」和「Form」類型,但是失敗了。

在此先感謝。

+1

我想問題在括號中。不要使用它們。並且不要僅使用Me.Form,而只是因爲代碼以表單的形式運行,所以Me指的是表單(希望Access在Excel中相同)。所以我認爲這個調用應該看起來像這樣:obj_Utilitario.LimparCampos Me – dee

+0

如果你將'arg_form'作爲一個對象傳遞給'LimparCampos',那麼我不認爲'arg_form.Controls'會工作,除非你投射它返回爲一個「表格」。 – DeanOC

+0

hi Dee和DeanOC。感謝您的快速幫助。它工作完美,沒有像這樣的括號:obj_Utilitario.LimparCampos Me.Form –

回答

5

變化

obj_Utilitario.LimparCampos (Me.Form) 

Call obj_Utilitario.LimparCampos (Me.Form) 

或者

obj_Utilitario.LimparCampos Me.Form 

在VBA中,您不能使用括號如果不存儲在函數的返回值如圖所示,使用變量或使用關鍵字Call

+0

Manu,非常感謝!它的工作完美沒有像這樣的括號:obj_Utilitario.LimparCampos Me.Form –