Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
584to588
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
584to588
584to588
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Userform - Datumseingabe

Userform - Datumseingabe
15.03.2005 21:12:09
Benjamin
Hallo,
ich habe ein Userform erstellt und der Anwender soll hier das Datum eintragen.
Im Moment muss er das Datum in der Form tt.mm.jj oder tt.mm.jjjj eingeben.
Gibt es eine Funktion, dass Excel die Punkte automatisch setzt so dass der User z.B. nur 140305 eingeben muss ?
Im Voraus besten Dank
Benjamin

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform - Datumseingabe
15.03.2005 21:14:42
Hajo_Zi
Hallo Benjamin,
dazu brauchst Du schon etwas Code.

Option Explicit
Dim BoEnter As Boolean
Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'   erstellt von Hajo.ziplies@web.de  Stand 01.08.03
'   Datumseingabe  01.01.03;1.1.03 oder komlettes Jahr
'   Eingabe des Tages und des Monat zweistellig werden die Punkte automatisch gesetzt
'   sie können nur gelöscht durch markierung des punktes und der Zahl davor
'   Buchstaben werden ausgeschlossen, nur Zahlen und Punkt
'   die Überprüfung ob Datum erfolgt in Private Sub TextBox6_AfterUpdate()
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
If Len(TextBox6) = 0 Then
KeyAscii = 0
Else
If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) = 2 Then
KeyAscii = 0
ElseIf Len(TextBox6) > 1 Then
If Mid(TextBox6, Len(TextBox6), 1) = "." Then KeyAscii = 0
Else
KeyAscii = Asc(".")
End If
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub TextBox6_Change()
If BoEnter = True Then Exit Sub
If Len(TextBox6) = 2 Then
If InStr(TextBox6, ".") = 0 And BoEnter = False Then TextBox6 = TextBox6 & "."
ElseIf Len(TextBox6) = 5 Then
If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) < 2 Then
TextBox6 = TextBox6 & "."
End If
End If
End Sub
Private Sub TextBox6_AfterUpdate()
BoEnter = True
If Right(TextBox6, 1) = "." Then TextBox6 = Mid(TextBox6, 1, Len(TextBox6) - 1)
'   Jahreszahl vom aktuellen Jahr ergänzen falls nicht vorhanden
If Len(TextBox6) - Len(Application.Substitute(TextBox6, ".", "")) = 1 Then
TextBox6 = TextBox6 & "." & Year(Date)
End If
If IsDate(TextBox6.Text) Then
If Format(CDate(TextBox6.Value), "dd.mm.yy") <> TextBox6 Then
MsgBox "Das Datum wurde übersetzt"
End If
TextBox6 = Format(CDate(TextBox6.Value), "dd.mm.yy")
Else
TextBox6 = ""
End If
BoEnter = False
End Sub

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
AW: Userform - Datumseingabe
15.03.2005 21:20:17
Benjamin
Und an welcher Stelle muss ich den Code einfügen ?
Direkt in den Code des entsprechenden Feldes ?
Im Moment steht da nämlich nur, dass Excel die Eingabe zB in die Zelle A13 eintragen soll
AW: Userform - Datumseingabe
15.03.2005 21:24:59
Hajo_Zi
Hallo Benjamin
das is ein Code für eine Userform.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Userform - Datumseingabe
15.03.2005 21:30:15
Benjamin
Hallo,
also dies ist der Code, welchen ich bis jetzt habe:
'Eingabewerte in die Tabelle eintragen
Private Sub Übernehmen_Click_Click()
ActiveSheet.Range("B7") = TextBox1.Value 'Name'
ActiveSheet.Range("B8") = TextBox2.Value 'PID'
ActiveSheet.Range("F7") = TextBox3.Value 'Monat'
ActiveSheet.Range("B10") = ComboBox1.Value 'Pflegestufe'
ActiveSheet.Range("B11") = ComboBox2.Value 'Beihilfe'
ActiveSheet.Range("C16") = TextBox6.Value 'Anspruch von'
ActiveSheet.Range("C17") = TextBox7.Value 'Anspruch bis'
Unload Me
Nun soll in TextBox6 und TextBox7 das Datum eingetragen werden können.
Wie muss ich denn den Code verändern damit das Datum in ttmmjj eingetragen werden kann?
Sorry, bin aber der absolute Laie in VBA.
Im Vorraus besten Dank
Benjamin
Anzeige
AW: Userform - Datumseingabe
15.03.2005 21:35:54
Hajo_Zi
Hallo Benamin,
es fehlt ein End Sub. Was ist das für eine Aktion "Private Sub Übernehmen_Click_Click()"
Ich würde niemals Namen von Steuerelementen mit Ereignissen kombinieren.
Das Du meinen Code in Deine Userform kopiert und den Steuereelementenamen angepast?
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Userform - Datumseingabe
15.03.2005 21:39:22
Benjamin
Hallo,
ich habe ihn noch nicht kopiert und angepasst, da ich nicht genau weiß wo ich ihn einfügen muss bzw. wo ich ihn anpassen müsste.
Dies ist der ganze Code: : (hab leider nur den Anfang kopiert gehabt)
'Eingabewerte in die Tabelle eintragen

Private Sub Übernehmen_Click_Click()
ActiveSheet.Range("B7") = TextBox1.Value 'Name'
ActiveSheet.Range("B8") = TextBox2.Value 'PID'
ActiveSheet.Range("F7") = TextBox3.Value 'Monat'
ActiveSheet.Range("B10") = ComboBox1.Value 'Pflegestufe'
ActiveSheet.Range("B11") = ComboBox2.Value 'Beihilfe'
ActiveSheet.Range("C16") = TextBox6.Value 'Anspruch von'
ActiveSheet.Range("C17") = TextBox7.Value 'Anspruch bis'
Unload Me
'Bereich drucken
Dim colly As New Collection
Dim Druckbereich
Set Druckbereich = ActiveSheet.Range("A1:G32")
For Each zelle In Druckbereich
If zelle.Interior.ColorIndex = 34 Then
colly.Add zelle.AddressLocal
zelle.Interior.ColorIndex = -4142
End If
Next
ActiveSheet.PageSetup.CenterHorizontally = True
Druckbereich.PrintOut
For Each wert In colly
Range(wert).Interior.ColorIndex = 34
Next
Set colly = Nothing
ActiveSheet.DisplayPageBreaks = False
'Formular löschen
' manuelle Felder leeren
Range("B7:D7").Select
Selection.ClearContents
Range("B8:D8").Select
Selection.ClearContents
Range("B10").Select
Selection.ClearContents
Range("B11").Select
Selection.ClearContents
Range("C16").Select
Selection.ClearContents
Range("C17").Select
Selection.ClearContents
Range("F7:G7").Select
Selection.ClearContents
'zurück zur Auswahl
Sheets("Auswahl").Select
End Sub

Anzeige
AW: Userform - Datumseingabe
15.03.2005 21:41:05
Hajo_Zi
Hallo Benjamin,
ich hatte geschrieben das der Code für eine Userform ist. Darum vertehe ich dieses Aussage nicht
" da ich nicht genau weiß wo ich ihn einfügen muss "
Ich mach Feierabend.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Userform - Datumseingabe
15.03.2005 21:43:05
Benjamin
Das Problem ist nur, dass es in das bestehende Userform eingebaut werden muss
Userform - Datumseingabe ohne Punkte
15.03.2005 22:51:45
Boris
Hi Benjamin,
wenn du das Datum in einer Textbox auf deinem Userform eingeben möchtest, dann Doppelklick auf die Textbox und folgenden Code interlegen (hier wird das Datum in Zelle A1 übernommen):

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1) Then
If IsDate(Format(TextBox1, "00-00-0" & IIf(Len(TextBox1) > 6, "000", "0"))) Then
Sheets(1).[a1] = CDate(Format(TextBox1, "00-00-0" & IIf(Len(TextBox1) > 6, "000", "0")))
End If
End If
End Sub

Den Namen der Textbox musst du anpassen.
Grüße Boris
Anzeige
Am besten: Punkte verbieten...
15.03.2005 22:59:22
Boris
Hi,
der Code führt zu einem Fehler, wenn das Datum dann doch mit Punkten eingegeben wird (TT.MM.JJ oder so...).
Den Fehler könnte man natürlich auch noch abfangen und das Datum entsprechend verarbeiten - aber man könnte die Punkteingabe auch verbieten:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If InStr(1, TextBox1, ".") Then
MsgBox "Bitte datum ohne Punkte eingeben!", 64, "Hinweis..."
Exit Sub
Else
If IsNumeric(TextBox1) Then
If IsDate(Format(TextBox1, "00-00-0" & IIf(Len(TextBox1) > 6, "000", "0"))) Then
Sheets(1).[a1] = CDate(Format(TextBox1, "00-00-0" & IIf(Len(TextBox1) > 6, "000", "0")))
End If
End If
End If
End Sub

