Excel VBA-大数字的奇怪问题

Excel VBA-大数字的奇怪问题,excel,vba,Excel,Vba,我有以下测试代码: Sub TestLoop() Dim LowC As Currency, HighC As Currency, x As Currency, y As Integer Const StepValue = 1000 LowC = 1573869207000# HighC = 1573870107000# For x = LowC To HighC Step StepValue y = y + 1 Next x

我有以下测试代码:

Sub TestLoop()
    Dim LowC As Currency, HighC As Currency, x As Currency, y As Integer
    Const StepValue = 1000
    LowC = 1573869207000#
    HighC = 1573870107000#
    For x = LowC To HighC Step StepValue
        y = y + 1
    Next x
    MsgBox (1 + ((HighC - LowC) / StepValue) & "  ,  " & y)
End Sub
在Excel 2016中,这会产生“错误”答案-(901514)。但是,如果我从LowC和HighC中删除第一个数字(1),使它们分别为573869207000和573870107000,我得到了“正确”的答案-(901901)。然而,在Excel 2013中,我两次都得到了“正确”的答案


有人知道为什么会这样吗?我是否达到了Excel 2016中存在但Excel 2013中没有的上限?

溢出数字类型并不是你想知道是否发生过的事情:如果是这样的话,你会得到一个非常响亮的“溢出”错误(运行时错误6)<代码>y应该是
长的
,因为
高C低C
(900K)远远超出
整数的范围
。。。那应该是爆炸了。您是否在发布之前删除了“下一步继续时出错时的
?请注意,由于
作为货币
说明符,因此
#
类型提示是多余的,应该删除。更奇怪的是,在循环结束时,x=1572869721000,小于highc=1573870107000。For循环中可能存在到Double的隐藏转换。@MathieuGuindon the#由VBE自动设置为long number。事实上,货币的符号是@,而不是#(Double type的符号),所以问题变成了,为什么这个循环会在513次迭代而不是900次之后退出。是的,答案很可能与使用
Currency
@NoahBridge no dice进行数学运算时引入的浮点舍入错误有关,NoahBridge no dice已经尝试过了。我认为Excel安装的漏洞是罪魁祸首。溢出数字类型并不是你想知道是否发生过的事情:如果是这样的话,你会得到一个非常响亮的“溢出”错误(运行时错误6)<代码>y应该是
长的
,因为
高C低C
(900K)远远超出
整数的范围
。。。那应该是爆炸了。您是否在发布之前删除了“下一步继续时出错时的
?请注意,由于
作为货币
说明符,因此
#
类型提示是多余的,应该删除。更奇怪的是,在循环结束时,x=1572869721000,小于highc=1573870107000。For循环中可能存在到Double的隐藏转换。@MathieuGuindon the#由VBE自动设置为long number。事实上,货币的符号是@,而不是#(Double type的符号),所以问题变成了,为什么这个循环会在513次迭代而不是900次之后退出。是的,答案很可能与使用
Currency
@NoahBridge no dice进行数学运算时引入的浮点舍入错误有关,NoahBridge no dice已经尝试过了。我认为Excel安装的缺陷是罪魁祸首。