{A2、A3、...}のリストと名前サマリーのシートを除いて、現在のブック内のすべてのシートを削除します。 私は、次のコードVBAを使用して指定された名前のセットまですべてのシートを削除
Dim MyCell As Range, MyRange As Range
Set MyRange = Sheets("Summary").Range("A2")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wbook = ActiveWorkbook
For Each xWs In wbook.Worksheets
For Each MyCell In MyRange
If xWs.Name <> MyCell.Value And xWs.Name <> "Summary" Then
xWs.Delete
End If
Next MyCell
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
を書いたが、私はそれが何であるかわからない、実行時エラーが表示されます。 その後、私は行ずつ実行してみました:「xWs.Name =概要」を超える最初のループでは何の問題は、私はこのコードがあることを知っている私は
If xWs.Name <> MyCell.Value And xWs.Name <> "Summary" Then
でエラーを取得する第二のシートのために最初は存在しません名前が一致しても名前の集合まで実行されているので、効率的ではありません。しかし、私は効率的な方法でVBAのトウセットをどのように比較できるか分かりませんでした。 では、A列の名前のリストを見ることができます。
あなたの範囲(A2、A3、...)にその名前を持つシートなしの文字列を持っている場合、それはエラーがスローされます。リスト内のすべてのワークシート名が存在することを確認しましたか? –
以下のコードを試してください –
@ShaiRado:私は写真を追加しました。すべてのワークシート名がリストに表示されるべきではありません。それはリストの中の名前を持つシートだけを保つことです。 – maniA