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

sortierung vor Speichern zurücksetzen

Forumthread: sortierung vor Speichern zurücksetzen

sortierung vor Speichern zurücksetzen
16.09.2018 14:25:19
Daniel
Hallo
gibt es eine Möglichkeit, die Sortierfunktion also aufsteigent /Absteigend vor dem speichern automatisch per VBA zurück zu setzen oder bessr noch komplett zu unterbinden?
Ohne einen Blattschutz einzusetzen (habe meine Tabelle als Tabelle formatiert)
Ich möchte verhindern, das die Arbeitsmappe versehentlicht in der falschen sortierung abgespeichert wird.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sortierung vor Speichern zurücksetzen
16.09.2018 15:38:46
onur
VBA hat keine leider "Undo"-Funktion.
Du könntest eine Spalte mit der Zeilennummer hinzufügen und danach sortieren lassen.
AW: sortierung vor Speichern zurücksetzen
16.09.2018 15:57:39
EtoPHG
Hallo,
Merke dir die Zeilennummer im unsortierten Blatt in einer Hilfsspalte.
Wandle deren Werte in Inhalte um. Jetzt hast du egal, wie die Daten umsortiert wurden, wieder die Möglichkeit den Originalzustand herzustellen indem du nach der Hilfsspalte sortierst.
Letztere kann auch versteckt werden, so dass sie nicht versehentlich durch Anwender geändert wird.
Gruess Hansueli
Anzeige
AW: sortierung vor Speichern zurücksetzen
16.09.2018 16:04:43
onur
Hallo Hansueli,
Wenn du schon meine Antwort mit anderen Worten und etwas ausführlicher wiederholst, solltest du nicht MIR , sondern Daniel antworten.
Gruß
Onur
Sorry du saure, selbstverbitterte Mimose! (owT)!
16.09.2018 16:44:05
EtoPHG

AW: sortierung vor Speichern zurücksetzen
16.09.2018 18:00:21
Daniel
Hallo Ihr Zwei
Also ich habe in der Tabelle eine Spalte mit einer fortlaofenden Nummer
Nur wie schaut der VBA Code dafür aus um diese aufsteigend zu sortieren?
Anzeige
Makrorecorder! (owT)
16.09.2018 18:02:19
EtoPHG

AW: Makrorecorder! (owT)
16.09.2018 18:22:49
Daniel
Der Macrorecorder ist gut und recht, habe damit diesen Code aufgezeichnet:
Sub sortierung()
' Makro1 Makro
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields.Add _
Key:=Range("Tabelle1[[#All],[LN]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Dieser wird in einem Modul abgelegt.
Venn ich nun aber diesen code wiefolgt in Diese Arbeitsmappe ablege bekomme ich einen Laufzeitfehler
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields.Add _
Key:=Range("Tabelle1[[#All],[LN]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige
AW: Makrorecorder! (owT)
16.09.2018 18:35:51
onur
WO taucht der Fehler auf?
Eine Fehlermeldung weiterzugeben, ohne zu verraten, WO der Fehler auftritt ist, wie eine Telefonnummer ohne Vorwahl weiterzugeben.
Die Position des Fehlers ist schon fast wichtiger.
AW: Makrorecorder! (owT)
16.09.2018 18:48:25
Daniel
Der Macrorecorder ist gut und recht, habe damit diesen Code aufgezeichnet:
Sub sortierung()
' Makro1 Makro
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields.Add _
Key:=Range("Tabelle1[[#All],[LN]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Dieser wird in einem Modul abgelegt.
Venn ich nun aber diesen code wiefolgt in Diese Arbeitsmappe ablege bekomme ich einen Laufzeitfehler
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort.SortFields.Add _
Key:=Range("Tabelle1[[#All],[LN]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige
Kann ich nicht nachstellen, bitte Bspmappe! (owT)
17.09.2018 08:08:17
EtoPHG

;
Anzeige
Anzeige

Infobox / Tutorial

Sortierung in Excel vor dem Speichern zurücksetzen


Schritt-für-Schritt-Anleitung

Um die Sortierung in einer Excel-Tabelle vor dem Speichern zurückzusetzen, kannst Du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul hinzufügen: Rechtsklicke im Projektfenster auf deine Arbeitsmappe, wähle „Einfügen“ und dann „Modul“.

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").Sort.SortFields.Clear
       ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").Sort.SortFields.Add _
       Key:=Range("Tabelle1[[#All],[LN]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
       With ActiveWorkbook.Worksheets("Liste").ListObjects("Tabelle1").Sort
           .Header = xlYes
           .MatchCase = False
           .Orientation = xlTopToBottom
           .SortMethod = xlPinYin
           .Apply
       End With
    End Sub
  4. Speichern: Speichere die Änderungen und schließe den VBA-Editor.

Jetzt wird die Sortierung automatisch zurückgesetzt, wenn Du die Arbeitsmappe speicherst.


Häufige Fehler und Lösungen

Laufzeitfehler beim Speichern
Wenn Du beim Speichern einen Laufzeitfehler erhältst, überprüfe die folgenden Punkte:

  • Falscher Tabellenname: Stelle sicher, dass der Tabellenname ("Tabelle1") korrekt ist. Ändere den Namen im Code, falls nötig.
  • Fehlende Spalte: Vergewissere Dich, dass die referenzierte Spalte ("LN") existiert. Andernfalls wird der Code nicht funktionieren.

Sortierung nicht zurückgesetzt
Wenn die Sortierung nicht zurückgesetzt wird, stelle sicher, dass der Code im Workbook_BeforeSave Ereignis richtig platziert ist.


Alternative Methoden

Eine einfache Möglichkeit, die Sortierung aufzuheben, ist die Verwendung einer Hilfsspalte, die die ursprüngliche Reihenfolge speichert. Du kannst die Schritte wie folgt durchführen:

  1. Hilfsspalte hinzufügen: Füge eine neue Spalte in Deine Tabelle ein, die die ursprünglichen Zeilennummern enthält.
  2. Sortieren: Sortiere Deine Daten nach dieser Hilfsspalte, um die originale Reihenfolge wiederherzustellen.
  3. Spalte verstecken: Verstecke die Hilfsspalte, um versehentliche Änderungen zu verhindern.

Praktische Beispiele

Hier ist ein Beispiel für eine Excel-Tabelle mit einer Hilfsspalte:

LN Name
1 Anna
2 Bernd
3 Clara

Wenn Du die Tabelle nach dem Namen sortierst und später die Originalreihenfolge wiederherstellen möchtest, kannst Du einfach nach der Hilfsspalte (LN) sortieren.


Tipps für Profis

  • Makro verwenden: Wenn Du häufig Tabellen sortierst, erwäge die Verwendung eines Makros, das alle notwendigen Schritte automatisiert.
  • Tabelle formatieren: Stelle sicher, dass Deine Daten als Tabelle formatiert sind, um die Sortierung und Filterung zu erleichtern.
  • VBA-Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinen VBA-Skripten, um Laufzeitfehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Excel-Sortierung aufheben?
Du kannst die Sortierung aufheben, indem Du die Hilfsspalte mit den ursprünglichen Zeilennummern verwendest oder den VBA-Code zur Rücksetzung der Sortierung verwendest.

2. Gibt es eine Möglichkeit, die Sortierung zu speichern?
Ja, Du kannst eine Kopie Deiner Daten erstellen, bevor Du die Sortierung anwendest, um jederzeit die originale Sortierung wiederherzustellen.

3. Warum funktioniert der VBA-Code nicht?
Überprüfe, ob der Tabellenname und die referenzierte Spalte korrekt sind. Außerdem muss der Code im richtigen Kontext (Workbook_BeforeSave) platziert sein.

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