怎么解决“用户定义类型未定义错误”
问题源于:在是EXCEL中引用一个DLL[VBAPrj]待解决问题:当不存在所需要的引用[VBAPrj]时,提示“所需要的引用[VBAPrj]不存在!”
================================================================================
EXCEL中的宏:
Sub ErrorTest()
On Error GoTo errHand
Dim a As New VBACls \当我把EXCEL中所需要的引用[VBAPrj]去掉时,这里提示用户定义类型未定义,不会转到错误处理行。
a.test
Exit Sub
errHand:
MsgBox ("所需要的引用不存在!")
End Sub
===================================================================================================
有没办法实现:当不存在所需要的引用[VBAPrj]时,提示“所需要的引用[VBAPrj]不存在!”,即转到errHand行?
--------------------编程问答-------------------- 恐怕不行。
-_-!!!
--------------------编程问答-------------------- 1#说的对,这样不成。 --------------------编程问答-------------------- 编译都没法通过,怎么可能会跳到错误处理语句里去- -# --------------------编程问答-------------------- VBA和VB有些不同,想修改难度很大。 --------------------编程问答--------------------
有什么‘不同’!VB中还不是不能出“用户定义类型未定义”的问题。
有这问题,编译都不能通过。
--------------------编程问答-------------------- 可以用后期绑定来捕获错误:
Sub ErrorTest()
Dim a As Object
On Error GoTo errHand
Set a = CreateObject("VBACls")
a.test
Exit Sub
errHand:
MsgBox ("所需要的引用不存在!")
End Sub
--------------------编程问答-------------------- 上面的没对,我删不了。
当前所有引用的列表:
Sub ShowRefs()
Dim rf
For Each rf In ThisWorkbook.VBProject.References
Debug.Print rf.Name, rf.FullPath
Next
End Sub --------------------编程问答-------------------- '可以直接添加引用,然后来判断。代码如下
Sub ErrorTest()
Dim a As Object
On Error Resume Next
Set a = CreateObject("VBAPrj.VBACls")
If a Is Nothing Then
ThisWorkbook.VBProject.References.AddFromFile ("c:\VBAPrj.dll")
End If
Set a = CreateObject("VBAPrj.VBACls")
If a Is Nothing Then GoTo errHand
a.test
Exit Sub
errHand:
MsgBox ("所需要的引用不存在!")
End Sub
--------------------编程问答-------------------- 上面代码中应将第二个set语句移到if判断语句中。 --------------------编程问答-------------------- 即写成如下形式:
Sub ErrorTest()
Dim a As Object
On Error Resume Next
Set a = CreateObject("VBAPrj.VBACls")
If a Is Nothing Then
ThisWorkbook.VBProject.References.AddFromFile ("c:\VBAPrj.dll")
Set a = CreateObject("VBAPrj.VBACls")
End If
If a Is Nothing Then GoTo errHand
a.test
Exit Sub
errHand:
MsgBox ("所需要的引用不存在!")
End Sub
补充:VB , VBA