Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : 指定なし)
シートの削除でない場合のエラーの対処方法
投稿日時: 21/04/08 18:36:37
投稿者: yagisawa

 お世話になります。
 
 特定の名前のシートを削除したいのですが、BOOKによっては、ない場合もあり、
 ない場合はエラーになってしまいます。
 
 
 エラー回避の方法をネットで調べて以下作成してみたのですが、
 全然関係ないシートが削除されてしまいます。
 
--------------------------------------------------------
Sub シートとる()
 
On Error Resume Next
  
 Sheets("5101").Select
    ActiveWindow.SelectedSheets.Delete
 
Sheets("5102").Select
    ActiveWindow.SelectedSheets.Delete
     
Sheets("5103").Select
    ActiveWindow.SelectedSheets.Delete
     
 Sheets("6001").Select
    ActiveWindow.SelectedSheets.Delete
     
  Sheets("6002").Select
    ActiveWindow.SelectedSheets.Delete
     
Sheets("6101 給与手当").Select
    ActiveWindow.SelectedSheets.Delete
     
 Sheets("6102").Select
    ActiveWindow.SelectedSheets.Delete
     
 Sheets("6103").Select
    ActiveWindow.SelectedSheets.Delete
       
 
On Error GoTo 0
 
End Sub
 
---------------------------------------------------------------
 BOOKがたくさんあるので、できれば実現させたいです。
 
 どのようにしたらよいか教えてください。よろしくお願い致します。

回答
投稿日時: 21/04/08 19:04:18
投稿者: WinArrow
投稿者のウェブサイトに移動

問題1:存在しないシートを指定すると、削除時エラーになる
 
基本スタイル
For Each Sht In ActiveWorkbook.Sheets
    Select Case Sht.name
        Case "AAAA","BbbB","cccc"
            Sht.Delete
   End Select
Next
 
Case 行にシート名を羅列すればよいでしょう。
 
問題2:ブックによって、同名シートを削除してはいけない
ブックごとに削除したいシート名の表を作成し、
その表を参照して削除する方法があります。
 
 
 
  
 

投稿日時: 21/04/08 19:16:14
投稿者: yagisawa

 
 WinArrow 様
 
 有難うございます。
 基本スタイルで問題なく削除することができました。
 
 Eachの使い方がよくわかっていません。調べてみたいと思います。
 取り急ぎですが、助かりました。
 
 お礼申し上げます。
 
 yagisawa