VBA-Code überprüfen
#1
Hi Leute,

ich habe eine Userform, in der man Urlaubsbeginn und -ende eintragen soll. Meine Vision war, dass man nur Tag und Monat einträgt und er dann das Jahr (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1)) automatisch ergänzt.

Das funktioniert im Feld "Urlaubsbeginn" auch sehr gut:


Code:
Private Sub TextBox_Urlaubsbeginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim i As Integer

'Überprüfe, ob in der Textbox ein Datum eingetragen ist
If IsDate(TextBox_Urlaubsbeginn.Text) Then
   TextBox_Urlaubsbeginn.Text = Format(CDate(TextBox_Urlaubsbeginn.Text), "DD.MM." & ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1))
       'Prüfen, ob Überschneidungen vorhanden sind
       For i = 16 To 35
       If Cells(i, 13) <= CDate(TextBox_Urlaubsbeginn.Value) And Cells(i, 15) >= CDate(TextBox_Urlaubsbeginn.Value) Then
       MsgBox "Der Eintrag überschneidet sich mit dem Urlaubszeitraum " & i - 15, vbInformation, "Information"
       Cancel = True
       End If
       Next i
ElseIf TextBox_Urlaubsbeginn.Text <> "" Then
   MsgBox "Bitte gültiges Datum eingeben.", vbInformation, "Information"
   TextBox_Urlaubsbeginn.Text = ""
End If

End Sub



Ich habe beim Urlaubsende allerdings noch einige Fehlerroutinen eingebaut, sodass die automatische Ergänzung immer streikt :(
So sieht der Code aus:


Code:
Private Sub TextBox_Urlaubsende_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim i As Integer

'Überprüfe, ob in der Textbox ein Datum eingetragen ist, welches größer als der Urlaubsbeginn ist
If IsDate(TextBox_Urlaubsende.Text) Then
       If CDate(TextBox_Urlaubsbeginn.Text) > CDate(TextBox_Urlaubsende.Text) Then
           MsgBox "Enddatum muss größer als Beginndatum sein.", vbInformation, "Information"
           Cancel = True
               ElseIf CDate(TextBox_Urlaubsende.Text) > "31.01." & (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1) + 1) Then
               MsgBox "Bitte ein Datum eingeben, welches kleiner ist als 31.01." & (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1) + 1), vbInformation, "Information"
               Cancel = True
       Else
           TextBox_Urlaubsende.Text = Format(CDate(TextBox_Urlaubsende.Text), "DD.MM." & ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1))
           'Prüfen, ob Überschneidungen vorhanden sind
           For i = 16 To 35
           If Cells(i, 13) <= CDate(TextBox_Urlaubsende.Value) And Cells(i, 15) >= CDate(TextBox_Urlaubsende.Value) Then
           MsgBox "Der Eintrag überschneidet sich mit dem Urlaubszeitraum " & i - 15, vbInformation, "Information"
           Cancel = True
           End If
           Next i
           End If
ElseIf TextBox_Urlaubsende.Text <> "" Then
   MsgBox "Bitte gültiges Datum eingeben.", vbInformation, "Information"
   TextBox_Urlaubsende.Text = ""
End If

End Sub



Vielleicht kann ja einer drüber schauen, wo es hakt ... ich bin mit meinem Latein am Ende :D

Danke und Gruß
Top
#2
Benütze ein Combobox die gültige Daten (mehrfach von Datum) enthällt.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#3
Hallo,

warum rufst du bei Doppelklick auf die TextBox nicht einfach ein Kalender-Control auf ?

Wenn möglich keines von Microsoft ... :89:

Habe dir mal ein Beispiel angehangen ...


Angehängte Dateien
.xlsm   Kalender_CM.xlsm (Größe: 28,28 KB / Downloads: 13)
[-] Folgende(r) 2 Nutzer sagen Danke an Flotter Feger für diesen Beitrag:
  • Igelbauer, EasY
Top
#4
Guten Morgen... 

den Vorschlag von snb kann ich leider nicht nachvollziehen  Huh

Sabina, das hatte ich tatsächlich vor, allerdings ist bei unserer excel-version auf der Arbeit kein datepicker installiert und die Anzahl der pcs der user, die das Programm nutzen sollen ist schier unzählbar. Naja und installieren dsrf ich da leider auch nix. 

Gruß
Top
#5
Moin!
Deshalb ist in Sabinas Datei auch kein Date-Picker, sondern etwas selbstgestricktes!
Schließlich schrieb sie nicht umsonst:
Zitat:Wenn möglich keines von Microsoft ... [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Klicke doppelt in eine Textbox des Userforms und staune! Wink

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
z.B.

http://www.snb-vba.eu/VBA_Fill_combobox_...ml#L_5.4.4
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#7
Danke Sabina ! Das Ding kann ich gut gebrauchen. Heart
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Top
#8
Ah ok, dann ist das kein Add-in sondern etwas selbst gebasteltes.... ich schaue es mir mal an - DANKE!
Top
#9
Oder ?


Angehängte Dateien
.xlsb   __Userform kalender_snb.xlsb (Größe: 23,92 KB / Downloads: 3)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste