Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel VBA/Datum Problem

Excel VBA/Datum Problem
11.02.2020 13:47:39
Heinz
Hallo,
ich sitze für die Arbeit an einer Dynamischen Tabelle wo Mitarbeiter Ihre Stunden aufschreiben.
Dies erfolg über eine VBA-Eingabemaske (Userform) mit Datum,Tätigkeit und Stunden etc.
Wählt man nun das Datum mit Hilfe der Combobox aus und überträgt die eingegebenen Werte in ein neues Tabellenblatt
wird das Datum nicht richtig erkannt.
- Der Datepicker funktioniert im Firmennetzwerk nicht mehr ich muss es also anders lösen.
Momentan habe ich es wie folgt:
Combobox um Datum auszuwählen:

Private Sub BoxDatum_Click()
BoxDatum.Value = CDate(BoxDatum.Value)
End Sub

Private Sub Button_Take_Click()
'Eingabe der Schaltflaechen in die Arbeitsmappe übernehmen'
'wenn das Datumsfeld leer ist wird "Kein Datum" in die Tabelle übernommen
If BoxDatum.Value = "" Then BoxDatum.Value = "Kein Datum"
Dim last As Integer
'Im Folgenden wird festgelegt, wo die eingegebenen Daten abgelegt werden sollen'
last = Tabelle3.Cells(Rows.Count, 1).End(xlUp).Row + 1
Tabelle3.Cells(last, 1).Value = Instandhaltungsaufschreibung.BoxDatum.Value
Tabelle3.Cells(last, 2).Value = Instandhaltungsaufschreibung.Box1.Value
Tabelle3.Cells(last, 4).Value = Instandhaltungsaufschreibung.Box5.Value
Tabelle3.Cells(last, 6).Value = Instandhaltungsaufschreibung.Text_Dauer.Value
Tabelle3.Cells(last, 10).Value = Instandhaltungsaufschreibung.ListBox1.Value
Tabelle3.Cells(last, 11).Value = Instandhaltungsaufschreibung.ListBox2.Value
Tabelle3.Cells(last, 12).Value = Instandhaltungsaufschreibung.Text_Frei.Value
'Einordnen der Kategorie, abh. davon welcher Reiter in der Eingabemaske ausgewählt wird'
If TabStrip1.Value = 0 Then Tabelle3.Cells(last, 9) = "Mechanik"
If TabStrip1.Value = 1 Then Tabelle3.Cells(last, 9) = "Elektro"
If TabStrip1.Value = 2 Then Tabelle3.Cells(last, 9) = "Allgemeines/Büro"
If TabStrip1.Value = 3 Then Tabelle3.Cells(last, 9) = "Gebäude"
'Check Box-Abfragen: Wenn das Kontrollkästchen aktiviert ist, dann steht in der Tabelle "Ja",   _
_
ansonsten "Nein" '
If Check1.Value = True Then Tabelle3.Cells(last, 5) = "Ja"
If Check1.Value = False Then Tabelle3.Cells(last, 5) = "Nein"
If Check2.Value = True Then Tabelle3.Cells(last, 8) = "Ja"
If Check2.Value = False Then Tabelle3.Cells(last, 8) = "Nein"
Unload Instandhaltungsaufschreibung
End Sub
Private Sub UserForm_Initialize()
'Für die beiden Boxen am Anfang werden die Daten eingelesen'
BoxDatum = Date
Box1.RowSource = "Maschinen!A2:A75"
BoxDatum.RowSource = "Daten_Namen_Kategorie_Datum!E2:E368"
Box5.RowSource = "Daten_Namen_Kategorie_Datum!A2:A9"
'Checkbox für Abfrage, ob mit mehreren gearbeitet wurde'
Check1.Value = False
Check2.Value = False
'Im Folgenden werden die ListBoxen 1 und 2 beim Ausführen der UserForm mit Daten aus dem  _
Tabellenblatt Kategorien gefüllt'
'Der Bereich der Boxen kann durch Bearbeitung der Zeilennummer erweitert werden. Wenn der  _
Nutzer die Kategorien erweitern möchte, muss er nur die  Bezeichnung eintragen'
'ListBox1'
ListBox1.RowSource = "Kategorien!A2:A23"
ListBox2.RowSource = "Kategorien!E2:E23"
End Sub

