Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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ß
Antworten 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
Antworten 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)
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 2 Nutzer sagen Danke an Flotter Feger für diesen Beitrag:
  • Igelbauer, EasY
Antworten 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ß
Antworten 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)
Antworten 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
Antworten Top
#7
Danke Sabina ! Das Ding kann ich gut gebrauchen. Heart
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Antworten Top
#8
Ah ok, dann ist das kein Add-in sondern etwas selbst gebasteltes.... ich schaue es mir mal an - DANKE!
Antworten 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
Antworten Top


Gehe zu:


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