ByRef参数类型不匹配

ByRef参数类型不匹配

最初在我的主代码部分中,我有一个丑陋的if语句-尽管它会运行很丑陋。我决定使其成为一个我将要调用的函数,这使我得到一个错误“编译错误:ByRef参数类型不匹配”。我的假设是该函数需要正确引用,尽管我一直在阅读文档,但看不到为什么>。<

声明ShiftValue变量:
Dim ShiftValue As String
ShiftValue = LCase(Sheets("Raw_Rota").Cells(Counter, "C").Value)


函数内容和声明:

Function ShiftCompare(ByRef ShiftValue As String)

If StrComp(ShiftValue, "am", vbTextCompare) = 0 Then
        Call IncAMs(AMs)   'this function increments the variable by 1.
        Call Inc(Counter)

    ElseIf StrComp(ShiftValue, "pm", vbTextCompare) = 0 Then
        Call IncPMs(PMs)
        Call Inc(Counter)

    ElseIf StrComp(ShiftValue, "days", vbTextCompare) = 0 Then
        Call IncDays(Days)
        Call Inc(Counter)

    ElseIf StrComp(ShiftValue, "leave", vbTextCompare) = 0 Then
        Call IncLeave(Leave)
        Call Inc(Counter)

    Else 'If the string doesn't compare to the above values tally it as unknown
        Call IncUnknown(Unknown)
        Call Inc(Counter)
    End If
End Function


更新:

我的函数调用在If部分的其他部分中,如下所示:

If X
"'Do stuff..."

Else

Call ShiftCompare(ShiftValue)

EndIf


在功能行上引发错误:

Function ShiftCompare(ByVal ShiftValue As String)

无论所引用的单元格中的值是空还是字符串。

最佳答案

调用函数时参数的值不是字符串。检查ShiftValue的值,然后重试。如果要确保它是一个字符串,则像这样Call ShiftCompare("MyStringValue")传递它



函数的思想是返回一个值是好的。
您的不回来。将Function更改为Sub

关于vba - VBA ByRef参数类型不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46239566/

10-11 10:33