我有这个函数,它可以调用自己来执行求和。但当它到达该行时,会弹出一个需要宏的窗口。 VBA不支持这个还是我错过了什么?
Sub SumUp(ByVal result As Double, ByVal number As Integer)
sumValue As Double
numValue As Integer
numValue = number
If (number > 0) Then
sumValue = numValue * 2
numValue = numValue - 1
SumUp(result = sumValue, number = numValue)
Else
MsgBox numValue
End If
End Sub
答案 0 :(得分:1)
1。)从技术上讲,它不是一个函数,因为它没有返回任何值,所以调用SumUp(result = sumValue,number = numValue)是错误的
2。)你缺少Dim语句
- >
Sub SumUp(ByVal result As Double, ByVal number As Integer)
Debug.Print "result=" & result & ", number=" & number
Dim sumValue As Double
Dim numValue As Integer
numValue = number
If (number > 0) Then
sumValue = numValue * 2
numValue = numValue - 1
SumUp sumValue, numValue
Else
MsgBox numValue
End If
End Sub
执行
Sub testit()
SumUp 2, 2
End Sub
提供以下输出:
result=2, number=2
result=4, number=1
result=2, number=0
答案 1 :(得分:0)
SumUp(result = sumValue, number = numValue)
这在许多级别都无效。
如果您打算使用命名参数调用SumUp
,则应该编写
SumUp result:= sumValue, number:= numValue
您不必使用命名参数:
SumUp sumValue, numValue