
お世話になります。マクロ初心者です。
マクロでSheet1、Sheet2、Sheet3、Sheet4、の
4枚のワークシートを削除したいと思っています。
ワークシートがない場合もあるので、エラー対策をネットで調べて、
とりあえずSheet1だけ削除するマクロを作成しました。
ここまではいいのですが、IF構文がちょっと複雑で
Sheet1、Sheet2、Sheet3、Sheet4、の
4枚のワークシートを削除する場合のコードの書き方がわかりません。
すいませんが詳しい方、説明の上手な方、直接、コードで説明できる方、
教えて下さい。よろしくお願いします。
私が作成したSheet1だけ削除するマクロのコードは以下の通りです。
こちらのコードを改良してもOKですし、オリジナルのコードでも
Sheet1、Sheet2、Sheet3、Sheet4、の4枚のワークシートが削除出来て、
シートがない場合のエラー対策が取られていれば問題ありません。
※当然ですがワークシートは全部で5枚以上あります。
すいませんが、よろしくお願いします。
-------------------
Sub Macro2()
Dim ws As Worksheet, flag As Boolean
For Each ws In Worksheets
If ws.Name = "Sheet1" Then flag = True
Next ws
If flag = True Then
Worksheets("Sheet1").Delete
Else
MsgBox "[Sheet1]はありません", vbInformation
End If
End Sub

No.1ベストアンサー
- 回答日時:
1例です。
---------------------------------
Public Sub Sample()
DeleteWorkSheet ("Sheet1")
DeleteWorkSheet ("Sheet2")
DeleteWorkSheet ("Sheet3")
DeleteWorkSheet ("Sheet4")
End Sub
'ワークシートがあるなら、それを削除する
Private Sub DeleteWorkSheet(ByVal SheetName As String)
If ExistsWorkSheet(SheetName) = True Then
Worksheets(SheetName).Delete
Else
MsgBox ("[" & SheetName & "]はありません。")
End If
End Sub
'ワークシートの存在チェック
Public Function ExistsWorkSheet(ByVal SheetName As String) As Boolean
Dim ws As Worksheet
ExistsWorkSheet = False
For Each ws In Worksheets
If ws.Name = SheetName Then
ExistsWorkSheet = True
Exit Function
End If
Next ws
End Function
-----------------------------------------------
今回はご解答ありがとうござます。
加えて、前回のご解答、本当にありがとうございました。
↓
【VBA】3個のワークブックから同時にシートをコピーしたい
http://bit.ly/2h1yK2p
今回のマクロは前回のものと組み合わせて使います。
仕事で使うので、こちらでは時々お世話になっております。
機会がありましたら、またお願いします。
特にワークシート関連のマクロがお得意のようですので
No.3
- 回答日時:
思いっきり手抜きのコードで。
Sub Sample()
Dim ara As Variant
Dim itm As Variant
ara = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")
On Error Resume Next
Application.DisplayAlerts = False
For Each itm In ara
Sheets(itm).Delete
If Err <> 0 Then
MsgBox "[" & itm & "]" & " はありません"
Err.Clear
End If
Next
Application.DisplayAlerts = True
End Sub
ご解答ありがとうございます。
すごいシンプルなマクロで、「こういうのもありなんだ」と思いました。
今回、こちらのページで頂いた3つのマクロはどれも優秀なマクロばかりなので、
ベストアンサーに迷いました。
そんな中でNo.3のtatsu99さんは前回の関連した質問にも
答えて頂いているので、今回は前回の質問からの引き継ぎ、、、
ということもあり、ベストアンサーはtatsu99さんにさせて頂きました。
今回はユニークなコードを書いて頂き、ありがとうございます。
機会がありましたら、またお願い致します。
前回の質問はこちらです ↓
「【VBA】3個のワークブックから同時にシートをコピーしたい」
http://bit.ly/2h1yK2p
No.2
- 回答日時:
こんにちは!
一例です。
Sub Sample1()
Dim i As Long, k As Long, myAry As Variant, myFlg As Boolean
Dim sN As String, myStr As String
myAry = Array(1, 2, 3, 4)
For k = 0 To UBound(myAry)
sN = "Sheet" & myAry(k)
For i = 1 To Worksheets.Count
If Worksheets(i).Name = sN Then
Application.DisplayAlerts = False
Worksheets(sN).Delete
Application.DisplayAlerts = True
myFlg = True
Exit For
End If
Next i
If myFlg = False Then
myStr = myStr & "[" & sN & "]" & ","
End If
myFlg = False
Next k
If Len(myStr) > 0 Then
MsgBox Left(myStr, Len(myStr) - 1) & "はありません。", vbInformation
End If
End Sub
こんな感じではどうでしょうか?m(_ _)m
いつもご解答頂きありがとうございます。
頂いたコードを走らせてみてびっくりしました。
理由の1つは「選択したシートに、データが存在する可能性があります。~」
のメッセージが表示されないことで、
もう1つはSheet1、Sheet2、Sheet3、Sheet4、の全部のシートがない場合、
1回のエラーメッセージで「[Sheet1],[Sheet2],[Sheet3],[Sheet4]はありません」
と表示されることです。
実用性抜群で、いつもならベストアンサーですが、、、。
今回のマクロは前回の「【VBA】3個のワークブックから同時にシートをコピーしたい」
http://bit.ly/2h1yK2p
で頂いたマクロと組み合わせて使います。
前回のマクロを提供して頂いたのが、No1のtatsu99さんですので、
今回は前回のマクロを提供して下さった、tatsu99さんにベストアンサーをゆずらせて頂きます。
いつもご解答頂きありがとうございます。
機会がありましたら、またお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
【マクロ】【相談】Excelブック...
-
【 Excel】シートの見出しに自...
-
エクセルのVBAで集計をしたい
-
マクロを特定の複数シートで実...
-
【Excel】複数あるシート上の住...
-
Excelのマクロの呼び出し元を知...
-
マクロを複数シートに実行する...
-
エクセルで回数をカウントする...
-
エクセルでセルの値をクランプ...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
エクセルを閉じる際に自動保存...
-
エクセル ヘッダー(フッター)...
-
エクセル シート保護をかける...
-
エクセルファイルのシート毎の容量
-
excelの不要な行の削除ができな...
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
エクセルを共有するとPCによっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
【 Excel】シートの見出しに自...
-
【マクロ】【相談】Excelブック...
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
EXCELのエラー
-
Excelのマクロの呼び出し元を知...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
EXCELでマクロを使わずに図形の...
-
エクセルのチェックボックス
-
エクセルでシートの並び替えで...
-
エクセルの複数のワークシート...
-
EXCELでワークシートを開いたら...
-
エクセルで複数のSheetを一括フ...
-
エクセルで、マクロボタンの表...
-
ExcelのSheetに作られたMacro1...
-
エクセル・複数のシートを一度...
おすすめ情報