Office: Makro Sortierung unabhängig von der Tabellenblattbezeichnung

Helfe beim Thema Makro Sortierung unabhängig von der Tabellenblattbezeichnung in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich benötige Unterstützung zu Makros in Excel, bin absoluter Makro-Neuling. Ausgangslage: Eine aus Pivot generierte Tabelle mit den... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von nicd, 29. November 2020.

  1. Makro Sortierung unabhängig von der Tabellenblattbezeichnung


    Hallo,

    ich benötige Unterstützung zu Makros in Excel, bin absoluter Makro-Neuling.

    Ausgangslage: Eine aus Pivot generierte Tabelle mit den entsprechenden Filterfunktionen in der ersten Zeile und dem automatisch vergebenen Namen "Tabelle 1".

    Per Makro möchte ich eine benutzerdefinierte Sortierung vornehmen nach 3 Ebenen:
    Alle Zeilen, die als Tabelle 1 aus der Pivot generiert werden, sollen nach Spalte C, D und schließlich E, jeweils aufsteigend sortiert werden. Der Kopf soll natürlich stehen bleiben.

    Das habe ich mit folgendem hinbekommen (über Funktion Makro aufzeichnen):

    Sub Makro2a()
    '
    ' Makro2a Makro
    '

    '
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Clear
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add2 Key:=Range("Tabelle1[Datum]"), SortOn:=xlSortOnValues, Order:= _
    xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add2 Key:=Range("Tabelle1[MA]"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort.SortFields. _
    Add2 Key:=Range("Tabelle1[von]"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    End Sub


    Dabei entsteht das Problem, dass das Makro nur auf die Tabelle 1 angewandt wird. Wenn weitere Datentabellen aus Pivot ("Tabelle 2" ...) kommen, passiert logischerweise nichts.

    Ich möchte es gern unabhängig von der Tabellenblattbezeichnung ausführen können - halt für das gerade geöffnete Tab.blatt.



    Gleich vorab schon mal Vielen Dank für eure Hilfe!

    :)
     
  2. Hi,

    Wen wunderts? Wenn Du
    Code:
    angibst, dann wird auch nur das berücksichtigt.
    Wenn Du flexibel sein willst, musst Du Variablen benutzen.
    Zumindest je eine für das Tabellenblatt, eine für das Listobjekt, und eine (oder ein Array) für die zu sortierende(n) Spalte(n).

    Dazu musst Du erst mal die Sub umbenennen. Am Besten natürlich in Sub Sortieren

    Dann brauchst Du noch die Parameterliste, beispielsweise:
    Code:
    Dann musst Du m Code alle hartcodierten Vorkommen durch die Variablennamen ersetzen.
    Also statt:
    Code:
    so:
    Code:
    Gut wäre auch, wenn Du with verwendest, so dass Du das nicht ständig neu formulieren musst.

    Bevor Du diese Sub dann aufrufst, müssen die Objekte natürlich auch als entsprechende Objekte gesetzt werden.

    Das kannst Du so machen:
    Code:
    Und wie Du siehst, wäre es durchaus angebracht, das Listobjekt auch umzubenennen. Meinetwegen in liTabelle1, damit man es Namenstechnisch betrachtet vom Worksheet unterscheiden kann. Aber egal....
    Nachdem Du das gemacht hast, kannst Du Deine Sortieroutine ganz flexibel aufrufen:

    Code:
    Übrigens.... ActiveWorkbook, ActiveCell etc. sind selten gute Ideen. Wer weiß schon immer, was gerade aktiv ist....
     
  3. Hallo R J,

    Danke für deine Antwort - die mich zugegebenermaßen als Neuling überfordert.

    Ich hatte eher an so eine Lösung gedacht:
    http://www.*************************562140_0_0_asc.php

    Würde das hier auch funktionieren und an welchen Stellen ist dass was zu ändern?

    LG
    nicd
     
  4. Makro Sortierung unabhängig von der Tabellenblattbezeichnung

    Dein Link ist leider nicht erreichbar....

    Hab Dir mal ein Beispiel gebastelt:
    Das Beispiel setzt voraus, dass es ein Tabellenblatt "Personen" gibt, auf dem sich eine formatierte Tabelle Namens "tblPersonen" befindet (also beide wurden manuell umbenannt), die über eine Spalte "Nachname" verfügt.

    Code:
    Aus Add2 hab ich mal ein Add gemacht, damit der Code auch auf älteren Excelversionen läuft...
     
  5. ...hier mal ein noch einfacheres Vorgehen. Sollte auch für Anfänger geeignet sein. Die Sub FlexibelSortieren bleibt unverändert. Lediglich die Sortierwünsche im Sub Startsortierung müssen je nach Wunsch angepasst werden.
    Dabei gilt:
    Aufruf der Prozedur mit ihrem Namen: FlexibelSortieren + Leerzeichen
    Parameter 1 (hier Artikel) entspricht dem Tabellennamen, auf dem sich das Listobjekt befindet
    Parameter 2 (nach dem 1. Komma), ist der Name des Listobjektes
    Parameter 3 (nach dem 2. Komma), die Spalte oder durch Komma getrennte Angabe der Spalten, die in Reihenfolge der Angabe sortiert werden sollen. Führende oder am Ende befindliche Leerzeichen in den Spaltennamen des Listobjekts sind nicht zulässig.

    Alle Parameter als Zeichketten angeben

    Insgesamt sähe der Aufruf dann beispielsweise so aus: FlexibelSortieren "Artikel", "tblArtikel", "Warengruppe,Artikelbezeichnung,Menge"

    oder als Code:
    Code:
    Hier mal als Gesamtbeispiel:
    Code:
     
Thema:

Makro Sortierung unabhängig von der Tabellenblattbezeichnung

Die Seite wird geladen...
  1. Makro Sortierung unabhängig von der Tabellenblattbezeichnung - Similar Threads - Makro Sortierung unabhängig

  2. Name der Datei durch Excel geändert

    in Microsoft Excel Hilfe
    Name der Datei durch Excel geändert: Hallo und guten Abend, Die Datei wird mittels Button (VBA) zwischen gesichert. Das Makro sichert zuvor die Datei und erstellt zus. eine Sicherungsdatei mit der Erweiterung Beispiel-"Sich"....
  3. Ein Makro für mehrere Register

    in Microsoft Excel Hilfe
    Ein Makro für mehrere Register: Moin, ich habe ein Makro wo Daten aus dem Register Master kopiert werden und Register, das mit einem Datum beschriftet ist. Ich möchte in Jedem Register ein Button haben was Daten aus dem Master...
  4. Makro öffnet unerwartete Datei

    in Microsoft Excel Hilfe
    Makro öffnet unerwartete Datei: Hallo Forum, ich brächte euer Schwarmwissen. Arbeite mit Excel eine Auftragsbearbeitung. Dort habe ich mir einen Button mit Makro erstellt und nutze diesen schon lange. Das Makro generiert ein...
  5. Leerzeilen entfernen

    in Microsoft Word Hilfe
    Leerzeilen entfernen: Hallo in die Runde, ich habe das Problem bzw. den Wunsch in einem DOC die Leerzeilen zu entfernen und das per Makro. Allerdings gelingt es nicht Hintergrund das DOC wird aus einer Dot-Datei...
  6. makro sortierung trotz blattschutz

    in Microsoft Excel Hilfe
    makro sortierung trotz blattschutz: hallo ich habe ein problem mit der sortierung meiner tabellenblätter (ab blatt2 und folgende) durch ein makro, wenn ich einen blattschutz verwende. die sortierung an sich funktioniert...
  7. Makro-Fehler bei Sortierung von Daten

    in Microsoft Excel Hilfe
    Makro-Fehler bei Sortierung von Daten: Hallo! Ich habe eine fremde Datei erhalten, in der ich nun einige Zeilen eingefügt habe. Dachte schon, daß ich an alles gedacht habe - aber: Es gibt in dieser Datei auch Makros, die einen Teil...
  8. Makro für Sortierung eines Bereiches und Einfügen einer Leerzeile bei Gruppenwechsel

    in Microsoft Excel Hilfe
    Makro für Sortierung eines Bereiches und Einfügen einer Leerzeile bei Gruppenwechsel: Hallo Forumgemeinde, Ich habe eine Tabelle mit verschiedenen Angaben in den Spalten A bis N. Derzeit gibt es ca. in 30 Zeilen Eintragungen, täglich kommen ca. 2-3 Zeilen dazu. Deshalb muss die...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden