作者tp6b123 (Luke)
看板Visual_Basic
標題[VBA ]Byref 引數型態不符 問題
時間Tue Oct 12 15:31:54 2010
Private Sub CommandButton1_Click()
Dim xl, xr As Double
Dim i, n As Integer
xl = Val(TB1.Text)
xr = Val(TB2.Text)
n = Val(TB3.Text)
For i = 1 To n
TB4.Text = Bicondition(xl, xr) <============問題出在這邊的引數
Next i 說是 ByRef 引數型態不符
End Sub
Function Bicondition(xl As Double, xr As Double) As Double
Dim xm As Double
xm = (xl + xr) / 2#
If (infun(xl) * infun(xm) = 0 Or infun(xm) * infun(xr) = 0) Then
Exit Function
ElseIf (infun(xl) * infun(xm) < 0) Then
xr = xm
ElseIf (infun(xm) * infun(xr) < 0) Then
xl = xm
End If
Bicondition = xm
End Function
Function infun(x As Double) As Double
infun = x ^ 3 + 3 * x - 1
End Function
我要寫的是一個binary search 同樣的程式碼在Fortran c++裡面可以跑@@
但是放到VBA就不行了,因為是新接觸的不太熟想來問問看=口=
應該是很基本的問題,希望有人能幫幫我,感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.184.49.203
1F:推 Marty:Dim xl as Double (換行) Dim xr As Double 10/12 15:42
2F:→ tp6b123:為什麼這樣就可以了@@ 10/12 16:27
3F:→ tp6b123:所以vba宣告一定要一個一個宣告嗎? 10/12 16:27
4F:→ tp6b123:感謝 10/12 16:27
5F:→ MOONRAKER:或者dim xl as double, xr as double 10/12 17:57
6F:→ MOONRAKER:省略as子句就會被當成integer處理 10/12 17:57
7F:→ tp6b123:原來如此,3Q 10/12 18:11
8F:推 fumizuki:沒有明確定義型態就是Variant,依變數的內容決定型態 10/12 23:13
9F:推 fumizuki:vb6預設參數傳遞是ByRef 10/12 23:14
10F:→ fumizuki:vba同vb6 10/12 23:14