Über ein weiteres Tabellenblatt (Daten_Namen_Kategorie_Datum) werden die verschiedenen Daten eingespeist, diese sind alle richtig formatiert.
Ich habe schon gefühlt alles ausprobiert, jedoch muss man immer erst mit Doppelklick das eingetragene datum anwählen und mit ENTER bestätigen, sodass es von Excel rechtsbündig als Datum angezeigt wird.
Wichtig ist dies, weil wir mit einem Spaltenfilter auf die verschiedenen Monate zugreifen müssen. Problem ist eben die dynamische Tabelle, nach jedem Eintrag wird eine neue Zeile erstellt. Ich habe es auch schon mit dem Multiplizieren von Zelle bzw Spalte mit 1 versucht aber sobald man alles formatiert hat und einen neuen Eintrag tätigt ist das neue Datum wieder nicht richtig formatiert.
Der wirklich einzige Weg den ich momentan habe ist der Doppelklick...und das ist ziemlich umständlich.
Ich bin um jede Hilfe sehr dankbar! Falls irgendwas zu kompliziert erklärt ist oder unverständlich bitte bescheid sagen ich werde mich darum bemühen, dass mein Problem leicht verständlich ist.
Gruß H.S.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA/Datum Problem
11.02.2020 14:07:10
Werner
Hallo,
eine TextBox enthält, wie der Name schon sagt, Text. Wenn dort ein Datum drin steht, dann mußt du das beim Schreiben in eine Zelle auch in ein Datum umwandeln.
Tabelle3.Cells(last, 1).Value = CDate(Instandhaltungsaufschreibung.BoxDatum)
Da sollte dann aber auch eine entsprechende Prüfung rein, ob eine Zahl in der Textbox steht, die auch einem gültigen Datum entspricht.
If IsNumeric(Instandhaltungsaufschreibung.BoxDatum) Then
If IsDate(Instandhaltungsaufschreibung.BoxDatum) Then
Tabelle3.Cells(last, 1) = CDate(Instandhaltungsaufschreibung.BoxDatum)
Else
MsgBox "Fehler: Wert ist kein gültiges Datum."
Instandhaltungsaufschreibung.BoxDatum.SetFocus
Exit Sub
End If
Else
MsgBox "Fehler: Der Wert ist nicht numerisch."
Instandhaltungsaufschreibung.BoxDatum.SetFocus
Exit Sub
End If
Dann stellt sich gleich noch die Frage was denn in der Textbox Text_Dauer drin steht?
Gruß Werner
Anzeige
AW: Excel VBA/Datum Problem
11.02.2020 14:41:09
Heinz
Hallo Werner,
dein Tipp mit dem CDate Befehl funktioniert so weit. Die Abfrage brauche ich glaube ich nicht, da ich die Daten schon fertig in die Combobox einspeise und diese dann nur noch ausgewählt werden müssen. Die Mitarbeiter können das Feld jedoch auch leer lassen und dann erscheint in dem Feld "Kein Datum".
In der Textbox Text_Dauer stehen die geleisteten Stunden
Bsp.: Datum, Mitarbeiter, Stunden, etc.
Vielen Dank für die schnelle Antwort.
Gruß H.S.
AW: Excel VBA/Datum Problem
11.02.2020 14:55:50
Werner
Hallo,
natürlich brauchst du die Prüfung. Wenn nämlich "kein Datum" in deiner Textbox steht, dann läuft der Code in einen Fehler. Ein Text kann nun mal nicht in ein Datum gewandelt werden.
If IsNumeric(Instandhaltungsaufschreibung.BoxDatum) Then
Tabelle3.Cells(last, 1) = CDate(Instandhaltungsaufschreibung.BoxDatum)
Else
Tabelle3.Cells(last, 1) = Instandhaltungsaufschreibung.BoxDatum
End If
Gruß Werner
Anzeige
AW: Excel VBA/Datum Problem
12.02.2020 09:20:30
Heinz
Hallo Werner,
okay ich denke ich habe es verstanden.
Vielen Dank für die Hilfe - es funktioniert soweit alles wie ich es möchte!
Gruß H.S.
Gerne u. Danke für die Rückmeldung. o.w.T.
12.02.2020 09:25:01
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige