我将继续构建与从大型机检索到的数据相关的宏,类似于我previous questions中提到的。
我正在使用基于我所讨论的自动筛选条件here的宏扩展名生成大量工作表。出于参考目的,此代码的精简版本如下:
Sub AddSheets()
Dim RngOne As Range, cell As Range
For Each cell In RngOne
Sheets.Add After:=Sheets(1)
Sheets(2).Select
Sheets(2).Name = cell.Value
Next
End Sub
当我处理数据集时,我的用户可能有必要删除导出到其选定目的地后生成的工作表。但是,为了便于使用,我试图保留那些与我的宏相关的表格。 OR
条件下保留的页数超过2,出于讨论目的,最多可达10或更多。我目前的代码改编自site。我还审核了这个SO article。
我的代码如下:
Sub DeleteAllButNotedSheets()
Dim IndividualWorkSheet As Worksheet
Application.DisplayAlerts = False
For Each IndividualWorkSheet In ThisWorkbook.Worksheets
If IndividualWorkSheet.Name <> "Sheet1" Or "Criteria" Or "TemplateSheet" Or "TemplateSheet2" Then
IndividualWorkSheet.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
目前,代码导致类型不匹配错误。我正在寻求解决这个错误的困境。
除此之外,考虑到可能的条件数量,我还试图确定是否可以使用列表,集合甚至数组(给定循环)而不是巨型OR
列表,对我来说似乎很笨拙。我正在寻求解决这个列表问题的修复甚至建议。
答案 0 :(得分:2)
tmp = IndividualWorkSheet.Name
If tmp <> "Sheet1" And tmp <> "Criteria" And _
tmp <> "TemplateSheet" And tmp <> "TemplateSheet2" Then
IndividualWorkSheet.Delete
End If
基于数组的方法:
Dim arr
arr = Array("Sheet1", "Criteria", "TemplateSheet", "TemplateSheet2")
If IsError(Application.Match(IndividualWorkSheet.Name, arr, 0)) Then
IndividualWorkSheet.Delete
End If