何百枚ものブックを含むブックで2番目と3番目のシートを削除します。だから、シート1,4,7,10を保持して残りを削除してくださいVBAを使用してブック内の2番目と3番目のシートを1つずつ削除します
私が問題を提示しているので、私が削除するすべてのシートでインデックスがリセットされるため、私は問題に遭遇しています。
アイデア?
ありがとうございます!あなたはそれが3までカウントして行くよう
何百枚ものブックを含むブックで2番目と3番目のシートを削除します。だから、シート1,4,7,10を保持して残りを削除してくださいVBAを使用してブック内の2番目と3番目のシートを1つずつ削除します
私が問題を提示しているので、私が削除するすべてのシートでインデックスがリセットされるため、私は問題に遭遇しています。
アイデア?
ありがとうございます!あなたはそれが3までカウントして行くよう
端から(のリストから任意のコーディング言語を物事を削除するときは常に良い習慣を)終始代わりの先頭にループ
だけで実行されているカウンタを維持最初のシートが第1、第2、または第3のシートであるかどうかを数値で把握してください)
RGA is削除するときに最後から最初にループする必要があります。インデックスmod 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
これは確かに私が行くだろうアプローチは、1つの迅速な移動を削除するB-) –
かなりクールなスコット –
あなたはあなたが嘆願したことを投稿できますか? –
シートの名前は何ですか?彼らはSheet1、Sheet2、Sheet3 ...またはランダムな単語のようなものですか? –