Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalte umwandeln nach Cdate

Spalte umwandeln nach Cdate
Volker
Hallo zusammmen,
Ich möchte die Spalte B welche das laufende Datum des Jahres enthält nachträglich in Cdate umwandeln.
Ich fülle Die Spalte mittels:
Option Explicit
Public Sub Kalender2()
Dim WkSh_K   As Worksheet
Dim WkSh_F   As Worksheet
Dim aktJahr  As Integer
Dim dDatum   As Date
Dim lZeile   As Long
Dim lFtage   As Long
Application.ScreenUpdating = False
Set WkSh_K = Worksheets("Stundennachweis")   ' Kalenderblatt
Set WkSh_F = Worksheets("Tabelle2")   ' Feiertagsblatt
If IsNumeric(WkSh_K.Range("A1").Value) And _
Len(WkSh_K.Range("A1").Value) = 4 Then
aktJahr = CInt(WkSh_K.Range("A1").Value)
dDatum = "01.01." & aktJahr
Else
MsgBox "In Zelle A1 steht keine gültige Jahreszahl - Abbruch.", _
48, "   Hinweis für " & Application.UserName
Exit Sub
End If
lZeile = 5
Do
WkSh_K.Range("B" & lZeile).NumberFormat = "dd.mm.yyyy"
WkSh_K.Range("B" & lZeile).Value = dDatum
For lFtage = 1 To WkSh_F.Range("A65536").End(xlUp).Row
'If dDatum = CDate(WkSh_F.Range("B" & lFtage).Value) Then
' WkSh_K.Range("B" & lZeile).Interior.ColorIndex = 3
Exit For
'End If
Next lFtage
lZeile = lZeile + IIf(Month(dDatum) = Month(dDatum + 1), 1, 2)
dDatum = dDatum + 1
Loop Until Year(dDatum) > aktJahr
End Sub
Nach der übergabe, muss ich erst durch die benutzerdefinierte Formatierung TT.MM.JJJJ für die Spalte eingeben, damit ich mit der Tabelle arbeiten kann.
Ich möchte erreichen, das das Datum aus einer Userform Textbox in der Spalte B gefunden wird.
Wie gesagt nach "händischer" Umformatierung funktioniert es....
Danke und Gruß
Volker
Anzeige
AW: Spalte umwandeln nach Cdate
06.01.2012 13:42:00
Rudi
Hallo,
Ich möchte erreichen, das das Datum aus einer Userform Textbox in der Spalte B gefunden wird.
Dann wandle das doch in ein Datum um. In der Tabelle stehen Datumswerte.
CDate(Textbox1)
Gruß
Rudi
AW: Spalte umwandeln nach Cdate
06.01.2012 13:52:02
Volker
Hallo Rudi,
danke für Deine Antwort.
Ich habe mich anscheinend nicht klar genug ausgedrückt :-((
Das Datum aus der Textbox wird ja gefunden, aber erst nachdem ich die Spalte per Zellformat- benutzerdefiniert- TT.MM.JJJJ formatiert habe.
Danke und Gruß
Volker
Anzeige
AW: Spalte umwandeln nach Cdate
06.01.2012 14:04:32
Rudi
Hallo,
aber erst nachdem ich die Spalte per Zellformat- benutzerdefiniert- TT.MM.JJJJ formatiert habe.
aber das machst du doch hier schon:
          WkSh_K.Range("B" & lZeile).NumberFormat = "dd.mm.yyyy"
Gruß
Rudi
AW: dDatum = cdate("01.01." & akJahr)
06.01.2012 13:46:22
JoWe
AW: dDatum = cdate("01.01." & akJahr)
06.01.2012 14:01:08
Volker
Hallo JoWe,
Danke für die Antwort,
aber es bleibt beim alten Problem.... erst umformatieren, dann funktoniert es
Jedesmal nach dem generieren des Kalenders habe ich in der benutzerdiefiniertenZellformatierung die
laufende Zahl des Tages stehen. Diese in TT.MM.JJJJ geändert dann gehts.
Danke und Gruß
Volker
Anzeige
AW: geht doch!?!
06.01.2012 14:37:21
JoWe
Hi Volker,
habe Deinen Code mal für mich etwas vereinfacht, klappt ohne Probleme.
Ich muss da auch nix umformatieren!
Public Sub Kalender2()
Dim WkSh_K   As Worksheet
Dim WkSh_F   As Worksheet
Dim aktJahr  As Integer
Dim dDatum   As Date
Dim lZeile   As Long
Dim lFtage   As Long
Application.ScreenUpdating = False
Set WkSh_K = ThisWorkbook.Sheets(1)   ' hier habe ich mal vereinfacht Kalenderblatt
Set WkSh_F = ThisWorkbook.Sheets(2)   ' hier habe ich auch vereinfacht Feiertagsblatt
If IsNumeric(WkSh_K.Range("A1").Value) And _
Len(WkSh_F.Range("A1").Value) = 4 Then
aktJahr = CInt(WkSh_K.Range("A1").Value)
dDatum = CDate("01.01." & aktJahr)
Else
MsgBox "In Zelle A1 steht keine gültige Jahreszahl - Abbruch.", _
48, "   Hinweis für " & Application.UserName
Exit Sub
End If
lZeile = 5
Do
WkSh_F.Range("B" & lZeile).Value = dDatum
lZeile = lZeile + IIf(Month(dDatum) = Month(dDatum + 1), 1, 2)
dDatum = dDatum + 1
Loop Until Year(dDatum) > aktJahr
End Sub
Gruß
Jochen
Anzeige
AW: dDatum = cdate("01.01." & akJahr)
06.01.2012 14:37:46
Volker
Hallo Rudi,
ich kriegs nicht hin. Als letzten versuch habe ich eine Mappe hochgeladen.
Event. fimdest Du ja den Fehler.
Danke und Gruß Volker
https://www.herber.de/bbs/user/78255.xlsm
AW: Spalte umwandeln nach Cdate
06.01.2012 21:13:01
dan
Hallo Volker,
versuch es so: Set rZelle = .Find(CDate(UserForm1.TextBox1.Value), LookIn:=xlFormulas, LookAt:=xlWhole)
"LookIn:=xlFormulas" statt xlValues.
Gruss dan, cz.
Private Sub CommandButton6_Click()
Dim rZelle  As Range
If UserForm1.TextBox1.Value  "" Then
If IsDate(UserForm1.TextBox1.Value) Then
With Worksheets("Stundennachweis").Range("A1:A381")
Set rZelle = .Find(CDate(UserForm1.TextBox1.Value), LookIn:=xlFormulas, LookAt:= _
xlWhole)
If Not rZelle Is Nothing Then
.Range("A" & rZelle.Row).Select
End If
End With
End If
End If
ActiveCell.Offset(0, 1) = UserForm1.ComboBox1.Value   'Dienst
ActiveCell.Offset(0, 2) = UserForm1.TextBox2.Value    'Start
ActiveCell.Offset(0, 3) = UserForm1.TextBox3.Value    'Ende
'ActiveCell.Offset(0, 4) = UserForm1.TextBox4.Value    'Minuten
'ActiveCell.Offset(0, 5) = UserForm1.TextBox5.Value    'Minuten
End Sub

Anzeige
AW: Spalte umwandeln nach Cdate
07.01.2012 11:46:52
Volker
Hallo Dan,
späten Dank für Deine Antwort, jetzt komme ich weiter.
Gruß Volker
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalte umwandeln nach Cdate


Schritt-für-Schritt-Anleitung

Um die Werte in einer Excel-Spalte mit VBA nach CDate umzuwandeln, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineMappe)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Public Sub Kalender2()
       Dim WkSh_K As Worksheet
       Dim aktJahr As Integer
       Dim dDatum As Date
       Dim lZeile As Long
       Application.ScreenUpdating = False
       Set WkSh_K = Worksheets("Stundennachweis") ' Kalenderblatt
    
       If IsNumeric(WkSh_K.Range("A1").Value) And Len(WkSh_K.Range("A1").Value) = 4 Then
           aktJahr = CInt(WkSh_K.Range("A1").Value)
           dDatum = CDate("01.01." & aktJahr)
       Else
           MsgBox "In Zelle A1 steht keine gültige Jahreszahl - Abbruch.", 48, "Hinweis"
           Exit Sub
       End If
    
       lZeile = 5
       Do
           WkSh_K.Range("B" & lZeile).Value = dDatum
           lZeile = lZeile + 1
           dDatum = dDatum + 1
       Loop Until Year(dDatum) > aktJahr
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe zu „Run“ > „Run Sub/UserForm“.

  5. Formatieren der Spalte: Stelle sicher, dass die Zellen in Spalte B im Format „TT.MM.JJJJ“ formatiert sind, um die Datumswerte korrekt anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "In Zelle A1 steht keine gültige Jahreszahl"

    • Lösung: Überprüfe, ob in Zelle A1 tatsächlich eine vierstellige Jahreszahl steht.
  • Fehler: Datumswerte erscheinen nicht korrekt

    • Lösung: Stelle sicher, dass die Zellen in Spalte B mit dem CDate-Format formatiert sind. Verwende den Code WkSh_K.Range("B" & lZeile).NumberFormat = "dd.mm.yyyy" im Code.

Alternative Methoden

Eine alternative Methode zur Umwandlung von Text in Datumswerte in Excel ist die Verwendung der CDate-Funktion direkt in einer Zelle:

  • Du kannst beispielsweise in eine Zelle eingeben:

    =CDate(A1)
  • Diese Formel konvertiert den Inhalt von Zelle A1 in ein Datum, vorausgesetzt, der Inhalt ist datumsfähig.


Praktische Beispiele

  1. Datum aus einer Textbox finden:

    Wenn Du das Datum aus einer Userform-Textbox in einer Spalte finden möchtest, kannst Du folgenden Code verwenden:

    Private Sub CommandButton1_Click()
       Dim rZelle As Range
       If UserForm1.TextBox1.Value <> "" Then
           If IsDate(UserForm1.TextBox1.Value) Then
               With Worksheets("Stundennachweis").Range("B:B")
                   Set rZelle = .Find(CDate(UserForm1.TextBox1.Value), LookIn:=xlFormulas, LookAt:=xlWhole)
                   If Not rZelle Is Nothing Then
                       rZelle.Select
                   End If
               End With
           End If
       End If
    End Sub
  2. Suchbegriff in einer Zelle:

    Verwende Find zusammen mit CDate, um ein Datum zu suchen:

    Set rZelle = .Find(CDate(TextBox1.Value), LookIn:=xlFormulas, LookAt:=xlWhole)

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was Fehler reduziert.

  • Optimierung: Schalte Application.ScreenUpdating = False vor der Ausführung von Makros ein und setze es nach der Ausführung auf True, um die Leistung zu verbessern.

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0, um Fehler während der Ausführung effizient zu handhaben.


FAQ: Häufige Fragen

1. Wie funktioniert CDate in VBA?
CDate konvertiert einen String oder eine Zahl in ein Datum. Es interpretiert den Wert basierend auf den regionalen Einstellungen des Systems.

2. Warum muss ich die Zellen formatieren, um die Datumswerte korrekt anzuzeigen?
Excel benötigt eine spezifische Formatierung, um sicherzustellen, dass die Zellen die Werte als Datum erkennen und korrekt anzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige