2016-06-22 201 views
0

我知道这个问题已经经常讨论,但我仍然无法找到它的修复程序 。我得到Subscript out of range error,这发生在 开启和关闭。下标超出范围错误 - Excel VBA

有时程序运行,但有时它会被卡住。

  • 该程序卡在以下行。
  • 与其他工作表相同的声明没有这个问题。
  • 我只打开一个工作簿,我更喜欢 使用Activeworkbook而不是指定Excel文件。

    设置shAuditTrail =

enter image description here 我曾尝试以下

  1. 切换代码ActiveWorkbook.Sheets( “审计跟踪”)来命名Sheet5,而不是工作表的名称。
  2. 通过打印出 即时窗口中的所有工作表名称,确保名称正确。

好吧,我打开并修复该文件后,它似乎工作。对于那些不知道如何打开和修复损坏的工作簿的人,以下是步骤 (来自MS支持)。

this博客提供了一些有关解决同一问题的提示。 (虽然它没有提供修复工作簿的解决方案。)

我欣赏所有那些回应并试图提供帮助的人。

enter image description here

+0

很难说这里发生了什么。在你设置它之前变量是空的还是空的?代码有时可以运行吗?你完全确定你指的是正确的工作簿? – brettdj

+0

我只打开一个工作簿。并且其他工作表不会发生此错误。是的,变量在设置之前是空的。我还能尝试什么? – Dombey

+1

现在猜测。建议您选择所有工作表,右键单击,选择“移动或复制”,勾选“创建副本”并将其移动到新的工作簿。移动你的代码。这应该重新生成工作表,并将工作簿的腐败视为一种可能性。 – brettdj

回答

3

我只有一个工作簿打开,我更喜欢使用Activeworkbook,而不是指定Excel文件。

如果你的宏永远只打算在同一Workbook对审计跟踪Worksheet运行,那么你应该使用ThisWorkbook

Set shAuditTrail = ThisWorkbook.Worksheets("AuditTrail") 
+0

同意Robin ...最好使用ThisWorkbook。当代码运行时,如果该工作簿没有名为“AuditTrail”的工作表,则可能会打开并激活另一个工作簿,那么您将得到该错误。 – mongoose36

+0

从OP的帖子来看,这不是解决问题的方法。 – brettdj