VBA - Datumsproblem
#1
Hi Community,

immer wieder hakt es bei mir in Sachen VBA was die Formatierungen etc angeht.
Ich möchte gerne in eine intelligente Tabelle Eintragungen aus einer Userform machen. Leider schaffe ich es nicht, dass er die Daten in dem Format "Datum" als "DD.MM.YYYY" einträgt. Er wählt immer Standard, sodass die in der Nachbarzelle eingefügte Formel damit nicht weiterrechnen möchte (Abfrage, ob ein Datum zwischen den zwei Datumsangaben liegt). Ich habe schon versucht, die Spalte als Ganzes in dem Format "Datum" zu Formatieren - beim Hinzufügen einer neuen Zeile mit der Userform wird aber nur "Standard" eingetragen.

Ich würde gerne eine Beispieldatei hochladen, die Original enthält jedoch sehr viel Code und ist gespickt mit vielen personenbezogenen Daten. Bis ich das nachgebaut habe, vergehen Tage. Ich versuche es deshalb erstmal so und würde mich über Hilfe sehr freuen:

Folgenden Code nutze ich als Beispiel in der Userform bei der Eingabe der Daten in die Userform:

Code:
Private Sub Txt_anwesend_Beginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Prüft, ob im Feld ein Datum geschrieben wurde bzw. wandelt es dann um
If Txt_anwesend_Beginn.Value <> "" Then
   If IsDate(Txt_anwesend_Beginn.Text) Then
       Txt_anwesend_Beginn.Text = Format(Txt_anwesend_Beginn.Text, "DD.MM.YYYY")
   Else
       MsgBox "Bitte gültiges Datum eingeben", vbOKOnly & vbExclamation, "Ungültige Eingabe"
       Txt_anwesend_Beginn.Value = ""
       Cancel = True
   End If
End If
End Sub

Zum Eintragen in das Tabellenblatt wird dann dieser Code verwendet:

Code:
Private Sub Cmd_Uebernehmen_Click()
Dim letzte_zeile As Integer
letzte_zeile = ThisWorkbook.Sheets("Mitarbeiter").Cells(Rows.Count, 1).End(xlUp).Row + 1

'Eintragungen in die Tabelle vornehmen
Application.CellDragAndDrop = True
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 1) = Combo_Zugehoerigkeit.Value
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 2) = Txt_Name.Value
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 6) = Txt_abwesend_Beginn.Value
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 7) = Txt_abwesend_Ende.Value
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 9) = Txt_anwesend_Beginn.Value
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 10) = Txt_anwesend_Ende.Value
Application.CellDragAndDrop = False
Unload Neuer_Mitarbeiter
End Sub

Die beiden Txt_abwesend und Txt_anwesend-Werte sollen als Datum dargestellt und deklariert werden.


Gruß Tim
Top
#2
Hallo Tim,
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 6).Value = CDate(Txt_anwesend_Beginn.Value)
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • EasY
Top
#3
Hi Uwe,

ach herrje ... so einfach? Es klappt!

Danke danke :)
Top
#4
Hallo,

ohne das ganze genauer angesehen zu haben: Versuch es mal so:
Code:
ThisWorkbook.Sheets("Mitarbeiter").Cells(letzte_zeile, 6) = Cdate(Txt_abwesend_Beginn.Value)

EDIT: Uwe war schneller Wink
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • EasY
Top


Gehe zu:


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