Daten in Excel VBA sortieren

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 12, 2022

Daten mit Excel VBA sortieren

Excel verfügt über hervorragende Möglichkeiten zum Sortieren von Tabellendaten mithilfe der Menüleiste in der Excel-Benutzeroberfläche und irgendwann werden Sie diese Funktionalität wahrscheinlich auch in Ihrem VBA-Code verwenden wollen. Glücklicherweise ist dies sehr einfach zu realisieren.

Das Frontend-Dialogfenster finden Sie, indem Sie auf das Symbol „Sortieren“ in der Gruppe „Sortieren & Filtern“ auf der Hauptregisterkarte „Daten“ im Excel-Menüband klicken. Sie müssen zuerst einen Tabellendatenbereich auswählen.

Sie können auch Alt-V-S verwenden, um das Dialogfeld für eine benutzerdefinierte Sortierung anzuzeigen.

Die Sortiermethode wurde in späteren Excel-Versionen erheblich verbessert. Früher war die Sortierung auf drei Ebenen beschränkt, aber jetzt können Sie so viele Ebenen eingeben, wie Sie brauchen und dies gilt auch in VBA.

daten sortieren fenster in excel

Sie können alle Sortierfunktionen, die im Excel-Dialogfenster „Sortieren“ verfügbar sind, in Ihren VBA-Code einbinden. Die Sortierfunktion in Excel ist schnell und sogar schneller als alles, was Sie in VBA selbst schreiben könnten. Nutzen Sie also die Vorteile dieser Funktionalität.

Beachten Sie, dass die Sortierparameter im Frontend-Sortierdialogfeld bei einer Sortierung in VBA  gleich bleiben. Sie werden auch gespeichert, wenn die Arbeitsmappe gespeichert wird.

Wenn ein Benutzer denselben Tabellendatenbereich auswählt und auf das Symbol Sortieren klickt, werden alle Parameter, die Sie mit Ihrem VBA-Code eingegeben haben, angezeigt. Wenn der Benutzer eine eigene Sortierung vornehmen möchte, muss er zunächst all Ihre Sortierebenen löschen, was für ihn sehr ärgerlich sein kann.

Wenn Sie die Parameter in Ihrem Code nicht ändern und sich auf Standardwerte verlassen, kann es sein, dass der Benutzer Änderungen vorgenommen hat, die sich in Ihrer VBA-Sortierung widerspiegeln und zu unerwarteten Ergebnissen, die sehr schwer zu beheben sind, führen.

Glücklicherweise gibt es eine klare Methode in VBA, um alle Sortierparameter zurückzusetzen, so dass der Benutzer ein sauberes Sortierdialogfeld sieht.

Worksheets("Tabelle1").Sort.SortFields.Clear

Es ist eine gute Praxis, die Sortierparameter in VBA vor und nach Abschluss der Sortierung zu löschen.

Praktische Verwendung der Sortiermethode in VBA

Wenn Tabellendaten in Excel importiert werden, liegen sie oft in einer sehr zufälligen Reihenfolge vor. Sie können aus einer CSV-Datei (kommagetrennte Werte) importiert werden oder aus einem Link zu einer Datenbank oder Webseite stammen. Sie können sich nicht darauf verlassen, dass sie von einem Import zum anderen in einer bestimmten Reihenfolge vorliegen.

Wenn Sie diese Daten in Ihrem Arbeitsblatt einem Benutzer  präsentieren, kann es für ihn schwierig sein, eine riesige Datenmenge, die in ihrer Reihenfolge völlig durcheinander ist, zu sehen und zu verstehen. Vielleicht möchte er die Daten gruppieren oder bestimmte Abschnitte ausschneiden und in eine andere Anwendung einfügen.

Möglicherweise möchte er auch den höchstbezahlten Mitarbeiter oder den Mitarbeiter mit der längsten Betriebszugehörigkeit sehen.

Mit der Sortiermethode in VBA können Sie Optionen anbieten, die dem Benutzer eine einfache Sortierung ermöglichen.

Beispieldaten zur Demonstration der Excel-Sortierung in VBA

Zunächst müssen einige Beispieldaten in ein Arbeitsblatt eingegeben werden, damit der Code alle in VBA verfügbaren Möglichkeiten demonstrieren kann.

daten sortieren beispiel urspruengliche tabelle

