Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

TextBox KeyPress

TextBox KeyPress
05.06.2007 22:27:00
Roger
Hallo Zusammen,
habe soeben heraus gefunden das Case 48 to 57 in dem untenstehenden Makro für die Ziffern 0 - 9 stehen.
Wie kann ich aber machen das der Eingabebereich zwischen 1 und 2000 liegt und sonst eine MsgBox kommt " Leider ist Ihre Zahl zu gross".
Ebenfalls darf keine 0 eingegeben werden. Wenn ich aber Case 49 bis 57 mache, würde dass ja bedeuten das ich auch die Zahl 50 nicht schreiben könnte, oder ?

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End Sub


Wäre wieder einmal sehr dankbar wenn mir jemand helfen könnte.
Gruss Roger

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox KeyPress
05.06.2007 22:38:00
Uduuh
Hallo,
das ist das falsche Ereignis.
In einer Tabelle würde ich Change nehmen, in einer Userform Exit.
Gruß aus’m Pott
Udo

AW: TextBox KeyPress
05.06.2007 22:47:52
Roger
Hallo Uduuh,
da meine VBA Kenntnisse bescheiden sind weiss ich leider nicht was Du meinst.
Das Case 48 to 57 ist alles was ich nachvollziehen kann. Die Ergänzung von max. 2000 und keine 0 kann ich nicht einfügen, weil mir der Ansatz fehlt.
Wie macht man so etwas?
Würde mich über eine Idee freuen.
Gruss Roger

AW: TextBox KeyPress
05.06.2007 22:47:00
Roger
Hallo Uduuh,
da meine VBA Kenntnisse bescheiden sind weiss ich leider nicht was Du meinst.
Das Case 48 to 57 ist alles was ich nachvollziehen kann. Die Ergänzung von max. 2000 und keine 0 kann ich nicht einfügen, weil mir der Ansatz fehlt.
Wie macht man so etwas?
Würde mich über eine Idee freuen.
Gruss Roger

Anzeige
AW: TextBox KeyPress
05.06.2007 23:04:00
Uduuh
Hallo,
Keypress wertet den ASCII-Wert jedes einzelnenTastendrucks aus. Wenn du die komplette Eingabe vergleichen willst, musst du auch den kompletten Inhalt der TBox vergleichen.

Private Sub TextBox1_Change()
Select Case TextBox1 * 1
Case 1 To 2000  'nix passiert
Case Else
MsgBox "Wert zu groß"
End Select
End Sub


Gruß aus’m Pott
Udo

AW: TextBox KeyPress
05.06.2007 23:34:29
Roger
Hallo Udo,
Nun bin ich aber weiter von der Lösung entfernt als zuvor. Wenn ich jetzt ein Buchstabe eingebe wird das Makro durch eine Fehlermeldung gleich beendet. Gebe ich eine zu grosse Zahl ein kommt zwar die Meldung "Wert zu gross." aber korrigieren kann ich die Eingabe nicht.
Ist das was ich mir wünsche überhaupt möglich?

Anzeige
AW: TextBox KeyPress
06.06.2007 08:14:00
Luschi
Hallo Roger,
habe mir Deine Beiträge und die Lösungsansätze durchgelesen; aber so richtig schlau bin ich dabei nicht geworden.
Mit der "TextBox3_KeyPress"-Methode kann man verhindern/zulassen, ob bestimmte Zeichen (Buchstaben, Zifern, Sonderzeichen) in die Textbox3 eingegeben werden dürfen.
Dabei wird der Tastendruck gemäß der ASCII-Zeichensatz-Tabelle ausgewertet. Darin sind 256 Zeichen aufgelistet, die einem standartisierten Code zugeordnet werden.
Drückt der User die Taste "A", dann kommt bei der oben beschriebenen Methode der Tastencode "65" an.
Für 0 bis 9 entsprechen der Code 40 bis 57. In Deinem 1. Beispiel sind also nur die Zahlen 0 bis 9 erlaubt, alle anderen Tastatureingaben werden unterdrückt.
Möchtestest Du die Werteingabe beschränken auf 1 bis 2000, dann mache es so:

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
'nur Zahlen 0 bis 9
Case 48 To 57
Case Else
'alle anderen Tastatureingaben unterdrücken
'außer folgende Tasten: ESC, Enter, Pfeile, Entf, Backspace
KeyAscii = 0
End Select
If CInt(Me.TextBox1.Text & Chr(KeyAscii)) > 2000 Then
MsgBox "Wert ist größer 2000!", 16, "Hinweis"
KeyAscii = 0
End If
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
Delux Variante
06.06.2007 14:50:00
Roger
Hallo Luschi,
Herzlichen Dank für die Lösung, Du hast den Nagel auf den Kopf getroffen. Genau das habe ich gesucht.
Jedoch habe ich noch eine Fragen dazu: (aber natürlich nur wenn ich darf :O)
- Wenn die Eingabe grösser ist als 2000 kommt die Msgbox. Das ist auch richtig so. Drücke ich dann ok steht immer noch die zuvor eingegebene Zahl dort. Kann man auch machen das diese bei der Rückkehr von der Msgbox gleich gelöscht wird? Sonst muss ich ja die Löschtaste noch frei geben ;O)
Wenn das noch möglich wäre, hätte ich eine Delux Variante.
GRuss Roger

