【问题标题】:How to debug an Excel Auto-Open macro before executing it?如何在执行 Excel 自动打开宏之前对其进行调试?
【发布时间】:2019-01-19 01:54:17
【问题描述】:

我被要求修复宏无法正常工作的 Excel 工作簿。工作簿包含一个自动打开宏,它可以更改内容,包括隐藏或删除工作表,一旦运行完成,第二次运行总是崩溃,因为它试图选择以前删除的工作表。

我想逐步完成自动打开,但问题是:
如果我打开工作簿并选择禁用宏,则无法查看宏。
如果我打开工作簿并选择不禁用宏自动打开在我可以停止之前运行。

如何在首次运行时逐步完成自动打开?

【问题讨论】:

  • 禁用宏不应阻止您查看它们。
  • 我同意。如果我禁用了宏并尝试查看宏,我会看到“运行”或“进入”选项以及“编辑”、“创建”、“删除”和“选项...”的禁用(灰色)选项如果我选择“Step into” 我收到一条对话框消息,告诉我必须重新打开工作簿并选择启用宏。
  • @BrianLowe 按 Alt+F11 打开 VB 编辑器。即使宏被禁用,您也应该看到它们。
  • 点击 VBAProject + 加号查看工作表和模块。
  • Workbook_Open 将位于 Microsoft Excel 对象 下的 ThisWorkbook 中。双击它,它会在编辑器的右侧显示方法。如果这不起作用,您会在右侧的平底锅中找到两个 DropDowns。在第一个下拉列表中选择 Workbook,在第二个下拉列表中选择 Open

标签: excel vba debugging


【解决方案1】:

完整的答案在 cmets 中。

宏在禁用时可用于编辑或调试,但您需要使用 Microsoft Excel 对象展开树视图中的右键单击上下文菜单将代码加载到编辑面板中(单击显示空白面板) .

我将“停止”作为自动打开宏中的第一个命令并保存了工作簿。在重新打开工作簿时,我可以选择启用宏并让 Auto-Open 运行,然后直接跳转到调试器以在第一次运行时单步执行。

【讨论】:

    【解决方案2】:

    Debug.Assert False

    您可以将其作为第一行插入到自动打开子例程中

    Debug.Assert Condition如果Condition = False会停止代码并提示调试

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 2012-06-16
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多