Microsoft Excel

Herbers Excel/VBA-Archiv

Beim Speichern Sortieren | Herbers Excel-Forum


Betrifft: Beim Speichern Sortieren von: Galic
Geschrieben am: 25.07.2012 13:33:28

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

  

Betrifft: AW: Beim Speichern Sortieren von: Arthur
Geschrieben am: 25.07.2012 14:10:35

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.


  

Betrifft: AW: Beim Speichern Sortieren von: fcs
Geschrieben am: 25.07.2012 15:44:13

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



Beiträge aus den Excel-Beispielen zum Thema "Beim Speichern Sortieren"