【问题标题】:Prevent Excel VBA code interruption with Esc key使用 Esc 键防止 Excel VBA 代码中断
【发布时间】:2016-05-17 22:04:30
【问题描述】:

如何防止 Excel VBA 代码被用户按Esc 键打断?

我正在ThisWorkbook 上尝试以下代码:

Private Sub Workbook_Open()
    On Error Resume Next
    Application.EnableCancelKey = xlDisabled
    Application.DataEntryMode = True

    Call WebPage
End Sub

但它不起作用,因为如果我在工作簿打开时按 Esc,代码会中断:

所以看起来代码甚至在工作簿打开之前就被中断了。 有没有办法解决这个问题?

感谢您的帮助!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您的工作簿似乎足够大,以至于在打开和运行代码之间存在时间延迟,这让用户有机会在此期间按下 esc。也许不是在工作簿打开时调用 WebPage,您可以让文件只是一个带有说明和一个单击按钮的“登录页面”。这让用户可以控制宏的执行,但也让您有时间在宏运行之前加载禁用转义键。

    此外,如果您确信您的错误处理将使所有功能恢复正常,您可以改用它:

    Application.InterActive = False
    

    这将阻止输入任何关键指令,包括 esc & command break。

    【讨论】:

    • 非常感谢,这是一个有趣的想法!我实际代码中的 WebPage 过程旨在验证用户,这就是在启动时调用它的原因。也许我可以在启动时显示一个用户表单?
    • 这可以做你想做的事——但首先问问自己为什么要尝试验证用户——这是一个安全问题吗?请记住,Excel 代码不一定对承诺的个人安全。您也许可以考虑让代码尝试从共享网络驱动器上的工作簿中提取数据,如果用户无权访问该网络文件夹,它将失败。请注意,我从来不需要保护提供给用户的任何数据,所以请谨慎对待我的建议。
    猜你喜欢
    • 2015-10-30
    • 2023-03-15
    • 2019-01-07
    • 2012-06-12
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2020-10-08
    相关资源
    最近更新 更多