作者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