将表单标签作为参数传递给 sub

Vin*_*sus 4 excel vba

我有一个函数,用于提取表单中标签的一部分。

Public Sub setLabelForRefresh(lbl As Label)
    Dim i As Integer
    i = 0 'InStr(1, lbl.Caption, "de")
    Debug.Print i
End Sub

Public Sub callit()
     setLabelForRefresh (frmMain.lblBalancete)
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我得到了类型不匹配。

我尝试了 MSForms.Label 并将其传递给 ByVal 和 ByRef。

有任何想法吗?

Mat*_*ewD 5

你可以这样做。

接受它作为 MSForms.Label

Private Sub setLabelForRefresh(ByRef lbl As MSForms.Label)
    MsgBox (lbl.name)
    MsgBox (lbl.Caption)
End Sub
Run Code Online (Sandbox Code Playgroud)

Call 你 sub 并将标签传递给它。

Private sub callit()
    Call setLabelForRefresh(Me.Label1)
End if
Run Code Online (Sandbox Code Playgroud)

或者正如罗里指出的那样。不要使用括号。

Private sub callit()
    setLabelForRefresh Me.Label1
End if
Run Code Online (Sandbox Code Playgroud)