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

Textbox Werte begrenzen

Textbox Werte begrenzen
01.05.2006 18:28:35
tco99
Hallo zusammen,
in einer Userform habe ich verschiedene Textboxen. Diese geben über ein Makro ihre Inhalte in eine Tabelle. Die Userform dient dazu, die Eingabe zu erleichtern. Die Textboxen akzeptieren nun aber alle Arten von Werten. Einige sollten aber nur ein X akzeptieren oder frei bleiben, andere Textboxen sollten nur Datumsangaben akzeptieren. Wie könnte ich das bewerkstelligen?
Vielen Dank für einen Lösungsvorschlag.
Feedback ist selbstverständlich.

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox Werte begrenzen
01.05.2006 18:38:29
ChrisL
Hallo
4 Beiträge weiter unten gibt es ein Beispiel mit "Plausibilisierung":
https://www.herber.de/forum/messages/760001.html
IsDate anstelle von IsNumeric für Datum.
für das IiiX:
If TextBox &lt&gt "X" Then Exit Sub~f~
Wenn du zusätzlich "grösser", "kleiner" eingrenzen willst, wird es etwas komplizierter: Problem ist, dass die TextBox immer ein String enthält und muss deshalb erstmal "umgewandelt" werden in eine Zahl oder Datum... z.B. CCur(TextBox) oder CDate(TextBox)
~f~If CCur(TextBox) &lt 1000 Then
MsgBox "Zahl ist zu klein"
Exit Sub
End If
Gruss
Chris
Anzeige
@ ChrisL
01.05.2006 18:42:45
Josef
Hallo Chris!
Das Prüfen auf IsDate() ist aber oft nicht ausreichend, weil von VBA
viele Zahlen als Datum interpretiert werden, die aber in der Tabelle
dan zu Fehlern führen können.
Deshalb mein Vorschlag, auf "DTPicker" auszuweichen.
Gruß Sepp
@ Josef
01.05.2006 18:59:06
ChrisL
Hallo Josef
Hast recht, vielleicht bin ich in solchen Sachen manchmal etwas zu bequem. :-)
Sowieso, ist natürlich eleganter schon bei der Eingabe zu prüfen.
Gruss
Chris
AW: Textbox Werte begrenzen
01.05.2006 18:39:47
Josef
Hallo ?
Für das "X" würde ich die "MaxLength" Eigenschaft auf 1 setzen und diesen Code nehmen.
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
  Case 88, 120
    KeyAscii = 88
  Case Else
    KeyAscii = 0
End Select
End Sub


Das Überprüfen auf Datumseingabe ist ziemlich kompliziert, da würde ich
eher auf das "DateTimePicker" Steuerelement ausweichen.
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Textbox Werte begrenzen
01.05.2006 18:55:53
tco99
Vielen vielen Dank für die schnellen Antworten!!!
Ich versuche das jetzt umzusetzen und
hinterlasse dann ein Feedback.
Gruß,
Erdogan
AW: Textbox Werte begrenzen
01.05.2006 19:03:49
tco99
Ich hätte da noch eine Idee:
vielleicht könnte man die Zellen, in die der Inhalt der Textbox kommen soll so definieren, dass sie nur Datumsangaben akzeptieren? Vielleicht über Format/Zellen/Benutzerdefiniert?
AW: Textbox Werte begrenzen
01.05.2006 19:06:03
ChrisL
Hallo
So einfach geht es mit TextBoxen leider nicht. Schau auch mal in die Forumssuche, bin sicher, dass du viele Beispiele findest.
Gruss
Chris
String Datum prüfen und als Double wiedergeben
01.05.2006 19:16:46
Peter
Servus,
hab mal in meinem Fundus gekramt, vieleicht hilfts dir ja.


