我想循环一个定义了UpperLimit,LowerLimit&以3秒的间隔递增。但Do While
循环不会停止......它会继续递增
Sub IntervalIncrement()
varValueL = InputBox("Input LowerBound")
varValueU = InputBox("Input UpperBound")
varValueI = InputBox("Input increment")
ActiveCell.Value = varValueL
Application.Wait (Now + TimeValue("0:00:03"))
Do While (ActiveCell.Value < varValueU)
ActiveCell.Value = ActiveCell.Value + varValueI
Application.Wait (Now + TimeValue("0:00:03"))
Loop
End Sub
答案 0 :(得分:1)
这是因为您的变量varValueU
设置为String
而不是Integer
(或更一般的数值)。
您应该通过更改此问题来解决问题:
Do While (ActiveCell.Value < varValueU)
......用这个:
Do While (ActiveCell.Value < CInt(varValueU))
问题1:
varValueU
被定义为String
?Variant
,因为你从来没有声明它,但是因为你通过一个InputBox
得到它,它有默认类型String
(因为你可以输入任何东西)它被解释作为String
问题2:
ActiveCell.Value = ActiveCell.Value + varValueI
(其中varValueI
也是String
)呢? Variant
。在您的特定情况下,在操作中找到的Variant
(如总和ActiveCell.Value + varValueI
)尝试被评估为数字并成功,但它与解释器在比较中给出的处理方式不同(如条件ActiveCell.Value < varValueU
)问题3:
Option Explicit
,编译器将强制您明确声明代码中的每个变量。