'スタイルを削除するマクロ 'MakeDialogSheetマクロを実行してダイアログシートを作成した後、 'StylesDeleteマクロを実行してください。 Option Explicit 'ダイアログシート名を適当に設定してください。 Const DialogSheetName = "Dialog11" 'スタイルを削除するマクロ Sub StylesDelete() Dim dlg As DialogSheet, obj As Object Dim i As Integer Set dlg = ThisWorkbook.DialogSheets(DialogSheetName) 'リストボックスの初期化 With dlg.ListBoxes(1) .RemoveAllItems For Each obj In ActiveWorkbook.Styles Select Case obj.NameLocal Case "パーセント", "桁区切り", "桁区切り [0.00]", _ "通貨", "通貨 [0.00]", "標準" Case Else .AddItem obj.NameLocal End Select Next End With 'ダイアログボックスを表示する If Not dlg.Show Then Exit Sub With dlg.ListBoxes(1) For i = 1 To .ListCount If .Selected(i) Then If vbOK = MsgBox(.List(i) & " を削除しますか?", _ vbOKCancel Or vbExclamation, "スタイルの削除") Then 'スタイルを削除する ActiveWorkbook.Styles(.List(i)).Delete End If End If Next End With End Sub 'ダイアログシートを作成するマクロ Sub MakeDialogSheet() Dim dlg As DialogSheet Dim gw As Double For Each dlg In ThisWorkbook.DialogSheets If dlg.Name = DialogSheetName Then MsgBox (DialogSheetName & " はすでに存在します。") Exit Sub End If Next Set dlg = DialogSheets.Add With dlg gw = .Buttons(1).Height / 3 .Name = DialogSheetName .DialogFrame.Caption = "スタイルの削除" End With With dlg.ListBoxes.Add(Left:=gw * 14, Top:=gw * 11, _ Width:=gw * 37, Height:=gw * 19) .MultiSelect = xlExtended .SendToBack End With With dlg.Labels.Add(Left:=gw * 14, Top:=gw * 8, _ Width:=gw * 37, Height:=gw * 3) .Caption = "削除するスタイルを選択してください。" .SendToBack End With End Sub