標題:
有關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
這樣對嗎?
Sub test()
a = 0
b = 20 - 40 + 5
Do Until a + b = 0
If b >= 0 Then a = a - 1
If b <= 0 Then a = a + 1
Loop
c = a + 10
MsgBox c
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 舉例演示:
Option Explicit
Sub DoLoopTest()
Dim a#, b#, h#
Dim Rad#, c#
Dim iter%, IterMax%
Const e = 0.00000001 '誤差許可值
Const Pi = 3.14159265358979
IterMax = 500 '最高搜尋迭代數
Rad = Pi * 45 / 180
a = 100 '初始值
h = 5 '初始搜尋步長
Do
b = a * Sin(Rad) - 20
If Abs(b) < e Then Exit Do '浮點數運算很難得到完全相等
If b > 0 Then
a = a - h
Else
h = h * 0.5
a = a + h
End If
iter = iter + 1
Loop While iter < IterMax '無解時可以跳出 迴圈
Debug.Print
Debug.Print " iter = " & iter
Debug.Print "Ans. a = " & a
Debug.Print " h = " & h
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)