Antwort
von
nach 19 Stunden
0
hilfreich
Re: Zeitintervalle aus zwei Tabellen abgleichen
PS: Hast Du Excel 2003 oder 2007?
Code sieht so aus:
Sub Ueberpuefen()
'(Copyright Patrick Seeger)
Dim iIntZeileUrlaub, iIntZeileProjekt, iIntCol, IntUStart, IntUEnde, IntPStart, IntPEnde, IntUKollision, IntPBeschr As Integer
Dim Tabellenblatt1, Tabellenblatt2 As String
'Name der Tabellenblätter
Tabellenblatt1 = "Scheet1"
Tabellenblatt2 = "Scheet2"
'Entfernt die Farblich Markierten Daten!
Worksheets(Tabellenblatt1).Select
Range("B2:C22").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Löscht den Bereich der Kollision!
Range("D2:D22").Select
Selection.ClearContents
Worksheets(Tabellenblatt2).Select
Range("D6:E20").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
' Scheet1: |StartUrlaub: Spalte 2 | EndeUrlaub Spalte 3 |
' Scheet2: |StartProjekt: Spalte 4 | EndeProjekt Spalte 5 |
iIntCol = 258
'Spalten für die Daten
IntUKollision = 4 'Spalte in der das kollidierende Projekt ausgeworfen wird
IntUStart = 2 'Spalte Urlaub StartDatum
IntUEnde = 3 'Spalte Urlaub EndDatum
IntPBeschr = 3 'Spalte ProjektBeschreibung
IntPStart = 4 'Spalte Projekt StartDatum
IntPEnde = 5 'Spalte Projekt EndDatum
For iIntZeileProjekt = 6 To 20
For iIntZeileUrlaub = 2 To 22
iIntCol = 200
'Fall Urlaub geht in das Projekt: Projekt Start > Urlaub Start UND Projekt Start < Urlaub Ende
If Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPStart) >= Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUStart) And Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPStart) <= Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUEnde) Then
Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUKollision) = "Markiertes Datum kollidiert mit " & (Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPBeschr))
With Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUEnde).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = iIntCol
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
'Fall Projekt geht in den Urlaub: Projekt Start < Urlaub Start UND Projekt Ende > Urlaub Start
If Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPStart) <= Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUStart) And Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPEnde) >= Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUStart) Then
Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUKollision) = "Markiertes Datum kollidiert mit " & (Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPBeschr))
With Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUStart).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = iIntCol
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
'Fall Urlaub im gesamten Projekt: Projekt Start < Urlaub Start UND Projekt Ende > Urlaub Ende
If Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPStart) <= Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUStart) And Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPEnde) >= Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUEnde) Then
Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUKollision) = "Markiertes Datum kollidiert mit " & (Worksheets(Tabellenblatt2).Cells(iIntZeileProjekt, IntPBeschr))
With Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUStart).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = iIntCol
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Worksheets(Tabellenblatt1).Cells(iIntZeileUrlaub, IntUEnde).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = iIntCol
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next iIntZeileUrlaub
Next iIntZeileProjekt
Worksheets(Tabellenblatt2).Select
Range("D5").Select
Worksheets(Tabellenblatt1).Select
Range("B1").Select
End Sub