Kopieren Sie diese Daten in ein Arbeitsblatt (mit dem Namen „Tabelle1“), und zwar genau wie abgebildet.

Beachten Sie, dass unterschiedliche Zellenhintergrundfarben und Schriftfarben verwendet wurden, da diese auch als Sortierparameter verwendet werden können. Die Sortierung anhand von Zellen- und Schriftfarben wird später in diesem Artikel demonstriert. Beachten Sie auch, dass der Abteilungsname in Zelle E3 nur in Kleinbuchstaben angegeben ist.

Wenn Sie die Beispiele für die Sortierung nach Zellen- und Schriftfarbe nicht verwenden möchten, benötigen Sie die Zellen- und Schriftfarben nicht.

Aufzeichnen eines Makros für eine VBA-Sortierung

Der VBA-Code für die Sortierung kann ziemlich kompliziert sein und es kann manchmal eine gute Idee sein, die Sortierung am Excel-Frontend durchzuführen und ein Makro aufzuzeichnen, um Ihnen zu zeigen, wie der Code funktioniert.

Leider kann die Aufzeichnungsfunktion eine riesige Menge an Code erzeugen, weil sie praktisch jeden verfügbaren Parameter festlegt, obwohl die Standardwerte vieler Parameter für Ihren Sortiervorgang akzeptabel sind.

Sie erhalten jedoch eine sehr gute Vorstellung davon, was beim Schreiben von VBA-Sortiercode zu beachten ist und ein Vorteil besteht darin, dass der aufgezeichnete Code immer für Sie funktioniert. Ihr eigener Code muss möglicherweise getestet und debuggt werden, damit er richtig funktioniert.

Denken Sie daran, dass eine in VBA durchgeführte Operation nicht rückgängig gemacht werden kann. Es ist daher ratsam, eine Kopie der Tabellendaten auf einem anderen Arbeitsblatt zu erstellen, bevor Sie mit dem Schreiben Ihres Sortiercodes beginnen.

Wenn Sie beispielsweise eine einfache Sortierung der obigen Beispieldaten nach Mitarbeiter durchführen, würde die Aufzeichnung den folgenden Code erzeugen:

Sub Makro1()

Range("A1:E6").Select

ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add2 Key:=Range("A2:A6"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Tabelle1").Sort
    .SetRange Range("A1:E6")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End Sub

Dies ist ein recht umfangreicher Code, und ein großer Teil davon ist aufgrund der verwendeten Standardparameter unnötig. Wenn Sie jedoch unter Zeitdruck stehen, um ein Projekt abzuschließen und Sie einen funktionierenden Code schnell benötigen, können Sie diesen einfach in Ihren eigenen VBA-Code einfügen.

Wenn Sie Ihren Code jedoch verständlicher und eleganter gestalten wollen, gibt es andere Möglichkeiten.

VBA-Code für eine einstufige Sortierung

Wenn Sie den Beispielcode wie vorher bei der Aufzeichnung eines Makros nur nach Mitarbeiter sortieren möchten, ist der Code sehr einfach:

Sub EineEbeneSortieren()

Worksheets("Tabelle1").Sort.SortFields.Clear

Range("A1:E6").Sort Key1:=Range("A1"), Header:=xlYes

End Sub

Dieser Code ist weitaus einfacher zu verstehen als der aufgezeichnete, da er die Standardwerte wie z. B. das aufsteigende Sortieren annimmt, so dass es nicht notwendig ist, die Parameter auf Standardwerte zu setzen. Dies setzt voraus, dass Sie zuvor eine ‚Clear‘-Anweisung verwendet haben.

Die ‚Clear‘-Methode wird zuerst verwendet, um sicherzustellen, dass alle Sortierparameter für dieses Arbeitsblatt auf Standardwerte zurückgesetzt werden. Möglicherweise hat ein Benutzer die Parameter zuvor auf andere Werte gesetzt, oder eine frühere Sortierung in VBA hat sie verändert. Es ist wichtig, bei der Sortierung von einer Standardposition auszugehen, da Sie sonst leicht falsche Ergebnisse erzielen können.

Die Clear-Methode setzt den Header-Parameter nicht zurück und es ist ratsam, dies in Ihren Code aufzunehmen, da Excel sonst eventuell versucht zu erraten, ob eine Kopfzeile vorhanden ist oder nicht.

Führen Sie diesen Code mit den Beispieldaten aus, und Ihr Arbeitsblatt wird wie folgt aussehen:

daten mehrstufig sortieren

 

VBA-Code zur Durchführung einer mehrstufigen Sortierung

Sie können in Ihrem Code so viele Sortierebenen hinzufügen, wie Sie benötigen. Angenommen, Sie möchten zuerst nach Abteilung und dann nach Anfangsdatum sortieren, aber in aufsteigender Reihenfolge für die Abteilung und absteigender Reihenfolge für das Anfangsdatum:

Sub MehrereEbenenSortieren()

Worksheets("Tabelle1").Sort.SortFields.Clear

Range("A1:E6").Sort Key1:=Range("E1"), Key2:=Range("C1"), Header:=xlYes, _
    Order1:=xlAscending, Order2:=xlDescending

End Sub

Beachten Sie, dass die Sortieranweisung nun zwei Schlüssel enthält (Key1 und Key2). Key1 (Abteilung, Spalte E) wird zuerst sortiert, und dann wird Key2 (Anfangsdatum, Spalte C) auf Grundlage der ersten Sortierung sortiert.

Es gibt auch zwei Reihenfolgenparameter. Order1 wird mit Key1 (Abteilung) und Order2 mit Key2 (Anfangsdatum) verknüpft. Es muss sichergestellt werden, dass die Schlüssel und die Reihenfolgen miteinander übereinstimmen.

Führen Sie diesen Code anhand der Beispieldaten aus, und Ihr Arbeitsblatt wird wie folgt aussehen:

daten mehrstufig sortieren

Die Spalte „Abteilung“ (E) ist in aufsteigender Reihenfolge, und die Spalte „Startdatum“ (C) ist in absteigender Reihenfolge dargestellt.

Der Effekt dieser Sortierung wird am deutlichsten, wenn man Jane Halfacre (Zeile 2) und John Sutherland (Zeile 3) betrachtet. Sie sind beide im der Buchhaltung tätig, aber Jane Halfacre fing nach John Sutherland an und die Daten werden in absteigender Reihenfolge angezeigt.

Wenn der Tabellendatenbereich beliebig lang sein kann, können Sie das UsedRange-Objekt verwenden, um den Sortierbereich zu definieren. Dies funktioniert nur, wenn sich nur die Tabellendaten auf dem Arbeitsblatt befinden, da alle Werte außerhalb des betroffenen Datenbereichs falsche Ergebnisse für die Anzahl der Zeilen und Spalten liefern.

Sub MehrereEbenenSortieren()

Worksheets("Tabelle1").Sort.SortFields.Clear
Worksheets("Tabelle1").UsedRange.Sort Key1:=Range("E1"), Key2:=Range("C1"), Header:=xlYes, _
    Order1:=xlAscending, Order2:=xlDescending

End Sub

Das Problem wird vermieden, wenn Sie die Methode ‚End(xlDown)‘ verwenden, um den Sortierbereich zu definieren. Wenn sich eine leere Zelle mitten in den Daten befindet, wird alles nach dieser Lücke nicht berücksichtigt, während UsedRange bis zur letzten aktiven Zelle im Arbeitsblatt geht.

Sortieren nach Zellenfarbe

Seit Excel 2007 ist es möglich, nach der Hintergrundfarbe einer Zelle zu sortieren, was eine enorme Flexibilität bei der Gestaltung Ihres Sortiercodes in VBA bietet.

Sub EineEbeneSortieren_NachZellenfarbe()

Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add2 Key:=Range("A2:A6"), _
    SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Tabelle1").Sort
    .SetRange Range("A1:E6")
    .Apply
End With

End Sub

Dieser Code sortiert den Beispieldatenbereich (A2:A6) anhand der Zellenhintergrundfarbe. Beachten Sie, dass es jetzt einen zusätzlichen Parameter namens „SortOn“ gibt, der den Wert „xlSortOnCellColor“ hat.

Beachten Sie, dass der Parameter „SortOn“ nur von einem Arbeitsblattobjekt und nicht von einem Bereichsobjekt verwendet werden kann.

Aus diesem Grund ist der Code komplizierter als bei einer Sortierung anhand von Zellenwerten.

In diesem Code wird ein Schlüsselwert, der den gesamten Datenbereich abdeckt, für die Sortierung verwendet. Sie können jedoch einzelne Spalten als Schlüssel für die Sortierung nach Hintergrundfarbe angeben und mehrere Ebenen verwenden, wie zuvor gezeigt.

Nachdem Sie diesen Code ausgeführt haben, sieht Ihr Arbeitsblatt nun wie folgt aus:

daten nach zellenfarbe sortieren

 

Sortieren nach Schriftfarbe

Die Sortierfunktion in Excel-VBA bietet noch mehr Flexibilität, da Sie damit auch nach Schriftfarben sortieren können:

Sub EineEbeneSortieren_NachSchriftfarbe()

Worksheets("Tabelle1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add(Range("A2:A6"), _
    xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0)

With ActiveWorkbook.Worksheets("Tabelle1").Sort
    .SetRange Range("A1:E6")
    .Header = xlYes
    .Orientation = xlTopToBottom
    .Apply
End With

End Sub

Der Code für die Sortierung nach Schriftfarbe ist weitaus komplizierter als bei der Zellenhintergrundfarbe. Der Parameter „SortOn“ enthält jetzt den Wert „xlSortOnFontColor“.

Beachten Sie, dass Sie die Orientierung als ‚xlTopToBottom‘ angeben müssen und eine Farbe für die Sortierung angeben müssen. Diese wird als RGB-Farbe (Rot, Grün, Schwarz) mit Werten von 0 bis 255 angegeben.

Nachdem Sie diesen Code anhand der Beispieldaten ausgeführt haben, sieht Ihr Arbeitsblatt nun wie folgt aus:

daten nach schriftfarbe sortieren

Die Sortierung nach Farben in VBA ist weitaus komplizierter als eine mehrstufige Sortierung, aber wenn Ihr Sortiercode nicht funktioniert (was passieren kann, wenn ein Parameter fehlt oder Sie den Code nicht korrekt eingegeben haben), können Sie immer auf die Aufzeichnung eines Makros zurückgreifen und den aufgezeichneten Code in Ihr VBA integrieren.

Andere Parameter in der VBA-Sortierung verwenden

Es gibt eine Reihe von optionalen Parametern, die Sie in Ihrem VBA-Code verwenden können, um Ihre Sortierung anzupassen.

SortOn

Mit SortOn wird festgelegt, ob die Sortierung nach Zellenwerten, Zellhintergrundfarben oder Zellenschriftfarben erfolgt. Die Standardeinstellung ist Zellenwert.

SortOn = xlSortOnValues

Order

Order legt fest, ob die Sortierung in aufsteigender oder absteigender Reihenfolge erfolgen soll. Die Standardeinstellung ist Aufsteigend.

Order = xlAscending

DataOption

DataOption legt fest, wie Text und Zahlen sortiert werden. Der Parameter xlSortNormal sortiert numerische und Textdaten getrennt. Der Parameter xlSortTextAsNumbers behandelt Text bei der Sortierung wie numerische Daten. Die Voreinstellung ist xlSortNormal.

DataOption = xlSortNormal

Header

Header gibt an, ob der Tabellendatenbereich eine Kopfzeile hat oder nicht. Wenn eine Kopfzeile vorhanden ist, soll diese bei der Sortierung nicht berücksichtigt werden.

Die Parameterwerte sind xlYes, xlNo und xlYesNoGuess. xlYesNoGuess überlässt es Excel, zu bestimmen, ob eine Kopfzeile vorhanden ist, was leicht zu inkonsistenten Ergebnissen führen kann. Die Verwendung dieses Wertes wird nicht empfohlen.

Der Standardwert ist xlNo (keine Kopfzeile in den Daten). Bei importierten Daten gibt es in der Regel eine Kopfzeile, daher sollten Sie diesen Parameter auf xlYes setzen.

Header = xlYes

MatchCase

Dieser Parameter legt fest, ob bei der Sortierung zwischen Groß- und Kleinschreibung unterschieden wird oder nicht. Mögliche Werte sind True oder False. Ist der Wert False, werden Werte in Kleinbuchstaben genauso behandelt wie Werte in Großbuchstaben. Wenn der Wert True ist, zeigt sich der Unterschied zwischen Groß- und Kleinschreibung bei der Sortierung. Der Standardwert ist False.

MatchCase = False

Orientation

Dieser Parameter bestimmt, ob die Sortierung abwärts durch die Zeilen oder über alle Spalten erfolgt. Der Standardwert ist xlTopToBottom (Sortierung durch Zeilen). Sie können xlLeftToRight verwenden, wenn Sie eine horizontale Sortierung wünschen. Werte wie xlRows und xlColumns sind für diesen Parameter nicht geeignet.

Orientation = xlTopToBottom

SortMethod

Dieser Parameter wird nur für die Sortierung von chinesischen Sprachen verwendet. Er hat zwei Werte: xlPinYin und xlStroke. xlPinYin ist der Standardwert.

xlPinYin sortiert nach der phonetischen chinesischen Sortierreihenfolge für Zeichen. xlStroke sortiert nach der Anzahl der Striche in jedem Zeichen.

Wenn Sie ein Sortiermakro aufzeichnen, wird dieser Parameter immer im Code enthalten sein und Sie haben sich vielleicht schon gefragt, was er bedeutet. Solange Sie jedoch nicht mit Daten in chinesischer Sprache arbeiten, ist er von geringem Nutzen.

SortMethod = xlPinYin

Verwenden eines Doppelklick-Ereignisses zum Sortieren von Tabellendaten

Bei all den Funktionen, die Microsoft in die Sortiermethoden für VBA aufgenommen hat, fehlt eine einfache Möglichkeit, mit einem Doppelklick auf eine Spaltenüberschrift die gesamten Tabellendaten nach dieser bestimmten Spalte zu sortieren.

Dies ist eine wirklich nützliche Funktion und es ist einfach, den entsprechenden Code zu schreiben.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'es wird davon ausgegangen, dass die Daten in Zelle A1 beginnen

' Drei Variablen erstellen, um die ausgewählte Zielspalte sowie die maximale Spalte und Zeile _
' der Tabellendaten zu erfassen
Dim Spalte As Integer, R_Spalte As Long, R_Zeile As Long

'Überprüfen, ob der Benutzer auf die Kopfzeile - Zeile 1 - doppelgeklickt hat, andernfalls die Sub beenden
If Target.Row <> 1 Then Exit Sub

'Die maximale Spalte im tabellarischen Datenbereich mit dem Objekt 'UsedRange' erfassen
R_Spalte = ActiveSheet.UsedRange.Columns.Count

'Die maximale Zeile im tabellarischen Datenbereich mit dem Objekt 'UsedRange' erfassen
R_Zeile = ActiveSheet.UsedRange.Rows.Count

'Prüfen, ob der Benutzer auf eine Spalte außerhalb des tabellarischen Datenbereichs doppelgeklickt hat
If Target.Column > RCol Then Exit Sub

'Erfassen der Spalte, auf die der Benutzer doppelt geklickt hat
Spalte = Target.Column

'Vorherige Sortierparameter löschen
ActiveSheet.Sort.SortFields.Clear

'Sortieren des tabellarischen Bereichs wie durch die maximale Zeile und Spalte vom Objekt 'UsedRange' definiert
'Sortieren der Tabellendaten anhand der vom Benutzer doppelt angeklickten Spalte als Sortierschlüssel
ActiveSheet.Range(Cells(1, 1), Cells(R_Zeile, R_Spalte)).Sort Key1:=Cells(1, Spalte), Header:=xlYes

'Zelle A1 auswählen. Dies soll sicherstellen, dass der Benutzer nicht im Bearbeitungsmodus bleibt, nachdem die Sortierung _
' abgeschlossen ist
ActiveSheet.Range("A1").Select

End Sub

Dieser Code muss in das Doppelklick-Ereignis auf dem Blatt mit den Tabellendaten eingefügt werden. Klicken Sie dazu auf den Namen des Arbeitsblatts im Projekt-Explorer-Fenster (in der linken oberen Ecke des VBE-Bildschirms) und wählen Sie dann „Worksheet“ in der ersten Dropdown-Liste des Code-Fensters. Wählen Sie in der zweiten Dropdown-Liste „BeforeDoubleClick“ aus, und geben Sie dann Ihren Code ein.

Beachten Sie, dass keine Namen, Bereiche oder Zellenbezüge in diesem Code fest einkodiert sind, außer dass der Cursor am Ende des Codes in die Zelle A1 bewegt wird. Der Code ist so konzipiert, dass er alle erforderlichen Informationen aus den Zellenkoordinaten, auf die der Benutzer doppelgeklickt hat und der Größe des Tabellendatenbereichs bezieht.

Es spielt keine Rolle, wie groß der Tabellendatenbereich ist. Der Code erfasst immer noch alle erforderlichen Informationen und kann für Daten an beliebiger Stelle in Ihrer Arbeitsmappe verwendet werden, ohne dass Sie Werte fest eintippen müssen.

Die einzige Voraussetzung besteht darin, dass es eine Kopfzeile in den Tabellendaten gibt und dass der Datenbereich in Zelle A1 beginnt, aber die Startposition für den Datenbereich kann innerhalb des Codes leicht geändert werden.

Jeder Benutzer wird von dieser neuen Sortierfunktion angemessen beeindruckt sein!

daten sortieren doppelklick ereignis verwenden

 

Erweitern der Sortierfunktion mit VBA

Microsoft hat eine enorme Flexibilität bei der Sortierung mit einer breiten Palette von Parametern ermöglicht. In VBA können Sie jedoch noch weiter gehen.

Nehmen wir an, Sie möchten alle Werte mit einer fetten Schrift an den Anfang Ihrer Daten sortieren. In Excel ist dies nicht möglich, aber Sie können den entsprechenden VBA-Code schreiben:

Sub SortierenNachSchriftschnitt()

'Variablen erstellen, um die Anzahl der Zeilen und Spalten der Tabellendaten zu speichern
Dim R_Zeile As Long, R_Spalte As Long, N As Long

'Die Bildschirmaktualisierung ausschalten, damit der Benutzer nicht sieht, was passiert (er könnte sehen, dass _
' Werte geändert werden und er sich fragt, warum dies gechieht)
Application.ScreenUpdating = False

'Die Anzahl der Spalten im tabellarischen Datenbereich erfassen
R_Spalte = ActiveSheet.UsedRange.Columns.Count

'Die Anzahl der Zeilen im tabellarischen Datenbereich erfassen
R_Zeile = ActiveSheet.UsedRange.Rows.Count

'Durch alle Zeilen im tabellarischen Datenbereich iterieren und dabei die Kopfzeile ignorieren
For N = 2 To R_Zeile
    'Wenn eine Zelle eine fettgedruckte Schrift aufweist, eine führende 0 vor den Zellenwert setzen
    If ActiveSheet.Cells(N, 1).Font.Bold = True Then
        ActiveSheet.Cells(N, 1).Value = "0" & ActiveSheet.Cells(N, 1).Value
    End If
Next N

'Alle vorherigen Sortierparameter löschen
ActiveSheet.Sort.SortFields.Clear

'Den tabellarischen Datenbereich sortieren. Alle Werte mit einem führenden 0-Wert werden nach oben verschoben
ActiveSheet.Range(Cells(1, 1), Cells(R_Zeile, R_Spalte)).Sort Key1:=Cells(1, 1), Header:=xlYes

'Durch alle Zeilen im tabellarischen Datenbereich iterieren und dabei die Kopfzeile ignorieren
For N = 2 To R_Zeile
    'Wenn eine Zelle eine fettgedruckte Schrift aufweist, den führenden Wert 0 aus dem Zellenwert entfernen, um _
    ' die ursprünglichen Werte wieder herzustellen
    If ActiveSheet.Cells(N, 1).Font.Bold = True Then
        ActiveSheet.Cells(N, 1).Value = Mid(ActiveSheet.Cells(N, 1).Value, 2)
    End If
Next N

'Bildschirmaktualisierung wieder einschalten
Application.ScreenUpdating = True

End Sub

Der Code ermittelt die Größe des Tabellendatenbereichs mithilfe des Objekts „UsedRange“ und durchläuft dann alle Zeilen innerhalb dieses Bereichs. Wenn eine fette Schrift gefunden wird, wird eine führende Null vor den Zellenwert gesetzt.

Anschließend erfolgt eine Sortierung. Da die Sortierung in aufsteigender Reihenfolge erfolgt, wird alles mit einer führenden Null an den Anfang der Liste gestellt.

Der Code durchläuft dann alle Zeilen und entfernt die führenden Nullen, so dass die Daten wieder auf ihre ursprünglichen Werte zurückgesetzt werden.

In diesem Code wird die fettgedruckte Schrift als Kriterium für die Sortierung verwendet, aber Sie könnten auch andere Zellenmerkmale wie z. B. kursive Schrift, Textpunktgröße, Unterstrichschrift, Schriftartname, usw. auf die gleiche Weise verwenden.

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples