Clever-Excel-Forum

Normale Version: VBA - Datum zwischen zwei Daten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,

ich habe eine Userform, in der ein Anfangsdatum und ein Enddatum eingetragen werden. Zudem habe ich eine Excel-Tabelle, in der bereits Anfangs- (M16:M35) und Enddaten (O16:O35) stehen. Nun möchte ich gerne mittels VBA prüfen, ob das Anfangs- bzw danach das Enddatum zwischen den bereits eingetragenen Daten liegt.

Mit meiner If-Anweisung komme ich nicht weiter und die wird sicher sehr groß (weil er nacheinander die bereits eingetragenen Daten abprüfen muss). Mein Ansatz bisher:


Code:
If TextBox_Beginn.Value >= ThisWorkbook.Sheets("Test").Range("M16").Value And TextBox_Beginn.Value <= ThisWorkbook.Sheets("Test").Range("O16").Value Then
   MsgBox "Liegt dazwischen", vbInformation, "Information"
End If


Habt ihr eine Idee? :)
Hai, 

Prüfe deinen Code in der if Abfrage bei der 2ten Prüfung. Hier sagst du Datum Beginn ist kleiner gleich x obwohl du im ersten Teil sagst das Datum begin größer gleich x ist. Dann empfehle ich dir ein schleifenkonstrukt zu bauen

Edit:
Ich glaube ich habe was falsch verstanden. Du willst das entweder das anfangs Oder das enddatum zwischen den beiden Daten liegt? 

Grus
Hi Oli,

nein das stimmt so nicht, ich sage, dass der Beginn größer als x und kleiner als y sein soll - also genau dazwischen. Aber das Programm setzt es leider nicht um.
Hey, 

Kannst du deine Mappe hochladen?

Gruß
Hey,

das würde dann eine Weile dauern, da ich die Mappe nicht hochladen, sondern eine neue nachbauen müsste.

Habe noch folgenden Code ausprobiert - leider ohne Erfolg:


Code:
Dim Z1 As Long
   For Z1 = ThisWorkbook.Sheets("Test").Cells(16, 13).Row To 35
If Cells(Z1, 13) <= TextBox.Value And Cells(Z1, 15) >= TextBox.Value Then
    MsgBox "Test.", vbInformation, "Information"
End If
Next Z1
Habe eine Lösung gefunden :)


Code:
Dim i As Integer
   For i = 16 To 35
   If Cells(i, 13) <= TextBox_Urlaubsbeginn.Text And Cells(i, 15) >= TextBox_Urlaubsbeginn.Text Then
   MsgBox "Der Eintrag überschneidet sich mit Urlaubszeitraum " & i - 15, vbInformation, "Information"
   End If
Next i
Erledigt!