2017-05-10 15 views
1

私は複数の並べ替えとフィルタを通過するように設定したマクロを持っており、各ステップの終わりに新しいワークシートを作成し、フィルタリングされた情報を貼り付けます。Excelの削除以前に作成されたシート

新しいブックを使用して同じブックを使用できるようにするには、前に作成したすべてのシートを削除してマクロを開始します。

私はすべてワークシートを削除するが、 "P High Offstd"を削除することはできません。

私は削除の順序を調整しようとしましたが、ワークシートを削除するさまざまな方法を調整しようとしましたが、そのワークシートを削除することを拒否しました。

名前を変更しようとしても、これはProcessing High Offstdと呼ばれていました。いかなる援助も有益であろう。

Application.ScreenUpdating = False 
For Each Sheet In ActiveWorkbook.Worksheets 
If Sheet.Name = "Processing 0% Performance" Then 
    Application.DisplayAlerts = False 
    Worksheets("Processing 0% Performance").Delete 
    Application.DisplayAlerts = True 
End If 
Next Sheet 
For Each Sheet In ActiveWorkbook.Worksheets 
If Sheet.Name = "Processing 0 OnStd" Then 
    Application.DisplayAlerts = False 
    Worksheets("Processing 0 OnStd").Delete 
    Application.DisplayAlerts = True 
End If 
Next Sheet 
For Each Sheet In ActiveWorkbook.Worksheets 
If Sheet.Name = "P High OffStd" Then 
    Application.DisplayAlerts = False 
    Worksheets("P High OffStd").Delete 
    Application.DisplayAlerts = True 
End If 
Next Sheet 
For Each Sheet In ActiveWorkbook.Worksheets 
If Sheet.Name = "Processing Low Performance" Then 
    Application.DisplayAlerts = False 
    Worksheets("Processing Low Performance").Delete 
    Application.DisplayAlerts = True 
End If 
Next Sheet 
With ActiveWorkbook.Worksheets("Processing") 
.Range("AA1:AZ" & .Range("AA1").End(xlDown).Row).ClearContents 
.Range("C3:C" & .Range("C3").End(xlDown).Row).ClearContents 
.Range("E3:E" & .Range("E3").End(xlDown).Row).ClearContents 
End With 
+2

に単純化することができます。ブックには少なくとも1枚のシートが必要です。したがって、最後のシートは削除できません。 –

+0

あなたの 'For Each Loop'でフィルターを再作成しようとしているシートを削除しないでください。この行コードはすべて不要です。 – 0m3r

+0

残念ながら最後のシートではありません。 MACROを制御するシートとソースデータを含むシートがあります。 –

答えて

0

あなたのコードは、それは、ブックの最後のシートだということだろう

With Application 
    .ScreenUpdating = False 
    .DisplayAlerts = False 
End With 

For Each Sheet In ActiveWorkbook.Worksheets 
    If Sheet.Name = "Processing 0% Performance" Or Sheet.Name = "Processing 0 OnStd" _ 
    Or Sheet.Name = "P High OffStd" Or Sheet.Name = "P High OffStd" Or Sheet.Name = "Processing Low Performance" Then 
     Sheet.Delete 
Next Sheet 

With ActiveWorkbook.Worksheets("Processing") 
    .Range("AA1:AZ" & .Range("AA1").End(xlDown).Row).ClearContents 
    .Range("C3:C" & .Range("C3").End(xlDown).Row).ClearContents 
    .Range("E3:E" & .Range("E3").End(xlDown).Row).ClearContents 
End With 
With Application 
    .DisplayAlerts = True 
    .ScreenUpdating = True 
End With 
+0

上記のコードは実際には "次のシート"でエラーが出ますが、1枚のシートを取り除くことに失敗した同様の圧縮されたコードを使用しています。 –

+0

これを実行した後、何枚のシートを残していますか?どのシートが取り除かれないのですか? – Tom

+0

1シートは "P High Offstd"という名前のシートです。このシートはワークブックの5番目のシートです。私は技術的にシート枚数を出してシート3-7を取り除くことができることを知っていますが、私はユーザーエラーを避けるためにより正確であることを望んでいました。 –

関連する問題