VBA Code Schnipsel: Zu viele verschiedene benutzerdefinierte Zellenformate

Problem:

In Excel Arbeitsmappen kommt es manchmal vor dass sich die benutzerdefinierten Zellenformate in einer Arbeitsmappe wie Karnickel vermehren.

Warum passiert das?

Dies passiert meistens auf Grund dessen dass eine Arbeitsmappe von verschiedenen User bearbeitet wurde, Inhalte von einer Datei in die andere kopiert wurden, und Excel dabei sämtliche Zellenformate die vom User angelegt wurden in die andere Arbeitsmappe reinkopiert hat.

Irgendwann merkt man dann selber dass es da ein Problem gibt, oder Excel kommt mit einer Meldung, und teilt Dir mit dass es so nicht weitergehen kann… das Du Gefahr läufst Deine Datei zu korrumpieren!

Als ob es Deine Schuld wäre… und nicht etwa die von Excel selber!

Ungerecht.

Aber so ist das Leben. Und manchmal auch Excel.

Glücklicherweise gibt es eine Lösung.

Lösung:

Bei einem Zellenformat Chaos wie demjenigen im Bild, bleiben tatsächlich nicht mehr viele Optionen. Von Hand durchforsten ist keine Lösung… zumindest keine effiziente.

Dann muss VBA Code her…

Mit diesem Code Schnipsel werden sämtliche benutzerdefinierte Zellenformate in Excel auf den Standard zurückgesetzt. Bereits formatierte Zellen bleiben danach bestehen auf dem Arbeitsblatt.

ACHTUNG: bevor ihr das auf Eure Datei anwendet, eine Kopie der Datei machen! Dann erst benutzen! Ebenfalls muss ich erwähnen, dass alle Formate gelöscht werden und auf die Standardeinstellung zurückgesetzt werden… vielleicht auch solche die Ihr gerne beibehalten möchtet!

Hier der Code schön farbig formatiert…

…und hier das gleiche als Text um in ein neues Modul zu kopieren in Eurer Arbeitsmappe (und mit F5 ausführen).

'---------------------------------------------------------------------------
' Method : BenutzerdefinierteZellenFormateZuruecksetzen
' Author : ROLU
' Date   : 24.09.2018
' Purpose: Rolls back custom formatting to default included in excel
'---------------------------------------------------------------------------
Sub ZellenFormatZuruecksetzen()
    Dim lStyle As Long, j As Long

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