Ms access Access的VBA-循环停止递减时执行
我有一个无限的梦想。。。在VBA中循环访问时,我无法了解发生了什么。我的代码类似于下面的代码,我递减一个变量,当该变量小于或等于0时,它应该退出while循环Ms access Access的VBA-循环停止递减时执行,ms-access,vba,Ms Access,Vba,我有一个无限的梦想。。。在VBA中循环访问时,我无法了解发生了什么。我的代码类似于下面的代码,我递减一个变量,当该变量小于或等于0时,它应该退出while循环 Sub MySubRoutine (MyArray() as Double) Dim t as Double Dim s as Double t = MyArray(0) s = t / 50 Do While (t>=0) 'Various things th
Sub MySubRoutine (MyArray() as Double)
Dim t as Double
Dim s as Double
t = MyArray(0)
s = t / 50
Do While (t>=0)
'Various things that don't change t or s
t = t - s
Debug.Print t; " "; s; " "; t - s
Loop
End Sub
我的Debug.Print语句显示它正确地递减了一段时间,但随后它就停止了。以下是此循环的即时窗口输出的开始和结束:
118829.71158.31158.3 29.7 1128.6
1128.6 29.7 1098.9
1098.9 29.7 1069.2
1069.2 29.7 1039.5
1039.5 29.7 1009.8
1009.8 29.7 980.1
…
…
207.9 29.7 178.2
178.2 29.7 148.5
176.3 29.7 146.6
176.3 29.7 146.6
176.3 29.7 146.6 如果我让它继续运行,最后三行就无限重复。因此,在代码中,t=t-s工作了很长一段时间,然后它就好像
s
变成了0.0,尽管我的输出显示它仍然是29.7。它还显示在Debug.Print
行中,t-s
的计算是正确的
我还尝试将t=t-s
更改为:
temp = t - s
t = temp
但那没用
关于这里可能发生的事情有什么线索吗?您的代码缺少某些内容,并且您的结果不可复制 使用1212.24489795918的值调用(以获得t=1188的第一次计算),循环终止,结果是(逗号是我的十进制分隔符): 但s远不是你的29.7
因此,mitch的观点似乎有道理。
step
是VBA语法的一部分,请尝试使用其他变量名。这不是我的实际代码,因此step不是我的变量名。我将其编辑为将“步骤”更改为“s”。不知道您的实际代码发生了什么,但您的示例代码永远不会达到0-您不会给s
或t
一个初始值,因此t=t-s
将始终是t=0-0
,因此t
永远不会是>0,并且始终是=0。请发布您的实际代码,或者更确切地说是一个问题,因为你的代码实际上并没有重现问题。实际的代码是。。。密码?或者你是故意试图混淆这个问题?
1188 24,2448979591837 1163,75510204082
1163,75510204082 24,2448979591837 1139,51020408163
1139,51020408163 24,2448979591837 1115,26530612245
1115,26530612245 24,2448979591837 1091,02040816327
1091,02040816327 24,2448979591837 1066,77551020408
1066,77551020408 24,2448979591837 1042,5306122449
1042,5306122449 24,2448979591837 1018,28571428571
1018,28571428571 24,2448979591837 994,040816326531
994,040816326531 24,2448979591837 969,795918367347
969,795918367347 24,2448979591837 945,551020408164
945,551020408164 24,2448979591837 921,30612244898
921,30612244898 24,2448979591837 897,061224489797
897,061224489797 24,2448979591837 872,816326530613
872,816326530613 24,2448979591837 848,571428571429
848,571428571429 24,2448979591837 824,326530612246
824,326530612246 24,2448979591837 800,081632653062
800,081632653062 24,2448979591837 775,836734693879
775,836734693879 24,2448979591837 751,591836734695
751,591836734695 24,2448979591837 727,346938775511
727,346938775511 24,2448979591837 703,102040816328
703,102040816328 24,2448979591837 678,857142857144
678,857142857144 24,2448979591837 654,61224489796
654,61224489796 24,2448979591837 630,367346938777
630,367346938777 24,2448979591837 606,122448979593
606,122448979593 24,2448979591837 581,87755102041
581,87755102041 24,2448979591837 557,632653061226
557,632653061226 24,2448979591837 533,387755102042
533,387755102042 24,2448979591837 509,142857142859
509,142857142859 24,2448979591837 484,897959183675
484,897959183675 24,2448979591837 460,653061224491
460,653061224491 24,2448979591837 436,408163265308
436,408163265308 24,2448979591837 412,163265306124
412,163265306124 24,2448979591837 387,91836734694
387,91836734694 24,2448979591837 363,673469387757
363,673469387757 24,2448979591837 339,428571428573
339,428571428573 24,2448979591837 315,183673469389
315,183673469389 24,2448979591837 290,938775510206
290,938775510206 24,2448979591837 266,693877551022
266,693877551022 24,2448979591837 242,448979591838
242,448979591838 24,2448979591837 218,204081632655
218,204081632655 24,2448979591837 193,959183673471
193,959183673471 24,2448979591837 169,714285714287
169,714285714287 24,2448979591837 145,469387755104
145,469387755104 24,2448979591837 121,22448979592
121,22448979592 24,2448979591837 96,9795918367362
96,9795918367362 24,2448979591837 72,7346938775525
72,7346938775525 24,2448979591837 48,4897959183688
48,4897959183688 24,2448979591837 24,2448979591852
24,2448979591852 24,2448979591837 1,48503431773861E-12
1,48503431773861E-12 24,2448979591837 -24,2448979591822
-24,2448979591822 24,2448979591837 -48,4897959183659