Alternativ kann man natürlich auch den Keycode im Up/Press-Ereignis abfragen - aber das führt hier wohl zu weit.
Grüße Boris
Anzeige
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 22:59:34
benjamin
Und was muss ich bei meinem Code dann löschen ?
Eingabewerte in die Tabelle eintragen
Private Sub Übernehmen_Click_Click()
ActiveSheet.Range("B7") = TextBox1.Value 'Name'
ActiveSheet.Range("B8") = TextBox2.Value 'PID'
ActiveSheet.Range("F7") = TextBox3.Value 'Monat'
ActiveSheet.Range("B10") = ComboBox1.Value 'Pflegestufe'
ActiveSheet.Range("B11") = ComboBox2.Value 'Beihilfe'
ActiveSheet.Range("C16") = TextBox6.Value 'Anspruch von'
ActiveSheet.Range("C17") = TextBox7.Value 'Anspruch bis'
Unload Me
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 23:04:24
Benjamnin
Hallo,
jetzt blicke ich leider gar nicht mehr durch.
Was muss ich denn wie ändern ?
Der komplette Code den ich bis jetzt habe lautet:
'Eingabewerte in die Tabelle eintragen

Private Sub Übernehmen_Click_Click()
ActiveSheet.Range("B7") = TextBox1.Value 'Name'
ActiveSheet.Range("B8") = TextBox2.Value 'PID'
ActiveSheet.Range("F7") = TextBox3.Value 'Monat'
ActiveSheet.Range("B10") = ComboBox1.Value 'Pflegestufe'
ActiveSheet.Range("B11") = ComboBox2.Value 'Beihilfe'
ActiveSheet.Range("C16") = TextBox6.Value 'Anspruch von'
ActiveSheet.Range("C17") = TextBox7.Value 'Anspruch bis'
Unload Me
'Bereich drucken
Dim colly As New Collection
Dim Druckbereich
Set Druckbereich = ActiveSheet.Range("A1:G32")
For Each zelle In Druckbereich
If zelle.Interior.ColorIndex = 34 Then
colly.Add zelle.AddressLocal
zelle.Interior.ColorIndex = -4142
End If
Next
ActiveSheet.PageSetup.CenterHorizontally = True
Druckbereich.PrintOut
For Each wert In colly
Range(wert).Interior.ColorIndex = 34
Next
Set colly = Nothing
ActiveSheet.DisplayPageBreaks = False
'Formular löschen
' manuelle Felder leeren
Range("B7:D7").Select
Selection.ClearContents
Range("B8:D8").Select
Selection.ClearContents
Range("B10").Select
Selection.ClearContents
Range("B11").Select
Selection.ClearContents
Range("C16").Select
Selection.ClearContents
Range("C17").Select
Selection.ClearContents
Range("F7:G7").Select
Selection.ClearContents
'zurück zur Auswahl
Sheets("Auswahl").Select
End Sub

Einen extra Code für das Textfeld habe ich noch nicht.
Danke für die Hilfe
Benjamin
Anzeige
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 23:04:33
Benjamnin
Hallo,
jetzt blicke ich leider gar nicht mehr durch.
Was muss ich denn wie ändern ?
Der komplette Code den ich bis jetzt habe lautet:
'Eingabewerte in die Tabelle eintragen

Private Sub Übernehmen_Click_Click()
ActiveSheet.Range("B7") = TextBox1.Value 'Name'
ActiveSheet.Range("B8") = TextBox2.Value 'PID'
ActiveSheet.Range("F7") = TextBox3.Value 'Monat'
ActiveSheet.Range("B10") = ComboBox1.Value 'Pflegestufe'
ActiveSheet.Range("B11") = ComboBox2.Value 'Beihilfe'
ActiveSheet.Range("C16") = TextBox6.Value 'Anspruch von'
ActiveSheet.Range("C17") = TextBox7.Value 'Anspruch bis'
Unload Me
'Bereich drucken
Dim colly As New Collection
Dim Druckbereich
Set Druckbereich = ActiveSheet.Range("A1:G32")
For Each zelle In Druckbereich
If zelle.Interior.ColorIndex = 34 Then
colly.Add zelle.AddressLocal
zelle.Interior.ColorIndex = -4142
End If
Next
ActiveSheet.PageSetup.CenterHorizontally = True
Druckbereich.PrintOut
For Each wert In colly
Range(wert).Interior.ColorIndex = 34
Next
Set colly = Nothing
ActiveSheet.DisplayPageBreaks = False
'Formular löschen
' manuelle Felder leeren
Range("B7:D7").Select
Selection.ClearContents
Range("B8:D8").Select
Selection.ClearContents
Range("B10").Select
Selection.ClearContents
Range("B11").Select
Selection.ClearContents
Range("C16").Select
Selection.ClearContents
Range("C17").Select
Selection.ClearContents
Range("F7:G7").Select
Selection.ClearContents
'zurück zur Auswahl
Sheets("Auswahl").Select
End Sub

