Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Beim Speichern Sortieren

Beim Speichern Sortieren
Galic
Hallo,
ich würde gerne ein einfaches Makro laufen lassen, sobald man auf den Speichern oder Speichern unter.. Button drückt.
Ich hab schon nach Lösungen gesucht:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Sortieren beim Speichern
Range("S3").CurrentRegion.Sort Key1:=Range("S3"), Order1:=xlDescending, _
Header:=xlYes
ActiveSheet.Rows.AutoFit
End Sub
Das funktioniert bei mir aber leider nicht...
Könnt ihr mir weiterhelfen?
Danke :D
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Beim Speichern Sortieren
25.07.2012 14:10:35
Arthur
Hallo Galic.
Die Sub 'Workbook_BeforeSave' liegt im Workbook. Damit ist nicht definiert für welches Worksheet die Rangeangabe gedacht ist. Ansonsten sollte die Sortierung funktionieren, wobei 'CurrentRegion' die Zeilen bis zure ersten leeren Zeile berücksichtigt, nicht unbedingt das ganze Blatt.
Gruß, Arthur.
Anzeige
AW: Beim Speichern Sortieren
25.07.2012 15:44:13
fcs
Hallo Galic,
wie von Arthur bereits erwähnt muss diese Makro unter "DieseArbeitsmappe bzw. ThisWorkbook angelegt werden.
Mit einer Methode wie "CurrentRegion" überläßt man es Excel auszusuchen, welcher Berech bearbeitet werden soll. Das sollte man nur machen, wenn man weiss, dass der korrekte bereich erfasst wird. Besser ist es, eine Methode zu verwenden, bei der amn selber die kontrolle über das Ergebnis hat.
Nachfolgend die Anweisungen, wenn alle Zeilen nach der überschriftenzeile nach Spalte S sortiert werden sollen.
Gruß
Franz
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Sortieren beim Speichern
'With Worksheets("TabelleABC") 'Wenn eine bestimmte Tabelle sortiert werden soll
'oder
With ActiveSheet 'wenn immer die beim Speichern aktive Tabelle sortiert werden soll
With .Range(.Rows(3), .Rows(.Cells.SpecialCells(xlCellTypeLastCell).Row))
.Sort Key1:=.Range("S1"), Order1:=xlDescending, Header:=xlYes
End With
.Rows.AutoFit
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Speichern und Sortieren in Excel automatisieren


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das beim Speichern der Excel-Datei automatisch die Daten sortiert, folge diesen Schritten:

  1. Öffne den Visual Basic-Editor:

    • Drücke ALT + F11, um den Visual Basic-Editor zu öffnen.
  2. Finde das richtige Modul:

    • Im Projekt-Explorer suche nach DieseArbeitsmappe (ThisWorkbook) und klicke darauf.
  3. Füge den VBA-Code ein:

    • Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       'Sortieren beim Speichern
       With ActiveSheet
           With .Range(.Rows(3), .Rows(.Cells.SpecialCells(xlCellTypeLastCell).Row))
               .Sort Key1:=.Range("S1"), Order1:=xlDescending, Header:=xlYes
           End With
           .Rows.AutoFit
       End With
    End Sub
  4. Speichere die Arbeitsmappe:

    • Achte darauf, die Datei im Format „Excel-Makro-fähige Arbeitsmappe“ (*.xlsm) zu speichern, damit das Makro funktioniert.
  5. Teste das Makro:

    • Ändere einige Daten in der Tabelle und klicke auf „Speichern“ oder „Speichern unter“, um zu sehen, ob die Sortierung automatisch erfolgt.

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt:

    • Stelle sicher, dass das Makro im Modul DieseArbeitsmappe eingefügt wurde. Wenn du es in einem anderen Modul platzierst, wird es nicht funktionieren.
  • Fehler: Sortierung erfolgt nicht richtig:

    • Überprüfe, ob die Zelle S3 die korrekten Daten enthält und dass die Range tatsächlich den gewünschten Bereich abdeckt. Verwende .CurrentRegion nur, wenn du sicher bist, dass der Bereich korrekt erfasst wird.
  • Fehler: Excel reagiert langsam:

    • Wenn viele Daten verarbeitet werden, kann das Makro länger dauern. Überlege, die Anzahl der zu sortierenden Zeilen zu reduzieren.

Alternative Methoden

Eine einfache Möglichkeit, die Daten zu sortieren, ist die Verwendung von Excel-Funktionen, anstatt ein Makro zu schreiben. Du kannst die Daten manuell sortieren, indem du die Sortierfunktion in der Menüleiste nutzt:

  1. Markiere die Daten, die du sortieren möchtest.
  2. Gehe zu „Daten“ in der Menüleiste.
  3. Klicke auf „Sortieren“ und wähle die gewünschte Sortierreihenfolge.

Diese Methode ist zwar weniger automatisiert, aber für kleinere Datensätze oft schneller und einfacher.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit Verkaufsdaten in Excel und möchtest diese beim Speichern nach dem Umsatz sortieren. Hier ist ein Beispiel:

  1. Deine Tabelle beginnt in A1, und die Kopfzeile ist in der dritten Zeile.
  2. Der Umsatz steht in Spalte S.

Mit dem oben genannten VBA-Code wird die gesamte Tabelle nach dem Umsatz in Spalte S sortiert, sobald du die Datei speicherst.


Tipps für Profis

  • Verwende spezifische Worksheets: Wenn du sicherstellen möchtest, dass nur eine bestimmte Tabelle sortiert wird, verwende With Worksheets("TabelleXYZ") anstelle von With ActiveSheet.

  • Testen des Codes: Bevor du das Makro auf wichtigen Daten anwendest, teste es immer auf einer Kopie deiner Arbeitsmappe, um unerwartete Ergebnisse zu vermeiden.

  • Fehlerbehandlung einfügen: Du kannst On Error Resume Next verwenden, um Fehler beim Ausführen des Makros zu ignorieren und sicherzustellen, dass das Makro auch bei unerwarteten Situationen weiterläuft.


FAQ: Häufige Fragen

1. Kann ich das Sortieren auf eine andere Spalte anwenden? Ja, ändere einfach die Key1-Angabe in der Sortieranweisung auf die gewünschte Spalte.

2. Was passiert, wenn ich das Makro in einer nicht-makro-fähigen Datei speichere? Das Makro wird nicht gespeichert. Stelle sicher, dass du das Dokument im .xlsm-Format speicherst, um die Makrofunktionalität zu erhalten.

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