基于多个工作表条件删除工作表
问题描述:
我正在继续构建与从大型机检索到的数据相关的宏,与我的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。
我的代码如下:
目前,该代码会导致类型不匹配错误。我正在寻求解决这个错误的难题。
除此之外,考虑到可能条件的数量,我也试图确定列表,集合或者甚至是一个数组(甚至可以使用循环)可以用来代替巨大的列表,这似乎很笨拙我。我正在寻求解决方法,甚至建议开始处理此列表问题。
答
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
当然!如果和声明。它应该发生在我身上。有关将If和语句压缩到列表的任何建议? – JackOrange* 2012-08-09 17:40:09
请参阅我的编辑,了解如何使用一组表名。 – 2012-08-09 18:00:39
嗯,非常有创意!我会搜索一个= !,也就是类型的条件,而不是使用错误检查机制。 VBA对于条件语言似乎需要一个非常不同的循环,数组和类似的心态......再次感谢蒂姆! =) – JackOrange* 2012-08-09 18:08:57