Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro Sortierfunktion

Makro Sortierfunktion
30.10.2016 10:18:38
Sven
Juhu,
ich habe ein Makro aufgezeichnet , welches eine Tabelle nach bestimmten werten sortieren soll .
Dieses habe ich dann in das Tabellenblatt geschrieben und es soll sich aktivieren bei Änderungen .
Jedoch bekomme ich die Fehlermeldung "Laufzeitfehler 28, nicht genügend Stapelspeicher vorhanden.
Kann man das irgendwie anpassen ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Sortieren Makro
' Sortieren der Tabelle Personalstamm
Range("Tabelle1[[#Headers],[Name ]]").Select
Application.DeleteCustomList ListNum:=13
Application.AddCustomList ListArray:=Array("Filialleiter", _
"Stellvertretung FL", "Verkäufer", "Aushilfe")
Application.DeleteCustomList ListNum:=11
Application.AddCustomList ListArray:=Array("Vollzeit", "Teilzeit", "AZUBI", _
"Aushilfe")
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Add Key:=Range("Tabelle1[Position]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, CustomOrder:= _
"Filialleiter,Stellvertretung FL,Verkäufer,Aushilfe", DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Add Key:=Range("Tabelle1[Anstellungsart]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Vollzeit,Teilzeit,AZUBI,Aushilfe", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Add Key:=Range("Tabelle1[Eintrittsdatum]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, CustomOrder:="Datum", DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Sortierfunktion
30.10.2016 10:24:35
Hajo_Zi
bei Änderung ist es die falsche Aktion.
Private Sub Worksheet_Change(ByVal Target As Range)
Nur wenige können dies nachvollziehen, da nur wenige Deine Datei sehen.

Deine Beiträge grenzen schon an Auftragsprogramm
30.10.2016 10:26:06
robert
owT
AW: Makro Sortierfunktion
30.10.2016 13:56:30
Daniel
Hi
die Problemursache ist eigentlich ganz offensichtlich und ergibt sich schon aus der ersten Programmzeile in Verbinung mit der Fehlermeldung:
der Laufzeitfehler 28 "nicht genügend Stapelspeicher" tritt dann auf, wenn ein Automatisch startendes Eventmakro (hier SelectionChange) sich in einer Endlosschleife immer selbst aufruft.
Das ist nämlich möglich, den wenn in einem Eventmakro das entprechende Event ausgeführt wird, startet das Eventmakro erneut.
hier wäre das die Programmzeile:
Range("Tabelle1[[#Headers],[Name ]]").Select
zur lösung des Problems gibt es folgende Ansätze:
1. muss die Selektion überhaupt geändert werden und kann man diese Programmzeile nicht auch weglassen
2. ist SelectionChange (verschieben des Cursors) das richtige Event für diese Aktion, oder wäre ein anderss Event wie Change (Ändern eines Zellinhaltes) nicht besser geeignet
3. wenn es sich nicht vermeiden lässt, eine eventauslösende Aktion im Eventmakro auszuführen, kann man den Selbstaufruf vermeiden, indem man vor der Aktion den Befehl Application.EnableEvents = False ausführt
Danach muss man noch den Befehl Application.Events = True einfügen (spätesten bei Makroende), weil sonst diese Einstellung nach Makroende erhalten bleibt und dann die Datei nicht mehr richtig funktioniert.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Sortieren Makro
' Sortieren der Tabelle Personalstamm
Application.EnableEvents = False
Range("Tabelle1[[#Headers],[Name ]]").Select
Application.DeleteCustomList ListNum:=13
Application.AddCustomList ListArray:=Array("Filialleiter", _
"Stellvertretung FL", "Verkäufer", "Aushilfe")
Application.DeleteCustomList ListNum:=11
Application.AddCustomList ListArray:=Array("Vollzeit", "Teilzeit", "AZUBI", _
"Aushilfe")
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Add Key:=Range("Tabelle1[Position]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, CustomOrder:= _
"Filialleiter,Stellvertretung FL,Verkäufer,Aushilfe", DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Add Key:=Range("Tabelle1[Anstellungsart]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Vollzeit,Teilzeit,AZUBI,Aushilfe", DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort. _
SortFields.Add Key:=Range("Tabelle1[Eintrittsdatum]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, CustomOrder:="Datum", DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Personalstamm").ListObjects("Tabelle1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.EnableEvents = True
End Sub
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige