所有
我刚升级到 Excel 2013 ,遇到了一个奇怪的问题。我有一个启用宏的工作簿,已经成功工作了很长一段时间。我正在更新一些代码,并在尝试写入特定工作表时遇到此错误(32809)。在故障排除中,我尝试了这个。
Sheets("Summary").Range("G8").Value = "Test"
这导致了同样的错误。然后我试了一下。
Debug.Print ActiveSheet.Name
同样的错误。所以我在工作簿上选择了另一个工作表,并在名称上选择了debug.print。工作得很好。
然后我试了一下。
Debug.Print Sheets(2).Name
(这是问题表的表格编号)
同样的错误。在我看来,这张表有一些形式的腐败,但我对删除和重新创建保持沉默。有什么建议吗?
谢谢!
答案 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仍然会得到运行时错误。简而言之,我尝试了以下几点:
我的后续运行时错误又发生了一次崩溃,重复了上面的步骤,它再次成为一种魅力。