运行时错误'32809':应用程序定义的错误或对象定义的错误

时间:2015-09-26 18:17:46

标签: vba excel-vba excel-2013 excel

所有

我刚升级到 Excel 2013 ,遇到了一个奇怪的问题。我有一个启用宏的工作簿,已经成功工作了很长一段时间。我正在更新一些代码,并在尝试写入特定工作表时遇到此错误(32809)。在故障排除中,我尝试了这个。

Sheets("Summary").Range("G8").Value = "Test"

这导致了同样的错误。然后我试了一下。

Debug.Print ActiveSheet.Name

同样的错误。所以我在工作簿上选择了另一个工作表,并在名称上选择了debug.print。工作得很好。

然后我试了一下。

Debug.Print Sheets(2).Name (这是问题表的表格编号)

同样的错误。在我看来,这张表有一些形式的腐败,但我对删除和重新创建保持沉默。有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

虽然它不是一个完美的解决方案,但我最终解决了这个问题。我有一个仍在Excel 2010上的用户复制同一工作簿中的损坏工作表,删除损坏的工作表,然后将新工作表重命名为原始名称。然后,我可以毫无问题地在Excel 2013中使用工作簿。

答案 1 :(得分:1)

我有一个工作簿打开宏,它会在打开时计算表中的行数,以便我可以总结在数据输入会话期间添加或删除的记录数:

Private Sub Workbook_Open()
    Dim TotalRows As Integer
    TotalRows = Worksheets("Data").ListObjects(1).ListRows.Count
    If Range("LastRecordOnStart") <> TotalRows Then Range("LastRecordOnStart") = TotalRows
'    Stop
End Sub

每次打开工作簿时,我开始在调试器中突出显示以上代码中的以下行运行时错误'32809'...

TotalRows = Worksheets("Data").ListObjects(1).ListRows.Count

在另一台PC上重新启动或打开工作簿仍然无法修复它。即使打开以前保存的工作副本也会产生同样的错误 - 很奇怪。注意:

编码时,我会定期保存工作簿并使用Windows资源管理器复制工作簿的快照,在该工作簿中创建myworkbook副本(1).xlsm,copy(2).xlsm等,如果我得到损坏的工作簿,我将其重命名为myworkbook.bad.xlsm并将最新保存的工作版本(例如myworkbook copy(6).xlsm重命名为MyWorkbook.xlsm,损失最小。

当发生此运行时错误时,我不得不多次重建该书。只有当在打开Userform的长时间调试新代码之后工作簿崩溃并且我必须从任务管理器关闭excel时,才会发生这种情况。

我今天在这里阅读了这些帖子,并确信当我可以在另一张纸上列出listrows数量并且如果我将“数据”工作表上的Listobject转换回范围并重新创建表格时它与页面相关,我' d仍然会得到运行时错误。简而言之,我尝试了以下几点:

  1. 打开工作簿
  2. 弹出错误时,点击调试
  3. 右键单击WorkBook_Open子的“End Sub”行,然后单击“Set Next statement”
  4. F5 以允许代码完成执行
  5. 保存了工作簿,现在一切正常!
  6. 我的后续运行时错误又发生了一次崩溃,重复了上面的步骤,它再次成为一种魅力。