Вы не назначаем возвращаемое значение для вашей cStatus
функции, поэтому линия checkStatus = cStatus(10, "B_E")
не знает, что он получает.
' Define a return type for the function (I used string).
Function cStatus(cValue, mName) As String
' Wrapping True and False in quotes since you are passing a string.
' If this is supposed to be a boolean, then type the parameter (see below).
If mName = "True" Then
rTotal = rTotal + cValue
ElseIf mName = "False" Then
rTotal = rTotal - cValue
End If
' Assign a return value.
cStatus = "the value"
End Function
В качестве альтернативы, вы можете сделать cStatus
Sub
, если вам не нужно возвращать значение:
Sub cStatus(cValue, mName)
If mName = "True" Then
rTotal = rTotal + cValue
ElseIf mName = "False" Then
rTotal = rTotal - cValue
End If
End Function
Private Sub BE_Click()
' No "checkStatus" variable.
cStatus 10, "B_E"
End Sub
Как примечание стороны, ни один из ваших параметров не напечатанный, так что они будут все пришли как Variant
прошло по ссылке (ByRef
). Я не уверен, если это предназначено, но это хорошая практика, чтобы набирать их, несмотря на то, что большую часть времени вы захотите передать их по значению (ByVal
).
Например:
Function cStatus(ByVal cValue As Integer, ByVal mName As Boolean) As String