Hallo Leute,
Ich hoffe Ihr könnt mir helfen.. ;-) Ich komme leider nicht mehr weiter.
Ich bearbeite gerade unser serviceüberwachungs Plan und finde nicht die passende Lösung für mein Problem in VBA-Excel.
Kurz erklärt:
In Spalte DB:DB ist die Kalenderwoche eingetragen.
In Zelle DB2 wird die Aktuelle Kalenderwoche automatisch generiert (zb. 33 Aktuelle Woche).
Alles was kleiner ist als die Aktuelle Woche (zb.33) sollte farblich erscheinen.
Zugleich sollte ebenfalls die Spalte AD:AD (ServiceTicket Nummer) farblich erscheinen damit man gleich den Pendenten Auftrag erkennen kann.
Ich hoffe Ihr mir Helfen. Bitte
Zb. Farbe:
- 0 Woche Grün
- 1 Woche Gelb
- 2 Woche Orange
- 3 Woche Rot
Terminiert = Grün
Abgeschlossen = Weiss
Leere Zelle gleich nichts (weiss)
Spalte (AD:AD) Spalte (DB:DB)
Heute ist Kalenderwoche (33)
Service - Nummer Datum Service Anfrage
Service-Nr.'030620161144 Terminiert
Service-Nr.'070620161038 33
Service-Nr.'130620161316 Abgeschlossen
Service-Nr.'140620160741 Abgeschlossen
Service-Nr.'140620160855 27
Service-Nr.'020620160859 Terminiert
Service-Nr.'200620160816 33
Service-Nr.'200620161424 Terminiert
Service-Nr.'210620161028 Terminiert
Service-Nr.'210620161054 28
Service-Nr.'210620161608 Abgeschlossen
Service-Nr.'230620161358 Terminiert
Service-Nr.'240620161316 Terminiert
Service-Nr.'270620161028 Abgeschlossen
Service-Nr.'270520161543 32
usw.
Provisorische Lösung :-((
Private Sub DatumPrüfen()
ThisWorkbook.Worksheets("Offene_Objekte").Range("DB1").Value = KalenderwocheNachDin(Date)
Dim Cell As Range
For Each Cell In Range("DB2:DB50")
If Cell.Value <= ThisWorkbook.Worksheets("Offene_Objekte").Range("DB1").Value Then Cell.Interior.ColorIndex = 4
If Cell.Value <= ThisWorkbook.Worksheets("Offene_Objekte").Range("DB1").Value - 1 Then Cell.Interior.ColorIndex = 44
If Cell.Value <= ThisWorkbook.Worksheets("Offene_Objekte").Range("DB1").Value - 2 Then Cell.Interior.ColorIndex = 45
If Cell.Value <= ThisWorkbook.Worksheets("Offene_Objekte").Range("DB1").Value - 3 Then Cell.Interior.ColorIndex = 3
If Cell.Value = "" Then Cell.Interior.ColorIndex = 0
If Cell.Value = "Abgeschlossen" Then Cell.Interior.ColorIndex = 0
If Cell.Value = "Terminiert" Then Cell.Interior.ColorIndex = 0
Next
End Sub
Function KalenderwocheNachDin(dat As Date) As Integer
Dim a As Integer
a = Int((dat - DateSerial(Year(dat), 1, 1) + ((Weekday(DateSerial(Year(dat), 1, 1)) + 1) Mod 7) - 3) / 7) + 1
If a = 0 Then
a = KalenderwocheNachDin(DateSerial(Year(dat) - 1, 12, 31))
ElseIf a = 53 And (Weekday(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 <= 3 Then
a = 1
End If
KalenderwocheNachDin = a
End Function
|