Herbers Excel-Forum - das Archiv

Datum und TextBox | Herbers Excel-Forum

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox UserForm


Betrifft: Datum und TextBox
von: abu

Geschrieben am: 07.01.2010 11:25:20

Hallo Zusammen,
kann mir vllt. jemand auf die Spruenge helfen?
Habe eine Userform mit der ich unter anderem eine TextBox fuer ein Datum benutze.
Folgenden Code habe ich dafuer.
Um es vom blatt in die Userform zu holen hab ich diesen Code:
.TextBox45.Value = Sheets("Customer complaints").Cells(Target.Row, 8).Value
Um es zureuck zu schreiben diesen:
.Cells(CInt(Me.Tag), 8).Value = CDate(TextBox45)
Als Beispiel nehmen wir das Datum 07-01-2010
lade ich die Userform zeigt er mir 07-01-2010 an,
schliesse ich die Userform zeigt er im Blatt 07-01-2010 an,
lade ich die Userform erneut zeigt er mir 01-07-2010 an,
schliesse ich die Userform wieder zeigt er 01-07-2010an
mach ich das selbe noch mal wird es wieder richtig angezeigt, im Blatt auch und das geht immer so weiter
Will ich diesen Code aendern:
.TextBox45.Value = Sheets("Customer complaints").Cells(Target.Row, 8).Value
in
.CDate(TextBox45) = ....
bleibt er immer haengen.
Kann mir jemand bitte helfen?
Gruss abu

Betrifft: versuche es mal so...
von: Tino
Geschrieben am: 07.01.2010 11:35:08
Hallo,
, habe ich jetzt nicht getestet.
Lesen in UF

.TextBox45.Value = Format(CDate(Sheets("Customer complaints").Cells(Target.Row, 8).Value2), "dd-mm-yyyy")
Schreiben in die Zelle
.Cells(CLng(Me.Tag), 8).Value = DateValue(Replace(TextBox45, "-", "."))
Gruß Tino

Betrifft: AW: versuche es mal so...
von: abu

Geschrieben am: 07.01.2010 12:41:03
Hallo Tino,
danke fuer die schnelle Antwort. Habs getestet und wenn ich richtig liege hast du einen kleinen Denkfehler beim laden (konntest du ja nicht wissen). Es wird ja nur mit der Userform eingegeben also steht in der Zelle nie ein '.' der ersetzt werden muss und ich bekomm immer eine Fehlermeldung.
Habs geaendert in:
.Cells(CLng(Me.Tag), 8).Value = DateValue(TextBox45)
und es funzt.
1A, Danke.
Gruss abu

Betrifft: Du schreibst doch...
von: Tino
Geschrieben am: 07.01.2010 12:50:21
Hallo,
das in der Textbox "07-01-2010" steht und
diese "-" ersetze ich durch einen Punkt.
Ist aber auch egal, es läuft ja jetzt bei Dir.
Gruß Tino

Betrifft: AW: Du schreibst doch...
von: abu
Geschrieben am: 07.01.2010 13:15:55
oder sorum, egal klappt
danke.

Betrifft: AW: Du schreibst doch...
von: abu
Geschrieben am: 07.01.2010 14:11:45
Muss doch noch mal nachfragen: Wenn jemand vergisst ein Datum einzutragen bleibt er haengen, sollte aber dann nicht passieren sondern einfach leer bleiben. Gibts da auch ne Loesung fuer?
Gruss abu

Betrifft: AW: Du schreibst doch...
von: Tino

Geschrieben am: 07.01.2010 15:07:55
Hallo,
baue es doch in eine If, z. Bsp. so
With Sheets("Customer complaints").Cells(Target.Row, 8)
If .Value <> "" And IsDate(.Value) Then
.TextBox45.Value = Format(CDate(.Value2), "dd-mm-yyyy")
Else
.TextBox45.Value = ""
End If
End With
Von der Textbox in die Zelle machst Du auch eine Abfrage, eben wie zuvor schon mal beschrieben.
Gruß Tino

Betrifft: AW: Du schreibst doch...
von: abu

Geschrieben am: 07.01.2010 15:49:20
Hallo Tino,
habe es so geaendert falls jemand was eintreagt aber kein Datum
With Sheets("Customer complaints").Cells(Target.Row, 8)
If .Value <> "" And IsDate(.Value) Then
.TextBox45.Value = Format(CDate(.Value2), "dd-mm-yyyy")
Else
.TextBox45.Value = Sheets("Customer complaints").Cells(Target.Row, 8).Value
End If
End With
Er bleibt aber in der zweiten Zeile haengen mit der Meldung:
Object doesn't support this property or method
Gruss abu

Betrifft: AW: Du schreibst doch...
von: abu
Geschrieben am: 07.01.2010 15:50:15
sorry in der Zeile
.TextBox45.Value = Format(CDate(.Value2), "dd-mm-yyyy")

Betrifft: die Userform fehlt noch...
von: Tino
Geschrieben am: 07.01.2010 16:04:33
Hallo,
entweder einfach
TextBox45.Value = ...
oder
Me.TextBox45.Value = ...
oder
Userform1.TextBox45.Value = ....
Gruß Tino

Betrifft: AW: die Userform fehlt noch...
von: abu

Geschrieben am: 07.01.2010 16:44:09
so und die letzte fuer heute (hoffe ich).
kannst du mir noch sagen was ich falsch mache beim zurueckschreiben, es laeuft durch allerdings wenn ich den Wert der Box aendere und dann die Userform schliesse, hab ich wieder den ausgangswert da stehen:
With Sheets("Customer complaints").Cells(CLng(Me.Tag), 8)
If Ausgabe.TextBox45.Value <> "" And IsDate(.Value) Then
.Cells(CLng(Me.Tag), 8).Value = Format(CDate(.Value2), "dd-mm-yyyy")
Else
.Cells(CInt(Me.Tag), 8).Value = TextBox45.Value
End If
End With

Betrifft: AW: die Userform fehlt noch...
von: Tino
Geschrieben am: 07.01.2010 16:55:17
Hallo,
teste mal

With Sheets("Customer complaints").Cells(CLng(Me.Tag), 8)
If Ausgabe.TextBox45.Value <> "" Then
.Cells(CLng(Me.Tag), 8).Value = DateValue(Replace(Ausgabe.TextBox45.Value, "-", "."))
Else
.Cells(CLng(Me.Tag), 8).Value = ""
End If
End With
Gruß Tino

Betrifft: AW: die Userform fehlt noch...
von: abu

Geschrieben am: 07.01.2010 17:01:38
nee leider auch nicht. Fehlermeldung Type missmatch in Zeile 3.
versteh ich nicht ganz deinen Code: moechte ja eigentlich nur das ich den Wert in TextBox45 wieder aendern kann und er keine Fehlermeldung gibt selbst wenn da Buchstaben stehen.
Muss jetzt leider weg aber wuerde mich gerne Morgen frueh weiter mit dir unterhalten.
Wuensch dir einen schoenen abend.
Gruss
abu

Betrifft: hier ein einfaches Beispiel...
von: Tino
Geschrieben am: 07.01.2010 17:27:44
Hallo,
https://www.herber.de/bbs/user/67050.xls
Gruß Tino

Betrifft: AW: hier ein einfaches Beispiel...
von: abu
Geschrieben am: 08.01.2010 08:42:39
Guten Morgen Tino,
dein Beispiel funtioniert leider auch nicht...
Gruss abu

Betrifft: bei funktioniert es unter xl2007 u. 2003
von: Tino
Geschrieben am: 08.01.2010 09:19:52
Hallo,
was soll ich dazu nun sagen, habe es soeben unter xl2003 nochmal getestet und es funktioniert.
Gruß Tino

Betrifft: AW: bei funktioniert es unter xl2007 u. 2003
von: abu
Geschrieben am: 08.01.2010 09:26:29
Hallo,
habe auch 2003 und egal was ich probiere, bleibt er im Sub SchreibeDatum in der 3 Zeile stecken mit der Fehlermeldung Type missmatch.
Selbst wenn ich nichts am Datum aendere und es wie es war ins sheet zurueck schreiben alssen will.
Gruss
abu

Betrifft: AW: bei funktioniert es unter xl2007 u. 2003
von: Tino

Geschrieben am: 08.01.2010 09:37:48
Hallo,
schau mal ob diese Verweise bei Dir gesetzt sind.
Im VBA unter Extras -> Verweise
Userbild
Wie ist die Ländereinstellung für Datumsformate auf Deinem System, vielleicht liegt es auch daran?
Vielleicht geht es auch mit dieser Version.
https://www.herber.de/bbs/user/67067.xls
Gruß Tino

Betrifft: AW: bei funktioniert es unter xl2007 u. 2003
von: abu

Geschrieben am: 08.01.2010 10:26:52
Ms Forms 2.0 hab ich nicht, koennte es daran liegen?
Leider finde ich keine Seite von der ich downloaden kann (hier sind bestimmte Seiten gesperrt) und selbst auf der MS-Seite kann ich es nicht finden. Aber auch wenn ich es finde und installiere, werde ich weiter probleme haben da die arbeitsmappe shared ist und mehrere user daruf zugreifen, muesste es von IT irgendwie installiert bekommen so das es bei jedem user eingebunden ist und das kann ich glaub ich in dem laden hier vergessen...

Betrifft: Ms Forms 2.0 wird automatisch gesetzt.
von: Tino
Geschrieben am: 08.01.2010 10:48:16
Hallo,
wenn Du eine UF erstellst wird dieser Verweis automatisch gesetzt,
versuche es mal in einer neuen Excel- Datei.
Sonst müsstest Du dich an Deinen IT- Beauftragten wenden oder einen
Admin der Dein Excel nochmal Installiert.
Gruß Tino

Betrifft: AW: Ms Forms 2.0 wird automatisch gesetzt.
von: abu

Geschrieben am: 08.01.2010 11:11:07
Hallo Du hast recht, mit Userform ist MS Forms auch da.
Zu meinem eigentlichen Problem:
Ich habe diesen Code um zurueckzuschreiben:
With Sheets("Customer complaints").Cells(CLng(Me.Tag), 8)
If Ausgabe.TextBox45.Value <> "" And IsDate(.Value) Then
.Cells(CLng(Me.Tag), 8).Value = DateValue(TextBox45)
Else
.Cells(CInt(Me.Tag), 8).Value = TextBox45.Value
End If
End With
Wenn ich z.B 04-01-2010 schreibe, alles ok
Wenn ich 04.01.2010 schreibe bekomm ich Fehlermeldung (Type missmatch). Warum? ist doch auch ein Datum und selbst wenn excel das nicht als Datum erkennt, muss er doch von If in Else springen.
Selbe gilt wenn ich Text schreibe, dann muss er doch ins Else und es als normalen Text schreiben aber ich bekomm dieselbe Fehlermeldung.
Wo liegt mein Denkfehler?
Gruss
Abu

Betrifft: AW: Ms Forms 2.0 wird automatisch gesetzt.
von: Tino
Geschrieben am: 08.01.2010 11:21:12
Hallo,
die Zeilen müssten so aussehen.

With Sheets("Customer complaints").Cells(CLng(Me.Tag), 8)
If IsDate(Ausgabe.TextBox45.Value) Then
.Value = DateValue(Ausgabe.TextBox45.Value)
Else
.Value = ""
End If
End With
Gruß Tino

Betrifft: AW: Ms Forms 2.0 wird automatisch gesetzt.
von: abu

Geschrieben am: 08.01.2010 11:35:21
Perfekt!
Hab noch dieses geandert: .Value = TextBox45.Value
Jetzt hab ich es Idiotensicher.
1000 x Danke fuer deine Hilfe und Geduld.
Gruss abu
Excel-Beispiele zum Thema "Datum und TextBox"
Text aus Textbox in Variable Namen von TextBoxes hochzählen
Text aus Textbox in Zellen aufteilen Nichtnumerische Eingaben in TextBox verhindern
Text aus UserForm-Textbox in Variable einlesen Nur Buchstaben in eine UserForm-TextBox
TextBoxes- und Label-Werte in Abhängigkeit verändern Nur AJM in TextBox akzeptieren und Anzahl zählen
Eingabelänge in TextBox begrenzen und Werte aus Liste übernehmen Artikel aus Auswahltextbox in Sammeltextbox verschieben