Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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
Textbox Ausgabe Text statt Zahl
28.04.2017 09:01:49
Glanck
Guten Morgen zusammen,
ich möchte mir gerne eine Eingabemaske erstellen bei der in einer Textbox das Datum eingetragen und nachdem drücken eines Button der Wert in eine kleine Datenbank geschrieben wird und das Fortlaufend.
Anschließend ruft eine kleine Tabelle, neben anderen Daten, den aktuellsten hinterlegten Wert ab und füllt seine Zelle.
Problem dabei ist, dass das Datum nicht erkannt wird als Datum, sondern als wahrscheinlich nicht definierbare Zahl für Excel und somit auch nicht als letzter aktuellster Wert übernommen wurde.
Der Button "Speichern" in der Eingabemaske
Private Sub Speichern1_Click()
Dim lZeile As Long
lZeile = 2
Do While Trim(CStr(Tabelle11.Cells(lZeile, 1).Value))  ""
lZeile = lZeile + 1
Loop
Tabelle11.Cells(lZeile, 1).Value = CStr(TextBox1.Text)
Tabelle11.Cells(lZeile, 2).Value = TextBox2.Text
End Sub

Die Formel aus der Zelle Datum:
{=INDEX(Daten!A:A;MAX(ISTZAHL(Daten!A2:A32)*ZEILE(Daten!A2:A32)))}
Als Matrixfunktion ausgeführt.
Gebe ich also nun in das Textfeld das Datum 01.04.2017 ein und speichere dies ab, so ist in der Tabelle Daten in Zelle A2 dies auch abgelegt worden. Jedoch kann sich die Formel nicht diesen Wert abrufen. Ich habe versucht Statt Istzahl dann Isttext zu nehmen auch das ohne Erfolg. Nach meinen bisherigen Versuchen und Ansätzen vermute ich, dass bei einem Datum das Format übergeben werden müsste da es sonst zu Problemen führt.
Denn den 01.04 zum Beispiel übernimmt er als 1 und kann dies anschließend auch als 01.01.1990 auslesen.
Bestimmt ist mein Fehler recht simpel. Ich bin gespannt welchen Wald ich vor lauter Bäumen nicht sehe.
Danke.

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

Betreff
Datum
Anwender
Anzeige
probier mal CStr -> CDate(TextBox1.Text) owT
28.04.2017 09:05:45
Matthias
AW: probier mal CStr -> CDate(TextBox1.Text) owT
28.04.2017 09:29:56
Glanck
Ok damit übergibt er zwar ein Datum aber nicht das eingetragene in der Textbox. Er bezieht sich also nicht mehr auf die Textbox. Unabhängig davon was in der Textbox drin steht, also auch leer. Zeigt er dann 01.01.1900 an.
Müsste dann bei der Eingabe etwas beachtet werden DD.MM.YYYY oder DD.MM.YY etc.?
Bzw. müsste dann nicht noch die Textbox definiert werden bei CDate?
Danke.
lad doch mal die Musterdatei hoch
28.04.2017 09:41:44
UweD
AW: probier mal CStr -> CDate(TextBox1.Text) owT
28.04.2017 09:50:07
Hajo_Zi
eine TextBox kannst du nicht definieren, sie enthält immer Text.
Du kannst Code schreiben der nur Datumswerte zulässt.
Option Explicit
Dim BoEnter As Boolean
Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'   erstellt von HajoZiplies@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, ".", ""))  8 Then
TextBox6 = Format(CDate(TextBox6.Value), "dd.mm.yyyy")
ElseIf Format(CDate(TextBox6.Value), "dd.mm.yy")  TextBox6 Then
TextBox6 = Format(CDate(TextBox6.Value), "dd.mm.yy")
End If
Else
TextBox6 = ""
End If
BoEnter = False
End Sub

Anzeige
AW: probier mal CStr -> CDate(TextBox1.Text) owT
28.04.2017 15:06:01
Glanck
Es ist mir ein Rätsel.
@UweD
die Musterdatei kann ich von hier aus nicht hochladen.
@Hajo_Zi
Habe dies mit implementiert und rundet die Sache ab, hatte aber das eigentliche Problem nicht gelöst
@Matthias L
Ich habe das Cstr durch Cdate ersetzt in der Datei bei mir auf dem Rechner und da ging es nicht, habe auf Arbeit ein Beispiel erstellt und da ging es. Des Rätsels Lösung wäre dann CStr durch CDate zu ersetzen. Was auch naheliegend ist.....
@All
Danke für die schnellen und vielen Ratschläge sie haben mir in meinem Denkansatz weiter geholfen. Ich werde mir auch noch mal ggf. mein Excel in den Einstellungen anschauen.
Also Cstr durch CDate ersetzt und der Zelleninhalt kann von zählenden Formeln etc. gefunden werden.
Anzeige

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige