在我的主代码部分,我最初有一个丑陋的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 部分的 Else 分支中,如下所示:
If X
"'Do stuff..."
Else
Call ShiftCompare(ShiftValue)
EndIf
错误发生在 Function 行:
Function ShiftCompare(ByVal ShiftValue As String)
所引用的单元格中的值可能为空或为字符串。
Call ShiftCompare("ShiftValue")
- Vityatadebug.print ShiftValue
? - Vityata