0

朋友们,我正在尝试在使用打印输出命令时禁用显示警报。代码不起作用,因为我收到运行时错误,例如“只读”、“字转换器”、“无效的引用类型”。我想压制所有这些错误。我的代码在下面您能否确认如何在 2007 年对同一个单词进行编码,这在 2003 年的单词中可以正常工作。

    If optCentral.Value = False Then
        Set oPrint = GetObject(lbxResults.List(varLoop))
    End If
End If

If optCentral.Value = True Then
    'do nothing, already copied
ElseIf optPtrOver.Value = True Then
    With oPrint
        'Store existing print settings
        bValueStoreUFAP = .Application.Options.UpdateFieldsAtPrint
        bValueStoreULAP = .Application.Options.UpdateLinksAtPrint
        bValueStoreDisplayAllerts = .Application.DisplayAlerts

        'Change print settings, stops unwanted pop-up boxes
        .Application.Options.UpdateFieldsAtPrint = False
        .Application.Options.UpdateLinksAtPrint = False
        .Application.DisplayAlerts = wdAlertsNone

        'Print document
        .PrintOut copies:=varCopies

        'Restore original print settings
        .Application.Options.UpdateFieldsAtPrint = bValueStoreUFAP
        .Application.Options.UpdateLinksAtPrint = bValueStoreULAP
        .Application.DisplayAlerts = bValueStoreDisplayAllerts

        .Saved = True
        .Close
4

1 回答 1

0

在 VBA 代码块(SubFunction)的开头,将第一行设为:

On Error Resume Next

这可以让你做你想做的事。

一般来说,这是不好的做法。这将是一个草率且危险的解决方案。VBA 提供了很好的错误处理工具,您可以应用这些工具。抑制错误报告的后果是巨大的。

也就是说,使用该Resume Next指令实际上可以很好地进行初始故障排除。完全取决于您的情况,它甚至可能是一个适当的解决方案。

如果您仍然收到错误,那么您正在处理 Word 文档或文件结构中的问题。我认为这很可能。在这种情况下,您将在解决问题方面向前迈出一大步。只是不要忘记删除Resume Next指令。

于 2013-06-30T18:31:46.127 回答