'Allgemeines Modul
Option Explicit
Public dblDatWert As Double
Public Function DatOK(varWert As String, Stellen_Jahr As IntegerOptional Zukunftsfähig As BooleanAs Boolean
' by Peter W
'Eingabeformat 16.11.05 / TT.MM.JJ = DD.MM.YY = Stellen_Jahr 2
'Eingabeformat 16.11.2005 / TT.MM.JJJJ = DD.MM.YYYY = Stellen_Jahr 4
'Zukunftsfähig --> wenn False das Datum darf nicht größer als Heute sein
Dim intlen As Integer, intMon As Integer, intDay As Integer, intYear As Integer
Select Case Stellen_Jahr
    Case 2: intlen = 8
    Case 4: intlen = 10
End Select
If Len(varWert) > intlen Or Len(varWert) < intlen Then _
    GoTo FalschesDatum
If Mid(varWert, 3, 1) <> "." Or Mid(varWert, 6, 1) <> "." Then _
    GoTo FalschesDatum
intMon = Mid(varWert, 4, 2) * 1
intDay = Left(varWert, 2) * 1
If Not IsNumeric(intDay) Or Not IsNumeric(intMon) _
    Then GoTo FalschesDatum
    If Stellen_Jahr = 2 Then
        intYear = ("20" & Right(varWert, 2)) * 1
        If Not IsNumeric(intYear) Then _
            GoTo FalschesDatum
    ElseIf Stellen_Jahr = 4 Then
        intYear = Right(varWert, 4) * 1
        If Not IsNumeric(intYear) Then _
            GoTo FalschesDatum
    End If
dblDatWert = DateSerial(intYear, intMon, intDay)
Select Case intMon
    Case 1, 3, 5, 7, 8, 10, 12
        If intDay > 31 Then _
            GoTo FalschesDatum
    Case 4, 6, 9, 11
        If intDay > 30 Then _
            GoTo FalschesDatum
    Case 2
        If intDay > 28 Then
            If Month(dblDatWert) <> intMon Then _
                GoTo FalschesDatum
        End If
    Case Else
        GoTo FalschesDatum
End Select
If Zukunftsfähig = False Then
    If dblDatWert > Date Then _
        GoTo FalschesDatum
End If
DatOK = True
Exit Function
FalschesDatum:
DatOK = False
End Function
Sub Test()
If DatOK("01.05.2006", 4) Then MsgBox dblDatWert
If DatOK("01.05.06", 2) Then MsgBox dblDatWert
If DatOK(CStr(Date + 1), 4, True) = False Then _
    MsgBox "Datum liegt in der Zukunft"
If DatOK(CStr(Date), 4, TrueThen _
    MsgBox "Datum liegt nicht in der Zukunft !"
End Sub


MfG Peter
Anzeige
AW: String Datum prüfen und als Double wiedergeben
01.05.2006 19:23:35
tco99
Hallo Peter,
vielen Dank für deine Hilfe! Der Code ist sehr umfangreich, ich denke ich werde etwas Zeit brauchen den Code zu verinnerlichen. So weit ich schon sehen konnte, ist der Code auch dazu geeignet, die Eingabe des Datum so zu begrenzen, dass das Datum entweder später als heute oder früher als heute sein muss. Ich denke, dass kann mir weiterhelfen.
Herzlichen Dank!!!
Gruß aus Oberhausen,
Erdogan
AW: Textbox Werte begrenzen
01.05.2006 19:13:50
tco99
Hallo Sepp,
dass mit dem MaxLength funktioniert, die Textbox nimmt nicht mehr als ein Zeichen auf, jedoch funktioniert der Code nicht so ganz, die Zelle nimmt auch andere Zeichen als das X an.
Trotzdem herzlichen Dank für deine Hilfe, schon die MaxLenght-Eigenschaft ist praktisch!
Gruß,
Erdogan
Anzeige
AW: Textbox Werte begrenzen
01.05.2006 19:26:21
tco99
Hallo Sepp,
ich noch mal! Wie bekomme ich denn ein DateTime Picker Steuerelement auf meine Userform?
AW: Textbox Werte begrenzen
01.05.2006 19:31:04
tco99
Hallo Sepp,
der Fehler lag bei mir, ich habe den Code nicht mit TextBox1_KeyPress sondern mit TextBox1_Change angewendet, und jetzt klappt es! Ich frage mich nur, wo hinterlegt ist, dass nur das "x" zulässig ist. Ist es vielleicht das "KeyAscii = 88" ?
AW: Textbox Werte begrenzen
01.05.2006 20:49:30
Josef
Hallo Jonathan!
Richtig 88 ist der Zeichencode für das "X", 122 für das "x".
Mit "KeyAscii = 88" wird immer das "X" in die Textbox geschrieben,
auch wenn man "x" eingibt.
Den DTPicker findest du, wenn du mit recht auf die Werkzeugsammlung im VBE
klickst und "Zusätliche Steuerelemente" wählst.
Dann einfach nach "Microsoft Date and Time Picker Control" suchen, anhaken und
auf OK kliken, danacj kannst du das Steuerelement auf dein UF platzieren.
'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Textbox Werte begrenzen
01.05.2006 23:23:09
tco99
Hallo Sepp,
der Fragesteller war ich.
Vielen Dank für die leicht verständliche Antwort! Jetzt weiß ich, wo das "X" steckt!
Gruß,
Erdogan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige