2016-07-13 99 views
-1

我正在尋找刪除工作簿中的第二張和第三張數百張紙。因此,保留表1,4,7,10 ...並刪除其餘使用VBA刪除工作簿中的每第二張和第三張

我遇到問題,因爲索引重置與我刪除的每張工作表,因爲循環與我的呈現問題。

任何想法?

謝謝!

+0

你可以發表你試過的懇求嗎? –

+0

什麼是你的表格名稱?他們喜歡Sheet1,Sheet2,Sheet3 ...還是隨機單詞? –

回答

0

從年底河套開始,而不是開始(在從列表中刪除的事情,當任何編碼語言總是好的做法)

只要保持一個計數器運行,你去那計數到三端並重新設置,確保首先將其設置爲適當地作用於最後一張紙上(也就是用數學計算出最後一張紙是否是「第一張」,「第二張」或「第三張」紙)

3

RGA是正確的,你應該從最後一個循環刪除。索引模式3將爲1,4,7,10,13,16 .ect返回1。

Sub DeleteEvery2ndAnd3rdSheet() 
    Application.DisplayAlerts = False 

    Dim i As Integer 
    For i = Worksheets.Count To 1 Step -1 
     If i Mod 3 <> 1 Then Worksheets(i).Delete 
    Next 

    Application.DisplayAlerts = True 

End Sub 
+0

輝煌。謝謝! – Nechama

2

雖然托馬斯的答案可能是要走的路,這裏是另一種方法,將只運行Delete聲明一次。

Sub Delete2nd3rdSheets() 

Dim sSheetsToRemove As String 
Dim i As Integer 

Dim ws As Worksheet 
For Each ws In ThisWorkbook.Worksheets 

    If ws.Index Mod 3 <> 1 Then 
     sSheetsToRemove = sSheetsToRemove & "," & ws.Name 
    End If 

Next 

sSheetsToRemove = Mid(sSheetsToRemove, 2) 

Dim arrDeleteSheets() As String 
arrDeleteSheets = Split(sSheetsToRemove, ",") 

Application.DisplayAlerts = False 
Worksheets(arrDeleteSheets).Delete 
Application.DisplayAlerts = True 

End Sub 
+0

這當然是我會去的方法,刪除一個快速移動B-) –

+1

很酷的斯科特 –

相關問題