0

我有这个函数,它假设调用它自己来执行求和。但是当它到达该行时,它会弹出一个需要宏的窗口。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
4

2 回答 2

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
于 2013-07-11T14:59:31.970 回答
0
SumUp(result = sumValue, number = numValue)

这在许多层面上都是无效的。

如果你打算SumUp用命名参数调用,你应该写

SumUp result:= sumValue, number:= numValue

您不必使用命名参数:

SumUp sumValue, numValue
于 2013-07-11T14:57:11.177 回答