1

我试图理解 ByVal 和 ByRef 并使用 ByVal 关键字将参数从 long 传递到 double。

我注意到 VBA 给了我 y 平方值的错误答案。当 y (i in my sub) 是一个整数时,它确实有效。

在下面的示例中,我有 i = 22.5。
电子表格给了我 506.25。
我的函数给了我 484。

我认为 long 和 double 都支持小数。

Sub automation_test()

Dim i As Long
Dim j As Long
Dim x As Long
Dim ans As Long

i = Range("B1")
j = Range("B2")
x = Range("B3")

ans = my_model(i, j, x)

Range("B4").Value = ans

End Sub


Function my_model(ByVal y As Double, ByVal m As Double, ByVal q As Double) As Double

' my_model = (y ^ 2) * (m ^ 3) * (q ^ 1 / 2)

my_model = y ^ 2

End Function
4

1 回答 1

1

您必须声明所有使用的变量As Double(或者As Single,取决于要使用的最大值)。

Long变量不接受小数。

差异正是来自四舍五入(向下)的差异:

22.5^2 = 506.25

22^2 = 484

于 2020-06-07T20:53:42.790 回答