0
Private Function GetLastSameRow(ByVal row, initialValue) As Integer
   .
   .
   .
   If (nextCell.Value = initialValue) Then
      GetLastSameRow = GetLastSameRow(row + 1, initialValue)
   End If
   MsgBox ("returning  : " & row)
   GetLastSameRow = row
End Function

在它完成 if 语句之后,行为真的很奇怪。

我在上面运行了调试器,它是这样跳转的:

1. End If                            '
2. MsgBox ("returning  : " & row)    ' row value is 3
3. GetLastSameRow = row              '
4. MsgBox ("returning  : " & row)    ' row value is 2 ????????
5. GetLastSameRow = row              '

所以基本上它想返回correct值,然后跳回并从蓝色中End if获取值。correct-1

4

1 回答 1

6

你写了一个递归函数!如果您使用调用堆栈,您会看到调试器将转到您的函数的不同实例。问题在于:

GetLastSameRow = GetLastSameRow(行 + 1,初始值)

它正在调用该函数的另一个实例。

于 2013-02-23T09:58:31.867 回答