2015-01-08 7 views
0

Я продолжаю получать следующую ошибку: Compile Error: Expected = всякий раз, когда я пытаюсь запустить код VBA. Что вызывает это?Ошибка компиляции при вызове функции

Function 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() 
checkStatus = cStatus(10, "B_E") 
End Sub 

ответ

2

Вы не назначаем возвращаемое значение для вашей 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 

В качестве альтернативы, вы можете сделать cStatusSub, если вам не нужно возвращать значение:

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 
Смежные вопросы