AW: VBA automatisch Sortieren nach Einträgen
15.03.2017 11:33:54
Silas
Hi Yannick,
habe hier mal was zusammengebastelt, ist allerdings nicht perfekt. Du musst beachten, dass erst sortiert wird, wenn eine Aufgabe erledigt wurde. Neue Einträge müssen demnach an der richtigen Stelle bzgl. der Priorität eingefügt werden (neue Zeile einfügen). Sie dürfen nicht unter den erledigten stehen, weil sie sonst nicht wieder nach oben verschoben werden. Außerdem wird das Makro nicht ausgeführt, wenn du mehrere Zellen gleichzeitig veränderst (z.B. mehrere Kürzel löschen).
Probier einfach aus und sag mir, wenn was geändert werden soll (Hoffe, ich komme zeitlich dazu).
Füge folgenden Code in den Code deiner Arbeitsmappe ein (in der Entwickleransicht links auf "Tabelle1"):
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim lastrow As Integer
Dim i As Integer
Dim rw As Integer
Dim col_Prio As Range
Dim col_Abnahme As Range
lastrow = Cells(Rows.Count, 6).End(xlUp).Row
Set col_Abnahme = Tabelle1.Range(Cells(2, 9), Cells(lastrow, 9))
If Not Application.Intersect(Target, col_Abnahme) Is Nothing Then
For i = 2 To lastrow
If Tabelle1.Cells(i, 10).Value "0" Then
Set col_Prio = Tabelle1.Range(Cells(2, 1), Cells(i - 2, 1))
Exit For
End If
Next
If i - 1 = lastrow Then
Set col_Prio = Tabelle1.Range(Cells(2, 1), Cells(lastrow - 1, 1))
End If
On Error GoTo weiter
If Target.Value "" Then
If Target.Offset(0, 1).Value "0" Then
Application.EnableEvents = True
Exit Sub
End If
rw = Target.Row
' "1" eintragen
Tabelle1.Cells(Target.Row, 10).Value = "1"
' Zeile wird verschoben
Tabelle1.Rows(lastrow + 1).Insert
Tabelle1.Range(Cells(Target.Row, 1), Cells(Target.Row, 10)).Cut _
Tabelle1.Range(Cells(lastrow + 1, 1), Cells(lastrow + 1, 10))
Tabelle1.Rows(rw).Delete
' Sortierung
Tabelle1.Range(Cells(2, 1), Cells(i - 2, 10)).Sort key1:=col_Prio, Order1:= _
xlAscending
ElseIf Target.Value = "" Then
Tabelle1.Cells(Target.Row, 10).Value = "0"
End If
End If
weiter:
Application.EnableEvents = True
End Sub
Hoffe, du kommst damit zurecht. Viel Spaß!
Gruß
Silas