Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Alphabetische Sortierung in VBA

Alphabetische Sortierung in VBA
13.08.2014 13:51:08
Thomas
Hallo zusammen,
ich weiß, dass es einige Foren zu dem Thema gibt, allerdings habe ich keins gefunden indem mein Problem behandelt wird. Falls es doch eins gibt, bitte ich das zu entschuldigen.
Ich versuche meinen als Tabelle formatierten Bereich beim Starten der Anwendung alphabetisch zu sortieren (nach Spalte A, die allerdings eine Überschrift hat die nicht berücksichtigt werden sollte).
  • 
    Private Sub UserForm1_Activate()
    Worksheets("Datenbank").Activate
    ActiveSheet.Range("Tabelle2").Select
    With ActiveSheet.Range
    .Range("Tabelle2").Sort _
    Key1:=.Range("Tabelle2"), Order1:=xlAscending, _
    Header:=xlGuess, orderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    End With
    End Sub
    


  • Wo genau liegt mein Fehler? Ist es überhaupt möglich einen Bereich der als Tabelle formatiert ist alphabetisch zu sortieren?
    Vielen Dank schonmal an die Helfer!

  • Anzeige

    5
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    header:=xlYes owT
    13.08.2014 13:59:13
    Rudi

    AW: Alphabetische Sortierung in VBA
    13.08.2014 14:01:27
    Daniel
    Hi
    das funktioniert schon.
    du sprichst aber deine Objekte nicht immer richtig an.
    Als Key musst du eine Zelle des zu sortierenden Bereichs angeben, du gibst aber die komplette Tabelle als Sortierkriterium an und das geht nicht.
    probiere es mal so:
    With ActiveSheet.Range("Tabelle2")
    .Sort _
    Key1:=.Cells(1, 1), Order1:=xlAscending, _
    Header:=xlyes, orderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    End With
    
    Gruß Daniel

    Anzeige
    AW: Alphabetische Sortierung in VBA
    13.08.2014 14:03:42
    Klaus
    Hallo Thomas,
    die benannten Tabellen in XL2010 haben doch schon eine sortieren-Funktion an Board:
    Userbild
    Wenn ich eben diese durch den Rekorder laufen lasse, kommt folgendes funktionales Makro heraus:
    Sub Makro1()
    ' Makro1 Makro
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Clear
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add Key:=Range("Tabelle1[[#All],[Spalte1]]"), SortOn:=xlSortOnValues, _
    Order:=xlAscending, DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    End Sub
    
    Noch eben die SELECTS raus und ein WIDTH-Rahmen für die Lesbarkeit:
    
    Sub TabelleSortieren()
    With Worksheets("Tabelle1").ListObjects("Tabelle1").Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("Tabelle1[[#All],[Spalte1]]"), SortOn:=xlSortOnValues, Order: _
    =xlAscending, DataOption:=xlSortTextAsNumbers
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    End Sub
    
    Und dann läuft das, oder nicht?
    Grüße,
    Klaus M.vdT.

    Anzeige
    AW: Alphabetische Sortierung in VBA
    13.08.2014 14:27:22
    Thomas
    Hallo Klaus M.vdT.,
    auf die Idee bin ich natürlich nicht gekommen :(
    Jetzt funktioniert es! :)
    Vielen Dank!

    Danke für die Rückmeldung! owT.
    13.08.2014 14:39:45
    Klaus
    .
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Alphabetische Sortierung in VBA


    Schritt-für-Schritt-Anleitung

    Um einen als Tabelle formatierten Bereich in Excel alphabetisch zu sortieren, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

    1. Öffne den VBA-Editor:

      • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    2. Füge ein neues Modul hinzu:

      • Klicke mit der rechten Maustaste auf VBAProject (deine_datei.xlsm) und wähle Einfügen > Modul.
    3. Füge den Code ein:

      • Kopiere und füge den folgenden Code in das Modul ein:
      Sub TabelleSortieren()
         With Worksheets("Tabelle1").ListObjects("Tabelle1").Sort
             .SortFields.Clear
             .SortFields.Add Key:=Range("Tabelle1[[#All],[Spalte1]]"), SortOn:=xlSortOnValues, _
             Order:=xlAscending, DataOption:=xlSortTextAsNumbers
             .Header = xlYes
             .MatchCase = False
             .Orientation = xlTopToBottom
             .SortMethod = xlPinYin
             .Apply
         End With
      End Sub
    4. Führe das Makro aus:

      • Gehe zurück zu Excel, drücke ALT + F8, wähle TabelleSortieren aus und klicke auf Ausführen.

    Häufige Fehler und Lösungen

    • Fehler: „Key muss eine Zelle sein“:

      • Stelle sicher, dass du beim Sortieren eine spezifische Zelle anstelle des gesamten Bereichs angibst. Siehe den Code im Abschnitt „Schritt-für-Schritt-Anleitung“.
    • Problem mit Überschriften:

      • Wenn deine Tabelle eine Überschrift hat, stelle sicher, dass das Header-Argument auf xlYes gesetzt ist, damit die Überschrift nicht mit sortiert wird.

    Alternative Methoden

    Wenn du keine VBA verwenden möchtest, kannst du auch die integrierte Sortierfunktion in Excel nutzen:

    1. Markiere den Bereich:

      • Wähle die Zellen aus, die du alphabetisch sortieren möchtest.
    2. Gehe zu „Daten“:

      • Klicke auf den Reiter „Daten“ in der Menüleiste.
    3. Wähle „Sortieren“:

      • Klicke auf „Sortieren“ und wähle die Spalte aus, nach der du sortieren möchtest.
    4. Wähle die Sortierreihenfolge:

      • Entscheide dich für „Aufsteigend“ oder „Absteigend“ und klicke auf „OK“.

    Praktische Beispiele

    Hier sind einige praktische Anwendungen der alphabetischen Sortierung in Excel:

    • Liste von Namen: Du kannst eine Liste von Namen alphabetisch sortieren, um sie leichter zu durchsuchen.
    • Produktliste: Sortiere eine Produktliste nach dem Produktnamen, um die Übersichtlichkeit zu verbessern.
    • Kundendaten: Organisiere Kundendaten alphabetisch, um schnell auf Informationen zugreifen zu können.

    Tipps für Profis

    • Automatisch alphabetisch sortieren: Du kannst das Makro beim Öffnen der Arbeitsmappe ausführen, indem du es im Workbook_Open()-Ereignis platzierst.

      Private Sub Workbook_Open()
         Call TabelleSortieren
      End Sub
    • Verwende benannte Bereiche: Nutze benannte Bereiche in deiner Tabelle, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.


    FAQ: Häufige Fragen

    1. Kann ich auch mehrere Spalten alphabetisch sortieren?
    Ja, du kannst mehrere Sortierkriterien im .SortFields.Add hinzufügen, indem du weitere Sortierfelder angibst.

    2. Funktioniert das Makro in allen Excel-Versionen?
    Das bereitgestellte VBA-Skript sollte in Excel 2010 und neueren Versionen einwandfrei funktionieren, da es die ListObject-Funktion verwendet.

    3. Wie kann ich eine Liste alphabetisch sortieren, die keine Tabelle ist?
    Du kannst das gleiche Prinzip anwenden, indem du den Bereich direkt angibst, z. B. Range("A1:A10").Sort für die alphabetische Sortierung.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige