我有一个被调用的函数,需要2个传递的变量
这是第一行:
Function dimErr(rngStart As Long, rngEnd As Long)
现在在这个函数的中间我调用一个子:
Call highlightLegitRows
然后该功能按预期继续进行。
现在,我的问题是我现在有与此子关联的可选变量:
Sub highlightLegitRows(Optional ByVal rngStart As Long = 0, Optional ByVal rngEnd As Long = 0)
调用此sub时,使用已经传递的相同值,如下所示:
Call highlightLegitRows(rngStart, rngEnd)
我的功能似乎只是在这一行结束。
例如,这个:
Call highlightLegitRows(rngStart, rngEnd)
MsgBox "hello"
不会触发消息框。但是这会:
Call highlightLegitRows
MsgBox "hello"
唯一的区别是在sub中添加了这些可选的传递变量。知道我哪里错了吗?
我没有发布整个函数和sub,因为它们冗长而复杂,但在上述更改之前两者都按预期工作。
答案 0 :(得分:1)
正常情况下您的代码可以使用。例如
Sub Sample()
Debug.Print dimErr(1, 2)
End Sub
Function dimErr(rngStart As Long, rngEnd As Long)
Call highlightLegitRows(rngStart, rngEnd)
MsgBox "hello"
End Function
Sub highlightLegitRows(Optional ByVal rngStart As Long = 0, _
Optional ByVal rngEnd As Long = 0)
Rows(rngStart & ":" & rngEnd).Interior.ColorIndex = 3
End Sub
但不会出现在下面的情景中。
Sub Sample()
On Error GoTo Whoa
Debug.Print dimErr(0, 0)
Whoa:
End Sub
Function dimErr(rngStart As Long, rngEnd As Long)
Call highlightLegitRows(rngStart, rngEnd)
MsgBox "hello"
End Function
Sub highlightLegitRows(Optional ByVal rngStart As Long = 0, _
Optional ByVal rngEnd As Long = 0)
Rows(rngStart & ":" & rngEnd).Interior.ColorIndex = 3
End Sub
甚至是
Sub Sample()
Debug.Print dimErr(0, 0)
End Sub
Function dimErr(rngStart As Long, rngEnd As Long)
On Error GoTo Whoa
Call highlightLegitRows(rngStart, rngEnd)
MsgBox "hello"
Whoa:
End Function
Sub highlightLegitRows(Optional ByVal rngStart As Long = 0, _
Optional ByVal rngEnd As Long = 0)
Rows(rngStart & ":" & rngEnd).Interior.ColorIndex = 3
End Sub
请检查您的代码以进行错误处理。是否存在因错误而停止(退出子/功能)的事情?