• ベストアンサー

Excelのワークシート削除時のダイアログを表示させない方法

kbonbの回答

  • ベストアンサー
  • kbonb
  • ベストアンサー率51% (254/492)
回答No.2

こんにちは  For~Nextを Application.DisplayAlerts = False Application.DisplayAlerts = True で囲んでみたらいかがでしょうか?

参考URL:
http://www2.odn.ne.jp/excel/
gutiguti
質問者

お礼

できました。DisplayAlertsプロパティですか。 このような機能はある筈だと思って調べていたのですが。。。。 まだまだ勉強不足です。ありがとうございました。

関連するQ&A

  • リストボックスに表示後、選択したシートを削除する

    初歩的な質問で恐縮ですが、ご教示ください。 リストボックスにすべてのシート名を表示させ、選択したシートのみ削除するマクロを作成したいのですが、エラーメッセージ「オブジェクトが必要」と表示されエラーとなります。どのように変更したらよいのでしょうか?  Private Sub CommandButton1_Click() 'Selectedプロパティを使って、選択されているかどうかを判断して、選択されていたらメッセージボックスにその内容を表示します。 'このメッセージボックスを表示される全シートのうち、選択したシートのみ、削除処理する。 Dim i As Integer With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) Then MsgBox .List(i) End If Next i End With ' 選択シート削除 '「はい」「いいえ」のアイコンを表示する Btn = MsgBox("選択されたシートが全て消去されます。元にもどりません いいですか?", vbYesNo + vbQuestion, "確認") '「いいえ」の場合は終了します。 If Btn = vbNo Then Exit Sub End If 'リストのうち、選択したシートだけ削除する 'オブジェクトが必要? Workbook.Sheet.[(List(i))].Delete End Sub

  • リストボックスからシート削除のマクロを合体したい

    Windows7 Excel2007でマクロ作成中の初心者です。 やりたいことは、リストボックスからシートを選択し、そのシートを削除する。 削除したら、リストボックスの中の、シート選択状態を解除し、その項目だけを 削除することです。 以下のコードで出来たのですが、これを統合して一個のコードにしたいです。 どうしたらよろしいでしょうか。 Private Sub 顧客削除_Click() Dim i As Integer Dim btn Dim name As String With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then name = .list(i) '選択されたリストを変数に格納 btn = MsgBox("本当に、 " & name & " さんを削除していいですか?", _ vbYesNo, "削除の確認") If btn = vbYes Then Application.DisplayAlerts = False Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete Application.DisplayAlerts = True リストボックスの項目削除 End If End If Next i Worksheets(1).Activate End With ActiveWorkbook.Save Application.ScreenUpdating = True End Sub ----------------------------- Sub リストボックスの項目削除() Dim i As Integer For i = 顧客リスト.ListCount - 1 To 0 Step -1 If 顧客リスト.Selected(i) Then 顧客リスト.RemoveItem (i) Exit For End If Next i End Sub

  • EXCEL VBA 配列について

    リストボックスの選択から重複しないリストボックスに値を抽出する コードを作成しました。 しかし、スペックの低いPCで動作させると、処理に時間が かかってしまいます。 配列を使うと処理が早くなるとウェブで調べたのですが、 いまいち理解が出来ません。 やりたいこと ・配列にリストボックスの値を入れる ・配列から重複を削除する? どなたかご教授ください。 コードは下記のようになっています。    If Not UserForm1.ListBox6.Value = 0 Then      For w = UserForm1.ListBox1.ListCount - 1 To 0 Step -1 If Not UserForm1.ListBox6.Value = _ UserForm1.ListBox1.List(w, 5) Then UserForm1.ListBox1.RemoveItem (w) End If Next w    End If For w = UserForm1.ListBox1.ListCount - 1 To 1 Step -1 If UserForm1.ListBox1.List(w - 1, 6) = UserForm1.ListBox1.List(w, 6) Then UserForm1.ListBox1.RemoveItem (w) End If Next w

  • ワークシートの削除

    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枚目のシート。 この場合、どのようにしたらいいのでしょうか?

  • Excelユーザーフォームでシートの移動

    Excel2007です。 データを集計するためのデータブックがあり、その中に30ほどのシートがあります。 このデータ集計を別に作成したマクロブックから操作しています。 データブックは毎日その日ごとのものが作成されます。 30ほどのシートの中で、その日の集計が終わったシートを選択して、別のシート移動用ファイルに移動させるようにしたいと思い、ユーザーフォームを作成しました。 ユーザーフォームにリストボックスを置き、そこにデータブックにあるシートの一覧が表示されます。 その中で選択したシートを「移動」というコマンドボタンで指定したファイル(この場合はBool2.xlsx)に移動させようとしています。 下記のコードを書いたところ、ユーザーフォームを開いて一度移動の操作でBook2に移動するまではできたのですが、更に別のシートを移動しようとすると 「インデックスが有効範囲にありません」 のエラーが出ます。 ユーザーフォームを一旦閉じて再度開くとエラーなく移動処理できます。 また、移動処理後にリストを再取得する方法がわからなくて、既に移動したシートもリストボックスに表示されたままになります。 ユーザーフォームを閉じることなく続けて移動処理をしたいのと、移動させたものをリストボックスから削除するにはどうしたらよいでしょうか。 ’リストボックスにシート一覧を表示 Private Sub UserForm_Initialize() Dim a As Worksheet ListBox1.MultiSelect = 2 For Each a In Sheets ListBox1.AddItem a.Name Next End Sub ’Book2にシートを移動 Private Sub SheetIdou_Click() Dim i As Integer Dim v() As String Dim k As Integer With ListBox1 ReDim v(1 To .ListCount) For i = 0 To .ListCount - 1 If .Selected(i) Then k = k + 1 v(k) = .List(i) End If Next i If k = .ListCount Then MsgBox "すべてのシートを移動することはできません" Exit Sub End If End With ReDim Preserve v(1 To k) If MsgBox("以下のシートを移動しますか?" & vbLf & Join(v, "/"), vbYesNo, "確認") = vbYes Then Sheets(v).Move After:=Workbooks("Book2.xlsx").Worksheets(1) End If End Sub よろしくお願いいたします<(__)>

  • リストボックスからシート選んで削除したい

    Excel2007でマクロ作成中の初心者です。 以下のマクロを実行すると、最終行でコンパイルエラーがでて 「参照が不正または不完全です」と表示され削除ができません。 どうしたら、削除できるでしょうか。 Private Sub 顧客削除_Click() Dim i As Integer Dim btn Dim name As String With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then name = .list(i) '選択されたリストを変数に格納 btn = MsgBox("本当に、" & name & "さんを削除していいですか?", _ vbYesNo + vbQuestion, "削除の確認をする") End If Next i End With If btn = vbNo Then Exit Sub End If 'Worksheets(Mid(.list(.ListIndex - 0), InStr(.list(.ListIndex - 0), " ") + 1)).Delete 'ActiveWorkbook.Sheet.[(List(i))].Delete 'ActiveWorkbook.Sheets(name).Delete Worksheets(Split(.list(.ListIndex - 0), " ")(1)).Delete ' End Sub

  • リストボックスから選択したシートを削除したい

    Excel2007でマクロ作成の初心者です。 リストボックスの選択項目のワークシートを削除したいのですが、 「インデックスが有効範囲にありません。」のエラーが発生し、 先に進めません。どうしたらよろしいでしょうか? ’--------------------- Private Sub 顧客削除_Click() Application.ScreenUpdating = False Unload Me Unload DS請求フォーム Dim i As Integer With 顧客リスト For i = 0 To .ListCount - 1 If .Selected(i) Then ' Worksheets(.list(.ListIndex)).Delete Worksheets(Split(.list(.ListIndex - 0), " ")(1)).Activate '←ここでエラー発生 ActiveSheet.Delete End If Next i End With MsgBox "選択の顧客を削除しました。" End Sub ’------------------------- Private Sub UserForm_Initialize() Workbooks("請求.xls").Activate Dim i As Integer Const EXCEPT_NAME = "経理●一覧●基本●" For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then 顧客リスト.AddItem i & " " & Worksheets(i).Name End If Next i End Sub ’----------------------

  • エクセル コードがどうしても早くならない

    いつもお世話になります。 今回は下記コードを記載したのですが、どうにも遅いので何とかする方法があれば との思いから投稿させて頂きます。 ListBox1(590以上の項目があります)をクリックしたら 非対象シートのA列を検索して、ヒットした場合 同シートのB列と同様の数字をListBox2から探し出して チェックを付けて行く。(一応、計算ストップ等のコードは試しましたが変わりません) 基本情報としては 最初に、選択されているかもしれないListBox2のチェックをクリアをします。 ListBoxの1,2は同じ情報を使っています。 なので、ListBox1と同じ情報のListBox2については、最初の方でチェックを 付ける処理をしています。((1)) その後の処理が遅いのですが、ListBox1のどれかをクリックする度に20秒以上 動きが止まってしまうので、何か対策があればどうぞ宜しくお願い致します。 ※なぜか処理が終わるとフォームが消えてしまいます。例えばブラウザを一度アクティブ  にしてからエクセルに戻ると出てくるのですが、何が原因でしょうか? Private Sub ListBox1_Click() Dim RR, HRR As Range Dim SID As Integer ' 'With Application ' .ScreenUpdating = False ' .EnableEvents = False ' .Calculation = xlCalculationManual 'End With '// 選択されているかもしれないListBox2のチェックをクリア For i = 0 To Me.ListBox2.ListCount - 1 ListBox2.Selected(i) = False Next Debug.Print Time; " - 同じ会社にチェックを付けるスタート" '// 同じ会社にチェックを付ける For si = 0 To ListBox2.ListCount - 1 If Me.ListBox2.List(si, 0) = RR Then Me.ListBox2.Selected(si) = True si = 0 Exit For End If Next Debug.Print Time; " - 同じ会社にチェックを付ける終り" Debug.Print Time; " - 非対象シートにある対象外にチェックを付ける スタート" '// 非対象シートにある対象外にチェックを付ける With Sheets("非対象") For Each RR In .Range(.Cells(1, 1), .Cells(.Cells(600000, 1).End(xlDown).Row - 1, 1)) If RR = Me.ListBox1 Then For si = 0 To ListBox2.ListCount - 1 If Me.ListBox2.List(si, 0) = .Cells(RR.Row, 2) Then Me.ListBox2.Selected(si) = True End If Next End If Next End With Debug.Print Time; " - 非対象シートにある対象外にチェックを付ける 終り" End Sub

  • EXCELのVBAにてシート削除の確認を表示させない

    EXCELにてVBAよりシート削除をコーディングしているのですが、 シート削除の確認を表示させない方法は、ありませんか? 例) For Each W_SHEET In Worksheets if W_SHHET.NAME <> "master" Then W_SHEET.DELETE End If Next

  • テキストボックス空欄への追加入力

    リストボックス1であ行の氏名項目を選択実行しテキストボックス1~8に入力された後にか行にリストボックス項目を変え氏名を選択実行した場合、下記のコードではテキストボックス1からまた上書きされる。テキストボックス空欄に続けて選択項目が入力される方法はあるのでしょうか。悩んでいます。どなたかコードがわかる方よろしくお願いします。 Private Sub 実行Cnd_Click() Dim cnt As Integer   Dim i As Integer If ListBox1.ListIndex = -1 Then Exit Sub cnt = 1 For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Me.Controls("TextBox" & cnt).Text = ListBox1.List(i) cnt = cnt + 1 End If Next End Sub