- ベストアンサー
VBAでシートの選択、削除について
シートA,B,C,D~とありB以降全てを選択して削除する方法はありますか? シートの数はマクロの実行の度に変わるので直接B,C,D~と選択することはできません。 どなたかよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
これが一番簡単かな? 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
その他の回答 (3)
- MARU4812
- ベストアンサー率43% (196/452)
手作業でも簡単にできるよね、これ。 1)Bシート選択 2)シートのメニューから「全てのシートを選択」 3)Aシートの選択をCtrl押しながら解除 4)選択されているシートのメニューから「削除」
シンプルに下記のような方法で如何でしょう。 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)
For Each sht In Worksheets Application.DisplayAlerts = False sht.Delete Application.DisplayAlerts = True Next これを実行すると、全てのシートをバッサバッサと削除する 削除(Delete)の実行に際して、条件をつけて判断すれば必要なシートを残しそれ以外を全削除って事も出来る
お礼
2番目の方法で作成しました、ありがとうございます。