代码如下,问题如题:Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongPrivate Sub Command1_Click()
s = "debug.print 1>" & """2007-1-2"""
EbExecuteLine StrPtr(s), 0&, 0&, 0&
End Sub4小时没能解决,只好等高手了!
s = "debug.print 1>" & """2007-1-2"""
EbExecuteLine StrPtr(s), 0&, 0&, 0&
End Sub4小时没能解决,只好等高手了!
on error resume next
s = "debug.print 1>" & """2007-1-2"""
EbExecuteLine StrPtr(s), 0&, 0&, 0&
End Sub
Private Declare Function EbExecuteLine Lib "vba6.dll" _
(ByVal pStringToExec As Long, ByVal Foo1 As Long, _
ByVal Foo2 As Long, ByVal fCheckOnly As Long) As LongPrivate Sub Command1_Click()
Dim s As String
s = "debug.print cstr(1)>" & """2007-1-2"""
EbExecuteLine StrPtr(s), 0&, 0&, 0&
End Sub
private sub ....
on error goto aaaexit sub
aaa:
'空
2、 on error 根本就捕获不到错误。孤独剑和罗峰无痕的解法不行,这个问题看上去简单,解决起来可不一定简单啊。要不然我也不会花4个小时解决。问题的目标是计算一个不可预知的表达式字符串的值,但该表达式可能不合法。如何避免出现 "类型不匹配“的错误弹出。也不一定非得限于使用 EbExecuteLine 这个api,有其他的解决办法也行啊!继续期待答案。
-_-b
' 引用 Microsoft Script Control
Option ExplicitPrivate Sub Form_Load()
Text1.Text = ""
' Text1 = "8+25*sqr(6)"
End SubPrivate Sub Command1_Click()
Dim SC As New ScriptControl, s As String
On Error GoTo E_Handle
If (Text1 = "") Then MsgBox "请输入表达式!", 48: Exit Sub
SC.Language = "VBscript"
SC.AddObject "form1", Form1
s = Replace("Form1.Text1 = ""$ = "" & (", "$", Text1) & Text1.Text & ")"
Call SC.ExecuteStatement(s)
Exit Sub
E_Handle:
MsgBox "出现异常!", 48
End Sub
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByRef pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As LongDim s As String
Private Sub Command1_Click()
Dim lngP As Long
s = "debug.print 1>" & """2007-1-2"""
EbExecuteLine StrPtr(s), 0, 0, 0
Debug.Print s
Debug.Print GetLastError
End Sub这样不报错,且GetLastError没有返回错误
用ScriptControl 解决比较妥当