ein Datum das kein Datum ist?!

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    ein Datum das kein Datum ist?!

    Hallo zusammen.

    ich habe eine Tabelle in die mittels Formular Beginn und Ende des Urlaubs eingetragen wird. Dies funzt einwandfrei. nur ist das Datum irgendwie kein Datum. man muss erst in das Feld klicken in der das Datum steht und enter drücken damit das wirklich ein Datum ist. Es gibt auf der Seite eine Auswertung die erst anfängt zu funzen, wenn ich das Datum bestätigt habe.

    Also was kann man machen? oder hab ich etwas falsch definiert?

    der Code des eintragens :

    Quellcode

    1. Private Sub CommandButton6_Click()
    2. Dim lZeile As Long
    3. Dim Test As String
    4. If ListBox2.ListIndex = -1 Then Exit Sub
    5. If Trim(CStr(TextBox2.Text)) = "" Then
    6. MsgBox "Urlaubsbeginn eintragen", vbCritical + vbOKOnly, "FEHLER!"
    7. Exit Sub
    8. End If
    9. lZeile = 2
    10. Test = UserForm2.TextBox1.Value
    11. Sheets(Test).Select
    12. Do While Trim(CStr(Sheets(Test).Cells(lZeile, 1).Value)) <> ""
    13. If ListBox2.Text = Trim(CStr(Sheets(Test).Cells(lZeile, 1).Value)) Then
    14. Sheets(Test).Cells(lZeile, 1).Value = Trim(CStr(TextBox2.Text))
    15. Sheets(Test).Cells(lZeile, 2).Value = TextBox3.Text
    16. Sheets(Test).Cells(lZeile, 3).Value = CheckBox1.Value
    17. If ListBox2.Text <> Trim(CStr(TextBox2.Text)) Then
    18. Call UserForm_Initialize
    19. If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
    20. End If
    21. Exit Do
    22. End If
    23. lZeile = lZeile + 1
    24. Loop
    25. End Sub
    Aus Deinen Infos geht zwar nicht hervor, welche Excel-Zeile in welcher Codezeile jetzt mit Deinem Nicht-Datum beschrieben wird. Aber sei's drum. Du arbeitest mit Text. Woher soll Excel wissen, dass es sich dabei um ein Datum handelt? Mach in Deiner Codezeile, die Dein "Datum" in eine Excelzeile eintragen soll, folgendes:

    Visual Basic-Quellcode

    1. .Cells(x, y).Value = CDate(DeinText)

    Die CDate-Funktion versucht, Text in ein Datum zu wandeln. Wenn ein Text als Datum interpretiert werden konnte, steht in Deiner Zelle ein Datum und dann können Deine Excel-Datumsfunktionen auch damit rechnen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    SPitze... Problem erkannt
    Gefahr gebannt :)
    funzt :)

    Quellcode

    1. Private Sub CommandButton6_Click()
    2. Dim lZeile As Long
    3. Dim Test As String
    4. Dim Datum1 As Variant
    5. Dim datum2 As Variant
    6. If ListBox2.ListIndex = -1 Then Exit Sub
    7. If Trim(CStr(TextBox2.Text)) = "" Then
    8. MsgBox "Urlaubsbeginn eintragen", vbCritical + vbOKOnly, "FEHLER!"
    9. Exit Sub
    10. End If
    11. lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
    12. Test = UserForm2.TextBox1.Value
    13. Sheets(Test).Select
    14. Datum1 = TextBox2.Text
    15. datum2 = TextBox3.Text
    16. Do While Trim(CStr(Sheets(Test).Cells(lZeile, 1).Value)) <> ""
    17. If ListBox2.Text = Trim(CStr(Sheets(Test).Cells(lZeile, 1).Value)) Then
    18. Sheets(Test).Cells(lZeile, 1).Value = CDate(Datum1)
    19. 'Sheets(Test).Cells(lZeile, 1).Value = Trim(CStr(TextBox2.Text))
    20. Sheets(Test).Cells(lZeile, 2).Value = CDate(datum2)
    21. Sheets(Test).Cells(lZeile, 3).Value = CheckBox1.Value
    22. If ListBox2.Text <> Trim(CStr(TextBox2.Text)) Then
    23. 'Call UserForm_Initialize
    24. If ListBox2.ListCount > 0 Then ListBox2.ListIndex = 0
    25. End If
    26. Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
    27. End If
    28. lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    29. Loop
    30. End Sub
    Hallo,

    vor CDate() prüfe ich erst, ob es überhaupt ein Datum ist. Sonst gibt es einen Fehler, dass der Typ nicht passt.

    Visual Basic-Quellcode

    1. If IsDate(TextBox1.Text) Then
    2. Debug.Print CDate(TextBox1.Text)
    3. End If

    Gruß
    Peterfido

    Keine Unterstützung per PN!