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

Zeitraum pruefen VBA

Zeitraum pruefen VBA
12.12.2019 11:15:29
Torsten
Hallo Leute,
ich stehe gerade etwas auf der Leitung und bekomme eine Abfrage nicht hin.
Wie kann ich pruefen ob sich 2 Zeitraeume ueberschneiden?
Hintergrund ist ein Abwesenheitsplaner. Hier moechte ich Doppeleintraege verhindern. Also als Beispiel:
Fuer Mitarbeiter 1 ist Urlaub eingetragen von 17.12.2019 - 20.12.2019
Mitarbeiter steht in Spalte A, Anfangsdatum Spalte B, Enddatum Spalte C
Jetzt wird versucht, vom 16.12 bis 18.12. noch dienstfreie Tage einzutragen. Dann soll eine MsgBox erscheinen, dass sich dieser Zeitraum mit einem schon bestehenden Eintrag ueberschneidet.
Also moechte ich abfragen, wenn einer der Tage der neuen Anfrage in den schon bestehenden Zeitraum faellt, dann die Msgbox.
Ich hoffe, ihr versteht, was ich meine.
Vielen Dank schon mal fuer eure Hilfe
Bitte nur VBA Loesungen, da ich das in einen bestehenden Code einbauen muss.
Gruss Torsten

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitraum pruefen VBA
12.12.2019 12:27:15
Bernd
Servus Torsten,
vielleicht so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim intVLZ As Integer
If Target.Count > 1 Then Exit Sub
If Target.Column > 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
With ActiveSheet
intVLZ = .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(Rows.Count, 2).End(xlUp).Row > intVLZ Then
intVLZ = .Cells(Rows.Count, 2).End(xlUp).Row
End If
If .Cells(Rows.Count, 3).End(xlUp).Row > intVLZ Then
intVLZ = .Cells(Rows.Count, 3).End(xlUp).Row
End If
intVLZ = intVLZ - 1
For i = 2 To intVLZ
If .Cells(Target.Row, 2).Value >= .Cells(i, 2).Value And .Cells(Target.Row, 2).Value = .Cells(i, 2).Value And .Cells(Target.Row, 3).Value 
Grüße, Bernd
Anzeige
AW: Zeitraum pruefen VBA
12.12.2019 14:08:35
Torsten
Hallo Bernd,
danke fuer deinen Code. Werde ich mir zu Gemuete fuehren.
Habe allerdings mittlerweile selbst noch weitergegruebelt und bin zu einer Loesung gekommen mit einer Hilfstabelle. Muss sehen, was fuer mich besser funktioniert.
Meine Loesung laeuft darauf hinaus, dass ich neu eingegebenes Start- und Enddatum in die Hilfstabelle eintragen lasse, mir dort dann per DataSeries die einzelnen Tage zwischen beiden Daten auflisten lasse und Tag fuer Tag vergleiche, ob er zwischen schon bestehendem Start- und Enddatum liegt. Beim ersten Treffer wird dann die MsgBox angezeigt, denn dann ueberschneiden sich beide Zeitraeume.
Trotzdem vielen Dank.
Gruss Torsten
Anzeige
AW: Zeitraum pruefen VBA
12.12.2019 15:37:05
Sigi
Hallo Torsten,
ich hab' eine VBA-Funktion, die Terminüberschneidung prüft. Vielleicht kannst du sie ja gebrauchen.
Function IstTerminUeb(Dt1Von As Date, Dt1Bis As Date, Dt2Von As Date, Dt2Bis As Date) As  _
Boolean
If Dt1Von > 40000 And Dt1Bis > 40000 And Dt2Von > 40000 And Dt2Bis > 40000 And _
Dt1Von  Dt1Bis And Dt2Bis > Dt1Bis Then
IstTerminUeb = False
Else
IstTerminUeb = True
End If
Else
IstTerminUeb = "#WERT!"
End If
End Function
Gruß
Sigi
AW: Zeitraum pruefen VBA
13.12.2019 06:31:24
Torsten
Danke auch dir Sigi. Muss ich auch mal probieren.
Schoenes WE

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige