Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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

priorisieren einer Spalte über VBA

priorisieren einer Spalte über VBA
stefan
Hallo Zusammen,
habe ein Problem mit einer Arbeitsliste mit der ich einfach nicht weiterkomme...
In den Zeilen 100 bis 5000 stehen meine offenen Arbeiten die ich erledigen muß.
Habe eine Spalte A (A100 bisA5000) in der ich eine Zahl (Prio) eingeben möchte.
z.B. A200 Wert 5
ist die Zahl 5 auser in A200 dann bereits in A100 bis 5000 vorhanden, so soll diese und alle größer 5 um eine Zahl erhöhen.
Ist die Arbeit erledigt , so wird in z.B. in Zeile E345 ein Datum eingetragen. Die Prio aus A345 soll
dann gelöscht z.B von 26 dann zu 0 werden. Nun ist wieder eine neue Priorisierung notwendig, da die 26 rausgefallen ist.
Die Arbeit soll nach jeder neuen Priorisierung nach der Priorität sortiert werden.
Ist die Prio 0 (erledigte Arbeiten) diese sollen dann nach dem Datum sortiert werden...
Ist verdammt kompliziert, ich hoffe ich habs einigermaßen rüber gebracht...
Gibt es einen Excel Freak der mir das versuchen kann in VBA zu zaubern ?
Wäre super, da das meinen VBA Kenntnissen völlig überfordert..
:-)
Gruß
Stefan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: priorisieren einer Spalte über VBA
19.07.2010 23:00:18
fcs
Hallo Stefan,
das folgende Ereignismakro soll die gewünschte Funktionalität haben.
Du musst es im VBA-Editor unter dem entsprechenden Tabellenblatt einfügen.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lPrioritaet As Long, lLastRow As Long, Zeile As Long, vdate
If Target.Row >= 100 And Target.Cells.Count = 1 Then
lLastRow = Me.Cells(Me.Rows.Count, 1).End(xlUp).Row
Application.EnableEvents = False
Select Case Target.Column
Case 1 'Priorität wurde eingegeben
If Not IsNumeric(Target) Or Target.Value 0 eingegeben werden", _
vbInformation + vbOKOnly, "Neue Priorität"
Else
If MsgBox("Priorität neu einsortieren?", vbQuestion + vbYesNo, _
"Neue Priorität") = vbYes Then
lPrioritaet = Target.Value
'Prüfen, ob Priorität schon vorhanden
If Application.WorksheetFunction.CountIf(Range(Cells(100, 1), _
Cells(lLastRow, 1)), lPrioritaet) > 1 Then
'vorhandenen Prioritäten >= Priorität um 1 erhöhen
For Zeile = 100 To lLastRow
If Cells(Zeile, 1) >= lPrioritaet And Zeile  Target.Row Then
Cells(Zeile, 1) = Cells(Zeile, 1) + 1
End If
Next
End If
'Daten nach Priorität und Datum sortieren
With Range(Cells(100, 1), Cells(lLastRow, 5))
.Sort key1:=.Range("A1"), order1:=xlAscending, _
key2:=.Range("E1"), order2:=xlAscending, Header:=xlNo
End With
'Zeile mit geänderter Priorität selektieren
With Range(Cells(100, 1), Cells(lLastRow, 1))
.Find(what:=lPrioritaet, LookIn:=xlValues, _
lookat:=xlWhole).Offset(0, 1).Select
End With
End If
End If
Case 5 'Erledigt Datum wurde eingetragen/gelöscht
If Cells(Target.Row, 1) = 0 Then
MsgBox "Bei einem erledigten Eintrag darf das Datum nicht geändert werden!"
ElseIf IsEmpty(Target) Then
MsgBox "Erledigt-Datum wurde gelöscht, Priorität wird nicht geändert."
Else
If MsgBox("Priorität der erledigten Aktivität auf 0 setzen?", _
vbQuestion + vbYesNo, "Priorität erledigt") = vbYes Then
vdate = Target.Value 'Erledigt-Datum merken
lPrioritaet = Cells(Target.Row, 1) 'Priorität merken
Cells(Target.Row, 1) = 0 'Priorität auf 0 setzen
'Prioritäten größer als erledigte Priorität um 1 reduzieren
For Zeile = 100 To lLastRow
If Cells(Zeile, 1) > lPrioritaet And Zeile  Target.Row Then
Cells(Zeile, 1) = Cells(Zeile, 1) - 1
End If
Next
'Daten sortieren
With Range(Cells(100, 1), Cells(lLastRow, 5))
.Sort key1:=.Range("A1"), order1:=xlAscending, _
key2:=.Range("E1"), order2:=xlAscending, Header:=xlNo
End With
'Zeile mit Erledigt-Datum selektieren
With Range(Cells(100, 5), Cells(lLastRow, 5))
.Find(what:=vdate, After:=Cells(lLastRow, 5), LookIn:=xlValues, _
lookat:=xlWhole, Searchdirection:=xlPrevious).Select
End With
End If
End If
End Select
Application.EnableEvents = True
End If
End Sub

Anzeige
AW: priorisieren einer Spalte über VBA
20.07.2010 06:52:32
stefan
supi !!!
Werde den code gleich mal testen...
DANKE für deine Hilfe Franz !!!!!!!!!!!!!!!!!!!

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige