it-swarm.com.de

Löschen Sie ALLE bisherigen Zellstile EXCEL

Ist es möglich, ALLE benutzerdefinierten/erstellten Zellstile in einer Arbeitsmappe zu löschen? Belassen Sie einfach die Standardstile.

Ohne sie alle einzeln löschen zu müssen

enter image description here

7
PeterH

Versuchen Sie dieses kleine VBA-Makro:

Sub StyleKiller()
    Dim N As Long, i As Long

    With ActiveWorkbook
        N = .Styles.Count
        For i = N To 1 Step -1
            If Not .Styles(i).BuiltIn Then .Styles(i).Delete
        Next i
    End With
End Sub

Dies löst die Builtin vs Benutzerdefinierte Ausgabe. Beachten Sie, dass wir die Schleife rückwärts ausführen, um den Schleifenindex nicht zu beschädigen.

12
Gary's Student

Ok, das war nicht so schwer, wie ich zuerst dachte.

Ein bisschen chaotisch, da ich nicht oft VBA benutze. Dieser Code wird jedoch nur auf die Standardstile zurückgesetzt:

Sub DefaultStyles()
   Dim MyBook As Workbook
   Dim tempBook As Workbook
   Dim CurStyle As Style
   Set MyBook = ActiveWorkbook
   On Error Resume Next
   For Each CurStyle In MyBook.Styles
      Select Case CurStyle.Name
         Case "20% - Accent1", "20% - Accent2", _
               "20% - Accent3", "20% - Accent4", "20% - Accent5", "20% - Accent6", _
               "40% - Accent1", "40% - Accent2", "40% - Accent3", "40% - Accent4", _
               "40% - Accent5", "40% - Accent6", "60% - Accent1", "60% - Accent2", _
               "60% - Accent3", "60% - Accent4", "60% - Accent5", "60% - Accent6", _
               "Accent1", "Accent2", "Accent3", "Accent4", "Accent5", "Accent6", _
               "Bad", "Calculation", "Check Cell", "Comma", "Comma [0]", "Currency", _
               "Currency [0]", "Explanatory Text", "Good", "Heading 1", "Heading 2", _
               "Heading 3", "Heading 4", "Input", "Linked Cell", "Neutral", "Normal", _
               "Note", "Output", "Percent", "Title", "Total", "Warning Text"
         Case Else
            CurStyle.Delete
      End Select
   Next CurStyle
   Set tempBook = Workbooks.Add
   Application.DisplayAlerts = False
   MyBook.Styles.Merge Workbook:=tempBook
   Application.DisplayAlerts = True
   tempBook.Close
End Sub
2
PeterH

Versuchen Sie Folgendes, um einfach alle zu entfernen, ohne INDEX zu verwenden:

Sub StyleKiller()
    Dim st As Style
    On Error Resume Next
    For Each st In ActiveWorkbook.Styles
      If Not st.BuiltIn Then
        st.Delete
      End If
    Next
    On Error GoTo 0
End Sub
1
Andreas