Einen extra Code für das Textfeld habe ich noch nicht.
Danke für die Hilfe
Benjamin
Anzeige
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 23:11:50
Boris
Hi,
du hast 2 Möglichkeiten:
Entweder du fragst die Datumseingabe direkt in der Textbox nach / bei Eingabe ab, oder aber erst in dem Moment, wo du deinen Commandbutton betätigst.
Bei letzterer Variante musst die Prüfung halt im Code des Buttons vornehmen - hier mal bezogen auf Textbox6:

Private Sub Übernehmen_Click_Click()
If InStr(1, TextBox6, ".") Then
MsgBox "Bitte datum ohne Punkte eingeben!", 64, "Hinweis..."
Exit Sub
Else
If IsNumeric(TextBox6) Then
If IsDate(Format(TextBox6, "00-00-0" & IIf(Len(TextBox6) > 6, "000", "0"))) Then
ActiveSheet.[c16] = CDate(Format(TextBox6, "00-00-0" & IIf(Len(TextBox6) > 6, "000", "0")))
End If
Else
MsgBox "Textbox6 enthält kein Datum!", 64, "Hinweis..."
End If
End If
End Sub

Also nicht einfach ActiveSheet.Range("C16") = TextBox6.Value 'Anspruch von'
sondern stattdessen eben den gesamten Codeteil.
Das Selbe musst du mit Textbox7 auch machen.
Grüße Boris
Anzeige
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 23:17:04
Benjamnin
Also, irgendwie blick ich es nicht
Sorry aber ich bekomm es nicht an die richtige Stelle eingebunden.
Ich hab leider von VBA nicht so richtig den Plan
An welcher Stelle muss ich es denn genau einbinden ?
Herzlichen Dank
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 23:26:46
Boris
Hi,
nur mal bezogen auf die Textbox6:

Private Sub Übernehmen_Click_Click()
ActiveSheet.Range("B7") = TextBox1.Value 'Name'
ActiveSheet.Range("B8") = TextBox2.Value 'PID'
ActiveSheet.Range("F7") = TextBox3.Value 'Monat'
ActiveSheet.Range("B10") = ComboBox1.Value 'Pflegestufe'
ActiveSheet.Range("B11") = ComboBox2.Value 'Beihilfe'
If InStr(1, TextBox6, ".") Then
MsgBox "Bitte datum ohne Punkte eingeben!", 64, "Hinweis..."
Exit Sub
Else
If IsNumeric(TextBox6) Then
If IsDate(Format(TextBox6, "00-00-0" & IIf(Len(TextBox6) > 6, "000", "0"))) Then
ActiveSheet.[c16] = CDate(Format(TextBox6, "00-00-0" & IIf(Len(TextBox6) > 6, "000", "0")))
End If
Else
MsgBox "Textbox6 enthält kein Datum!", 64, "Hinweis..."
End If
End If
ActiveSheet.Range("C17") = TextBox7.Value 'Anspruch bis'
Unload Me
'Bereich drucken
Dim colly As New Collection
Dim Druckbereich
Set Druckbereich = ActiveSheet.Range("A1:G32")
For Each zelle In Druckbereich
If zelle.Interior.ColorIndex = 34 Then
colly.Add zelle.AddressLocal
zelle.Interior.ColorIndex = -4142
End If
Next
ActiveSheet.PageSetup.CenterHorizontally = True
Druckbereich.PrintOut
For Each wert In colly
Range(wert).Interior.ColorIndex = 34
Next
Set colly = Nothing
ActiveSheet.DisplayPageBreaks = False
'Formular löschen
' manuelle Felder leeren
Range("B7:D7").Select
Selection.ClearContents
Range("B8:D8").Select
Selection.ClearContents
Range("B10").Select
Selection.ClearContents
Range("B11").Select
Selection.ClearContents
Range("C16").Select
Selection.ClearContents
Range("C17").Select
Selection.ClearContents
Range("F7:G7").Select
Selection.ClearContents
'zurück zur Auswahl
Sheets("Auswahl").Select
End Sub

Grüße Boris
Anzeige
AW: Userform - Datumseingabe ohne Punkte
15.03.2005 23:29:41
Benjamnin
Hallo,
herzlichen Dank für die tolle Hilfe.
Jetzt funktioniert es. Die andere Textboxen bekomm ich dann von alleine hin :-)
Nochmals Danke und noch einen schönen Abend
Benjamin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige