Board logo

標題: 有關Excel vba中的Do Loop不太明白 [打印本頁]

作者: drgv11    時間: 2015-12-3 21:39     標題: 有關Excel vba中的Do Loop不太明白

有關Excel vba中的Do Loop不太明白
新手學習 不太會用Do Loop

應該如何在Excel vba中用Do Loop 編寫以下情況

首先有一算式
b=a+20-40+5
a是一個數值, 現在想求出a是多少, 才會使b=0

一開始我是不知道a的值是多少 只是隨便輸出一數值 例如a=4
將這個a=4代入數式b=a+20-40+5
如果得出的b是大於及少於零(b>0, b<0) 的時候
它能幫我不斷嘗試a=另一個數值, 從而求出a是多少會使b=0
當得出b=0的時候
它又會進入下一步
例如 計算: c=b+10

請幫忙
謝謝
作者: owen06    時間: 2015-12-4 08:55

回復 1# drgv11

這樣對嗎?
  1. Sub test()
  2. a = 0
  3. b = 20 - 40 + 5
  4. Do Until a + b = 0
  5. If b >= 0 Then a = a - 1
  6. If b <= 0 Then a = a + 1
  7. Loop
  8. c = a + 10
  9. MsgBox c
  10. End Sub
複製代碼

作者: drgv11    時間: 2015-12-5 11:00

回復 2# owen06

謝謝大大
作者: drgv11    時間: 2015-12-5 11:34

回復 2# owen06
大大
如果  b=a×sin45°-20
應該怎樣寫??
作者: c590524    時間: 2015-12-6 08:24

了解
應該要買一本VBA書籍
謝謝
作者: Scott090    時間: 2015-12-6 10:22

回復 4# drgv11

Do ... Loop 舉例演示:
  1. Option Explicit

  2. Sub DoLoopTest()
  3. Dim a#, b#, h#
  4. Dim Rad#, c#
  5. Dim iter%, IterMax%
  6. Const e = 0.00000001        '誤差許可值
  7. Const Pi = 3.14159265358979

  8. IterMax = 500               '最高搜尋迭代數

  9. Rad = Pi * 45 / 180

  10. a = 100     '初始值
  11. h = 5       '初始搜尋步長
  12. Do
  13.     b = a * Sin(Rad) - 20
  14.     If Abs(b) < e Then Exit Do      '浮點數運算很難得到完全相等
  15.     If b > 0 Then
  16.         a = a - h
  17.     Else
  18.         h = h * 0.5
  19.         a = a + h
  20.     End If
  21.     iter = iter + 1
  22. Loop While iter < IterMax    '無解時可以跳出 迴圈
  23. Debug.Print
  24. Debug.Print "  iter = " & iter
  25. Debug.Print "Ans. a = " & a
  26. Debug.Print "     h = " & h
  27. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)