当前位置:编程学习 > VB >>

怎么解决“用户定义类型未定义错误”

问题源于:在是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有些不同,想修改难度很大。 --------------------编程问答--------------------
引用 4 楼  的回复:
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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,