【发布时间】:2015-01-30 22:07:04
【问题描述】:
我将继续构建与从大型机检索的数据相关的宏,类似于我在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 列表,这看起来很笨拙大部头书。我正在寻求解决方案或什至建议来解决此列表问题。
【问题讨论】: