[VBA ]Byref 引數型態不符 問題

看板Visual_Basic作者 (Luke)時間15年前 (2010/10/12 15:31), 編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
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

10/12 15:42, , 1F
Dim xl as Double (換行) Dim xr As Double
10/12 15:42, 1F

10/12 16:27, , 2F
為什麼這樣就可以了@@
10/12 16:27, 2F

10/12 16:27, , 3F
所以vba宣告一定要一個一個宣告嗎?
10/12 16:27, 3F

10/12 16:27, , 4F
感謝
10/12 16:27, 4F

10/12 17:57, , 5F
或者dim xl as double, xr as double
10/12 17:57, 5F

10/12 17:57, , 6F
省略as子句就會被當成integer處理
10/12 17:57, 6F

10/12 18:11, , 7F
原來如此,3Q
10/12 18:11, 7F

10/12 23:13, , 8F
沒有明確定義型態就是Variant,依變數的內容決定型態
10/12 23:13, 8F

10/12 23:14, , 9F
vb6預設參數傳遞是ByRef
10/12 23:14, 9F

10/12 23:14, , 10F
vba同vb6
10/12 23:14, 10F
文章代碼(AID): #1Cj0xl-T (Visual_Basic)