- ベストアンサー
EXCELのVBAにてシート削除の確認を表示させない
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
先頭に Application.DisplayAlerts = False 最後に Application.DisplayAlerts = True を入れてみてください。
関連するQ&A
- VBAで指定したSheetの削除
お世話になります 指定したシート以外すべてのシートを削除させるボタンを作成したいのですが ↓こんなものを見つけました。(URLわからくなってしまった;;) これは図1~ワークシートを削除させるVBAらしいのですが ■解らないこと なぜかsheetにすると削除してくれません。 '指定以外ワークシート削除 Private Sub CommandButton1_Click() Dim myShe As Worksheet For Each myShe In Worksheets If myShe.Name <> Worksheets("図").Name Then myShe.Visible = Delete End If Next End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでワークシート削除
ブックの中にある、表示されているシートで、たとえば図表1~図表4(何番まであるかは不定です)という名前のシートを削除するVBAを作りました。ただの「図表」という名前のシートや、「何々図表」、「図表集計」等のシートは削除しません。 Sub 保存図表削除() Dim SN As String For Each sh In Worksheets SN = sh.Name If sh.Visible And IsNumeric(Mid(SN, 3, Len(SN) - 2)) And Left(SN, 2) = "図表" Then ans = MsgBox(SN & "を削除してよい?", vbYesNo) If ans = vbYes Then Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True End If End If Next End Sub これでうまく作動するのですが、いちいちシートごとに削除の有無を聞かずに、削除するシート名をまとめて表示し、それらを削除するかしないかを聞くにはどうすればよいでしょうか? 「図表1,2,3,4があります。これらを削除しますか?」というような感じです。
- ベストアンサー
- オフィス系ソフト
- ワークシートの削除
For SheetSakujo = 3 To SheetCount - 1 Worksheets(SheetSakujo).Select If ActiveSheet.Name <> "★" Then If Range("A2") = "" Then ActiveWindow.SelectedSheets.Delete End If ElseIf ActiveSheet.Name = "★" Then Exit For End If Next VBAでワークシートの削除を行っています。 A2が空白のシートを消そうと思って上記のようなコードをくみましたが、 削除されるとシートが減ってしまうため、次のシートも空白だった場合、消されないで飛ばされてしまいます。 3枚目のシート:空白 4枚目のシート:空白 5枚目のシート:空白 ↓ sheetsakujoが「3」なので3枚目は削除される。 次の4枚目のシートが3枚目が削除されたため、「3番目のシート」になるため、次に削除されるのは5枚目のシート。 この場合、どのようにしたらいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBA シート名重複した場合削除する
教えてください。 VBAに関しての質問です。 全くの知識がないので教えていただきたいです。 エクセルワークシートに以下の機能を追加している状態です。 For Each ws In Worksheets If ws.Name = "データ" Then wsChkflg = True End If Next If wsChkflg = True Then ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ" Else ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ" End If Set wsNew = ThisWorkbook.Worksheets("データ") 「データ」というシートが作成、追加されるのですが、同じシート名で新規作成した時に エラーが出てしまいます。そのエラーを出さないようにすため、ダイアログ等も出さずに既存のシートを強制的に削除する機能を追加したいのです。 VBAの知識がなくて困っています。 何か良い方法がわかる方いらっしゃいましたらお力を貸してください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel VBA 指定シートの有無確認
指定した名前のシートがあるかないか判断させてますが、 以下のやりかたでは、 グラフ作成したシートを認識してくれません。 そのようにすれば良いでしょうか? Dim ws As Worksheet, flag As Boolean For Each ws In Worksheets If ws.Name = "シート" Then flag = True Next ws If flag = True Then msgbox "あります Else Sheets.Add ActiveSheet.Name = "シート" End If
- ベストアンサー
- Visual Basic
- マクロ 特定のシート以外を削除する
いつも回答して頂きありがとうございます。 特定のシート以外を削除するマクロを作成して動作させたのですが、削除する時に『選択したシートにデータが存在する可能性が・・・』と聞いてきます。これを無視して削除を行わせたいのですがどうすればよろしいでしょうか?御指導の程宜しくお願い致します。 Sub シートの削除() Dim ws As Worksheet For Each ws In Worksheets If ws.Name <> "データ元" And ws.Name <> "集計用" Then ws.Delete End If Next End Sub
- ベストアンサー
- オフィス系ソフト
- Excelマクロにてシートの削除を行いたいです。
初めて投稿させて頂きます。 質問内容 Excelのマクロを使用して指定シート以外のシートの削除を行いたいです。 前条件 外部CSVファイルを取込み、データによってシートを追加して振り分けています。 再度マクロを実行した場合特定のシートを残し(フォーマット等)、他のシートを削除してからデータの振り分けを実施する予定です。 やってみた事 下記の様に書いて実施してみたのですがエラーとなってしまいます。 Sub Clear() Application.DisplayAlerts = False For I = 1 To Worksheets.Count If (Worksheets(I).Name <> "sheet") Then Sheets(Worksheets(I).Name).Select ActiveWindow.SelectedSheets.Delete End If Next I Application.DisplayAlerts = True End Sub 上記の書き方だと1シート毎削除なので、選択したシートを一括で削除出来るとうれしいです。 どなたかご存知の方お願いします。
- ベストアンサー
- Visual Basic
- Excel VBAである特定文字列を含むシート名例えば「りんご(1)」
Excel VBAである特定文字列を含むシート名例えば「りんご(1)」「みかん(1)」「みかん(2)」「いちご(1)」のシート名があるファイルに対して「みかん*」で検索を行い、一致したシート(複数Sheet)=「みかん(1)」「みかん(2)」に対して処理を行う方法はありますでしょうか。 宜しくお願いいたします。 完全一致するファイルは下記のようなのですが、Scheck = 0の部分が理解でいません。 型は何にすればよいのでしょうか。 Sub Sheet_Add5() Scheck = 0 For Each sheet_name In Worksheets If sheet_name.Name = ("検索シート名") Then Scheck = 1 Exit For End If Next If Scheck = 0 Then Sheets.Add.Name = "検索シート名" End If End Sub
- ベストアンサー
- オフィス系ソフト
- 円グラフの0%を削除するVBA
お世話になります。 円グラフの0%のラベルを削除するVBAを調べており、 http://support.microsoft.com/kb/142132/ja に掲載されているものを使用しようかと思っています。 扱っているグラフのシートがたくさんあるのですが、"Sheet1"や"グラフ 1"の部分をその都度書き換えないで自動で操作することは可能でしょうか? よろしくお願いします。 Sub ClearLabels() Worksheets("Sheet1").ChartObjects("グラフ 1").Chart.ApplyDataLabels _ Type:=xlShowPercent For Each X In Worksheets("Sheet1").ChartObjects("グラフ 1"). _ Chart.SeriesCollection(1).Points If InStr(X.DataLabel.Text, "0%") > 0 _ And Len(X.DataLabel.Text) = 2 Then X.DataLabel.Delete End If Next End Sub
- ベストアンサー
- オフィス系ソフト
- VBAの表からシートを作成したい
現在の構文は以下のようになっています。 Dim ws As Range For Each ws In Worksheets("ユーザー情報").Range("C2:C201") On Error GoTo myError If Not ws Is Nothing Then Worksheets("雛形").Copy After:=Worksheets(Worksheets.Count) ActiveSheet.name = ws.Value End If Next ws Exit Sub myError: nm = "雛形 (2)" For Each sh In Worksheets If sh.name = nm Then Application.DisplayAlerts = False Worksheets(nm).Delete Application.DisplayAlerts = True End If Next 「ユーザー情報」シートのC列に氏名を記入して上記マクロを実行すれば、その氏名ごとに「雛形」を元にしたシートが連続でコピーされる形になっています。 しかし、1度実行した後、あらたにC列に氏名を追加してもその分のコピーを作ってくれなくなります。 どのようにすればよいでしょうか。アドバイスをいただければと思います。
- ベストアンサー
- Visual Basic
お礼
お忙しいところ、ありがとうございました