Makro Sortierung mit Kontrollkästchen
21.12.2021 13:09:25
Hakan
In einer Tabelle mit Nebenkosten, die ich bisher mit 0 und 1 als bezahlt bzw offen markiert hatte, habe ich nun Kontrollkästchen hinzugefügt und dabei die Option "Objektpositionierung: Von Zellposition und Größe unabhängig" eingestellt, damit die Kästchen bei einer Sortierung der Tabelle an der gleichen Stelle bleiben, aber die Zellbezüge aktualisiert werden. Wenn ich die Tabelle manuell sortiere, dann funktioniert das auch wunderbar.
Da ich nicht so gute VBA Kenntnisse habe, habe ich ein Makro aufgezeichnet, um den Sortiervorgang mit einem Knopfdruck auszuführen. Dabei werden die Kontrollkästchen aber nicht korrekt behandelt sondern verschieben sich. Also manuelle Sortierung HUI, aufgezeichnete Makro Sortierung PFUI
Ich habe hier auch ein kleines Demo Excel (mit Makros) hochgeladen, dass das Problem demonstriert.
https://www.herber.de/bbs/user/149931.zip
Wem das zu riskant ist (kann ich verstehen :) der kann das aber einfach selbst nachstellen. In dem Demo Excel sind in Spalte A drei Zeile mit den Werten 1, 2 und 3. In Spalte B drei Kontrollkästchen. Wenn ich jetzt manuell nach Spalte A sortiere, werden die Bezüge der Kontrollkästchen geändert, alles supi.
Diesen Sortiervorgang habe ich dann mit dem Makro Recorder in dem Makro "TEST" aufgezeichnet, bei dieser Aufzeichnung funktioniert die Sortierung auch noch so wie sie soll. Nur wenn ich danach die Sortierung über das Makro ausführe, werden die Kontrollkästchen mit sortiert und die Bezüge nicht geändert. Die Kästchen verhalten sich danach auch etwas seltsam. Einfach mal selber ausprobieren. Und biiitte eine Lösung posten.
Danke schön!!
Hier noch das aufgezeichnete Makro aus meiner Original Excel zur Sortierung. Ich sortiere nach 3 Spalten. Da fehlt vermutlich -hoffentlich- nur ein Parameter, der bei der manuellen Sortierung gesetzt ist, bei der Aufzeichnung aber nicht ins VBA Script mitgeschrieben wird
Sub Nebenkosten_sortieren()
' Nebenkosten_sortieren Makro
' Tastenkombination: Strg+n
Application.Goto Reference:="Nebenkosten"
ActiveWorkbook.Worksheets("NEBENKOSTEN").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("NEBENKOSTEN").Sort.SortFields.Add2 Key:=Range( _
"E2:E28"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("NEBENKOSTEN").Sort.SortFields.Add2 Key:=Range( _
"C2:C28"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("NEBENKOSTEN").Sort.SortFields.Add2 Key:=Range( _
"B2:B28"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("NEBENKOSTEN").Sort
.SetRange Range("A1:V28")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub