【发布时间】:2016-12-22 17:22:05
【问题描述】:
我在尝试删除工作簿中的大多数工作表然后将它们重新添加时一直遇到错误。
我无法删除工作簿中的所有工作表;至少需要一张纸。美好的。所以我首先创建了一个名为TempSheet 的工作表。
targetWorkbook = ActiveWorkbook.Name
'/* ...more code... */
Application.Workbooks(targetWorkbook).Activate
Application.Workbooks(targetWorkbook).Worksheets.Add.Name = "TempSheet"
所以现在,我想删除工作簿中除TempSheet 之外的所有工作表。所以我正在尝试这样做:
For Each ws1 In Application.Workbooks(targetWorkbook).Worksheets
If ws1.Name <> "TempSheet" Then
Workbooks(targetWorkbook).Sheets(ws1.Name).Delete '/* Line X. */
End If
Next
当我单步执行我的代码并到达 Line X 时,我收到错误 Can't enter break mode at this time。我试过用ws1.Delete 替换Line X 上的所有代码,我得到了同样的信息。我想至少单步执行代码,以便看到被删除的工作表。
我的代码的另一部分是,我想从另一个工作簿中取出所有工作表,并将它们放在我从上面删除所有工作表的第一个工作簿中。我的代码如下:
Application.Workbooks("OtherWorkbook").Activate '/* Line Y. */
For Each ws2 In Application.Workbooks(sheetsWorkbook).Worksheets
ws2.Copy After:=Workbooks(targetWorkbook).Sheets(ws1.Name)
Next
我在Line Y 上设置了一个断点,在收到Can't enter break mode at this time 错误后,我点击了Continue 按钮。我没有在断点处停止,而是收到错误Run-time error '424'. Object required,它没有显示它指的是哪一行,也不允许我调试(按钮是灰色的,我可以选择的唯一按钮是end)。
关于如何实现这一点的任何建议?
【问题讨论】:
-
您能否尝试用一些禁用事件、警报、屏幕更新和计算来封闭您的删除循环?
-
什么是ws1?它是 Dimed 作为工作表吗?
-
既然要删除所有工作表,为什么不从新工作簿开始呢?
标签: excel vba runtime-error