我正在尋找刪除工作簿中的第二張和第三張數百張紙。因此,保留表1,4,7,10 ...並刪除其餘使用VBA刪除工作簿中的每第二張和第三張
我遇到問題,因爲索引重置與我刪除的每張工作表,因爲循環與我的呈現問題。
任何想法?
謝謝!
我正在尋找刪除工作簿中的第二張和第三張數百張紙。因此,保留表1,4,7,10 ...並刪除其餘使用VBA刪除工作簿中的每第二張和第三張
我遇到問題,因爲索引重置與我刪除的每張工作表,因爲循環與我的呈現問題。
任何想法?
謝謝!
從年底河套開始,而不是開始(在從列表中刪除的事情,當任何編碼語言總是好的做法)
只要保持一個計數器運行,你去那計數到三端並重新設置,確保首先將其設置爲適當地作用於最後一張紙上(也就是用數學計算出最後一張紙是否是「第一張」,「第二張」或「第三張」紙)
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
輝煌。謝謝! – Nechama
雖然托馬斯的答案可能是要走的路,這裏是另一種方法,將只運行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
這當然是我會去的方法,刪除一個快速移動B-) –
很酷的斯科特 –
你可以發表你試過的懇求嗎? –
什麼是你的表格名稱?他們喜歡Sheet1,Sheet2,Sheet3 ...還是隨機單詞? –