2016-09-08 3 views
-3

VBA에서 루프가 반복되는 동안 VBA에서 무슨 일이 일어나는지 알 수 없습니다. 내 코드는 다음과 유사합니다. 여기서 변수를 감소시키고 변수가 0보다 작거나 같으면 while 루프를 종료해야합니다.VBA for Access - Do 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 that don't change t or s  

     t = t - s 
     Debug.Print t; " "; s; " "; t - s 
    Loop 
End Sub 

My Debug.Print 문은 잠시 동안 올바르게 감소하지만 그 후에 멈추는 것을 보여줍니다.

1188 29.7 1158.3
1158.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

176.3 29.7 146.6

나는이 계속 실행 할 경우
176.3 29.7 146.6 176.3 29.7 146.178.2 29.7 148.5
, 그 마지막 3 줄은 무한히 반복합니다. 그래서 코드 t = t - s에서 꽤 오랫동안 작동하고 그 후 s이 0.0이되는 것처럼 보입니다. 출력이 여전히 29.7 인 것으로 나타났습니다. 또한 Debug.Print 행에 t - s이 올바르게 평가됨을 보여줍니다.

은 또한에 t = t - s 변경 시도 :

temp = t - s 
t = temp 

그러나 그것은 도움이되지 않았다.

여기에 무슨 일이 일어날 지에 대한 단서가 있습니까?

+0

'단계'는 VBA 구문의 일부이므로 다른 변수 이름으로 시도하십시오. – Andre

+0

이것은 실제 코드가 아니므로 step은 변수 이름이 아닙니다. 나는 "단계"를 "s"로 변경하기 위해 그것을 편집했습니다. – Eric

+0

당신의 _actual_ 코드에 어떤 일이 일어나고 있는지 알지 못하지만 예제 코드는 0에 도달하지 않을 것입니다.'s' 또는't'에 초기 값을주지 않으므로't = t - s'는 항상't = 0 -0'이므로't'는 결코 0이 아니며 항상 = 0이됩니다. –

답변

0

코드에 누락 된 코드가있어서 결과를 재현 할 수 없습니다. 1212.24489795918의 값으로 호출

이 (t = 1188의 첫 번째 연산을 얻기 위해), 루프가 종료되고 결과는 (쉼표 내 소수 구분이다)

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 

그러나들로부터 멀리하여 29.7 값.

그래서 미치광이가 가리킨 것처럼 보입니다.

관련 문제