• ベストアンサー

VBAでシートの選択、削除について

シートA,B,C,D~とありB以降全てを選択して削除する方法はありますか? シートの数はマクロの実行の度に変わるので直接B,C,D~と選択することはできません。 どなたかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • emsuja
  • ベストアンサー率50% (1065/2116)
回答No.2

これが一番簡単かな? Sub Test1() Dim sheet As Object Application.DisplayAlerts = False For Each sheet In Worksheets If sheet.Name <> "A" Then Sheets(sheet.Name).Delete End If Next Application.DisplayAlerts = True End Sub でも、あとあと手直しが出てきたり条件が変わった時の事を考えると 私はこのように書きます。 Sub Test2() Dim SheetName() As String, i As Integer Dim sheet As Object For Each sheet In Worksheets i = i + 1 ReDim Preserve SheetName(i) SheetName(i) = sheet.Name Next Application.DisplayAlerts = False For i = 1 To UBound(SheetName) If SheetName(i) <> "A" Then Sheets(SheetName(i)).Delete End If Next i Application.DisplayAlerts = True End Sub

kizudora
質問者

お礼

2番目の方法で作成しました、ありがとうございます。

その他の回答 (3)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

手作業でも簡単にできるよね、これ。 1)Bシート選択 2)シートのメニューから「全てのシートを選択」 3)Aシートの選択をCtrl押しながら解除 4)選択されているシートのメニューから「削除」

noname#203218
noname#203218
回答No.3

シンプルに下記のような方法で如何でしょう。 Sub test() Dim ws As Worksheet Application.DisplayAlerts = False For Each ws In Worksheets If ws.Name <> "A" Then ws.Delete Next Application.DisplayAlerts = True End Sub

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

For Each sht In Worksheets Application.DisplayAlerts = False sht.Delete Application.DisplayAlerts = True Next これを実行すると、全てのシートをバッサバッサと削除する 削除(Delete)の実行に際して、条件をつけて判断すれば必要なシートを残しそれ以外を全削除って事も出来る

関連するQ&A