我有一张带有VBA代码的excel表来调用userform。当我运行该userform时,其中一条指令是删除工作表(但是因为它首先调用了userform,我怀疑该工作表上的代码仍然在运行)。最终会留下一个"鬼"在VBA Microsoft Excel对象列表中后面的工作表。当选项显示为灰色时,您无法删除这些工作表。结果我积累了大量的幽灵"片材。
表格上的代码:
Private Sub CommandButton1_Click()
Call Show_UserForm
End Sub
非常感谢有关此问题的任何建议或帮助。
答案 0 :(得分:0)
留下的“鬼”表只是对象的代码。
由于您要删除调用例程的工作表,我不确定会产生什么效果,但您可以使用ThisWorkbook.VBProject.VBComponents("XXX").Delete
方法删除这些工作表,其中XXX
是{对象的{1}}。
答案 1 :(得分:0)
我遇到了类似的问题;因此我想我会发帖,以防万一。我从excel中删除的工作表作为对象存在,我无法手动删除工作表。当我检查属性时,我看到属性'Visible'设置为2(xlSheetVeryHidden)。我将它们更改为-1然后我能够删除所有这些。我使用以下代码删除了工作表。
但是,我不确定是什么原因导致床单不可见。我的excel的第一张表中有一个引用链接到已删除的页面,这可能导致了这一点。
Sub deleteGhosts()
Dim wb As Workbook
Dim tabname As String
Set wb = ThisWorkbook
For Each Sheet In wb.Worksheets
tabname = Sheet.Name
If wb.Worksheets(tabname).Visible = 2 Then
MsgBox "Deleting " + tabname
wb.Worksheets(tabname).Visible = -1
wb.Worksheets(tabname).Delete
End If
Next Sheet
End Sub