Delux Variante
06.06.2007 14:57:00
Roger
Hallo Luschi,
Herzlichen Dank für die Lösung, Du hast den Nagel auf den Kopf getroffen. Genau das habe ich gesucht.
Jedoch habe ich noch eine Fragen dazu: (aber natürlich nur wenn ich darf :O)
- Wenn die Eingabe grösser ist als 2000 kommt die Msgbox. Das ist auch richtig so. Drücke ich dann ok steht immer noch die zuvor eingegebene Zahl dort. Kann man auch machen das diese bei der Rückkehr von der Msgbox gleich gelöscht wird? Sonst muss ich ja die Löschtaste noch frei geben ;O)
Wenn das noch möglich wäre, hätte ich eine Delux Variante.
GRuss Roger

Anzeige
AW: Delux Variante
06.06.2007 17:01:00
Bertram
Hallo Roger,
falls ich's richtig verstanden habe, mußt du nur noch die Zeile TextBox3.Text="" einfügen.

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
'nur Zahlen 0 bis 9
Case 48 To 57
Case Else
'alle anderen Tastatureingaben unterdrücken
'außer folgende Tasten: ESC, Enter, Pfeile, Entf, Backspace
KeyAscii = 0
End Select
If CInt(Me.TextBox3.Text & Chr(KeyAscii)) > 2000 Then
MsgBox "Wert ist größer 2000!", 16, "Hinweis"
KeyAscii = 0
TextBox3.Text = ""
End If
End Sub


Gruß
Bertram

Anzeige
Laufzeitfehler 13
06.06.2007 18:59:00
Roger
Perfekt Bertram,
aber etwas ist noch zu erwähnen.
Gebe ich in der Textbox ein Buchstabe ein was ja nicht geht, bricht das Makro mit dem Laufzeitfehler 13 ab.
Kann ich diesen Fehler abfangen?
Msgbox zum Beispiel?
Gruss Roger

AW: Laufzeitfehler 13
06.06.2007 22:07:30
Bertram
Hallo Roger,
der Einfachheit halber würde ich das so machen:

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
'nur Zahlen 0 bis 9
Case 48 To 57
Case Else
'alle anderen Tastatureingaben unterdrücken
'außer folgende Tasten: ESC, Enter, Pfeile, Entf, Backspace
KeyAscii = 0
TextBox3.Text = ""
Exit Sub
End Select
If CInt(Me.TextBox3.Text & Chr(KeyAscii)) > 2000 Then
MsgBox "Wert ist größer 2000!", 16, "Hinweis"
KeyAscii = 0
TextBox3.Text = ""
End If
End Sub


Du kannst ja vor oder nach dem Leeren der Textbox noch ne MsgBox bringen wenn du magst.
Gruß
Bertram

Anzeige
Herzlichen Dank!!
06.06.2007 22:49:17
Roger
Hallo Bertram,
nun funktioniert es Perfekt.
Herzlichen Dank für Deine Hilfe.
Gruss Roger

Gerne oT
06.06.2007 22:52:00
Bertram

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige