Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
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 Teil2

priorisieren einer Spalte über VBA Teil2
Stefan

Hallo Zusammen, hallo Franz,
hab deinen super Code getestet. Funktioniert genau so wie ich ihn haben wollte
Leider hat sich in der Zwischenzeit die Spalte mit dem Datum (E) auf Spalte N geändert.
Ich bring es einfach nicht auf die Reihe diese simple Anpassung in deinem Code zu machen.
Kannst du mir kurz schreiben in welchen Zeilen ich die Anpassung machen muß ?
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
:-)
Gruß
Stefan

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: priorisieren einer Spalte über VBA Teil2
20.07.2010 20:55:40
fcs
Hallo Stefan.
alle "E1" im Code erstzt due durch "N1".
alle 5 (= Nummer der Spalte E) ersetzt du durch 14 (= Nummer der Spalte N)
Falls die Spalte mit dem Erledigt-Datum nicht die letzte Spalte mit Daten ist, dann muss du in den Code-Zeilen, in denen sortiert wird die 5 nicht durch 14 ersetzen, sondern durch Nummer der letzten Spalte mit Daten.
Gruß
Franz
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige