2012-08-09 130 views
0

我正在繼續構建與從大型機檢索到的數據相關的宏,與我的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

我的代碼如下:

​​

目前,該代碼會導致類型不匹配錯誤。我正在尋求解決這個錯誤的難題。

除此之外,考慮到可能條件的數量,我也試圖確定列表,集合或者甚至是一個數組(甚至可以使用循環)可以用來代替巨大的列表,這似乎很笨拙我。我正在尋求解決方法,甚至建議開始處理此列表問題。

回答

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 
+0

當然!如果和聲明。它應該發生在我身上。有關將If和語句壓縮到列表的任何建議? – JackOrangeLantern 2012-08-09 17:40:09

+0

請參閱我的編輯,瞭解如何使用一組表名。 – 2012-08-09 18:00:39

+0

嗯,非常有創意!我會搜索一個= !,也就是<>類型的條件,而不是使用錯誤檢查機制。 VBA對於條件語言似乎需要一個非常不同的循環,數組和類似的心態......再次感謝蒂姆! =) – JackOrangeLantern 2012-08-09 18:08:57

相關問題