忽略"用户定义的类型未定义"错误

时间:2015-08-10 07:28:03

标签: vba

我的用户定义类型未定义"有问题,但我不想解决它,我想忽略它。

word文档中的

情境:(.docm)我使用外部dll(C#,由我创建,我可以控制它)。此dll用于改进对文档的控制(导入模型部件/搜索依赖参数/ ...)。 dll定义特定的用户类型

当用户单击按钮时,将调用自定义dll。它检查dll是否加载。如果没有,它会显示一条消息,例如"已禁用操作"

电话的例子:

' This call is from "ThisDocument"
Private Sub planAction_Click()
    ' If the dll is not load, display warning message
    If Not MqDllInstalled Then
        Call MsgBox("Actions disabled", vbInformation, "Action unavailable")
        Exit Sub
    End If

    ' This function is in a module
    Call FuncPlanAction
End Sub

打电话

Public Sub FuncPlanAction()
    ...
    If exist Then
        ' WordElementType_PlanAction is a "User-Type Defined"
        Call GotoTable(WordElementType_PlanAction, Now)
    End If
    ...
End Sub

和GotoTable的定义

Private Sub GotoTable(ByVal name As WordElementType, ByVal dt As Date)

因此,如果我点击按钮" planAction",而不是仅显示消息"禁用操作",它会引发"用户定义的类型未定义" ;因为它试图解析FuncPlanAction。

我想要的是什么:没有错误提升。

为什么不解决:文档必须是共享的,如果引用不可用,我只是禁用高级功能。

我所知道的:

  • 问题来自:引用未解决,因此找不到用户定义的类型
  • VBA编译器的工作原理:它在调用完成后尝试加载模块(如果此模块调用另一个模块,则会发生同样的事情)。因此,在我使用用户类型的用户呼叫模块之前,没有"用户类型"会提高。

我尝试了什么:

  • 我有一个模块独立模块" LoadDll"未定义用户类型以尝试加载自定义DLL。如果他无法加载dll / tlb,则加载时不会出现错误。
  • 使用On error goto / On error resume nextplanAction_ClickFuncPlanAction
  • 围绕来电者
  • 将该功能放在另一个模块

有谁知道如何捕获此错误?不要提高它?还有其他建议吗?

先谢谢

1 个答案:

答案 0 :(得分:2)

尝试替换此行

Call FuncPlanAction

用这个

Call Application.Run("FuncPlanAction")