vba - 如何使 For 循环处理非整数

标签 vba

下面的代码很简单,输出符合预期

代码:

Option Explicit

Sub Test_loop2()
Dim i As Long
  For i = -3 To 3 Step 1
    Debug.Print i
  Next i
End Sub

输出:

enter image description here

由于四舍五入,以下代码提前退出

Option Explicit

Sub Test_loop2()
Dim i As Double
  For i = -0.3 To 0.3 Step 0.1
    Debug.Print i
  Next i
End Sub

输出:

enter image description here

在保留 For 循环 以确保最后一个值在非整数循环中运行的同时,我可以使用什么最可靠的方法?

例如,对于 i = X 到 Y,步骤 Z - 如果 Y 是 Z 的倍数,则必须始终达到 Y

对于 i = 0 to 0.3 步骤 0.1 然后 0.3 将在循环中

对于 i = 0 到 0.3 步骤 0.2 然后 0.3 将不在循环中

最佳答案

Floating point arithmetic如果您使用 Double(或 Single)作为计数器,最终会搞砸您。

对于计数器,坚持使用整数。然后从该计数器中导出浮点值。示例:

Dim i As Long
Dim d As Double
For i = 0 To 6
    d = (i - 3) * 0.1 ' or whatever formula needed
    Debug.Print d
Next i

关于vba - 如何使 For 循环处理非整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558276/

相关文章:

arrays - VBA中如何判断数组是否为空?

excel - 根据范围内的最高值设置列颜色

arrays - Excel VBA : Mysterious Zero is Being Added to Array Created with "For" Loop

vba - 不需要的循环工作簿_AfterSave

vba - excel-vba if 函数消息 "collection is one-based"

excel - GetObject(, "Outlook.Application") 无法在 Outlook 打开时使用

arrays - 如何计算自定义类型数组的 1 个变量的平均值

VBA PowerPoint 在线指南和如何录制宏

vba - 如何获取主布局幻灯片名称

arrays - 长数组 VBA 问题