Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Textfeld soll nur Nummern(Zahlen) zulassen; VBA

1,125 views
Skip to first unread message

Jürgen Stadermann

unread,
Jan 29, 2013, 11:33:38 AM1/29/13
to
Hallo.
Man kann ja ein Textfeld so im VBA schreiben, dass es den String in ein
z.Bsp. Währungsformat umstellt also CDbl(TextBox3.Text.
Soweit so gut.
Ich möchte aber verhindern, dass der User (irrtümlich)
Zeichen/Buchstaben eingibt.
D.h. Das Textfeld soll NUR Zahlen/Nummern positive UND negative auch mit
2 Kommastellen zulassen.

In Google hatte ich - nachstehend - etwas gefunden und das klappt
eigentlich gut, NUR negative Zahlen und Kommastellen funzt nicht:

>>>>>>>>>>>>>>>>>>
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub

<<<<<<<<<<<<<<<<<<<

Mit der Bitte um Lösungs-Hilfe
Danke schon mal für Antworten.

Jürgen

Claus Busch

unread,
Jan 29, 2013, 12:18:32 PM1/29/13
to
Hallo Jürgen,

Am Tue, 29 Jan 2013 17:33:38 +0100 schrieb Jürgen Stadermann:

> Man kann ja ein Textfeld so im VBA schreiben, dass es den String in ein
> z.Bsp. Währungsformat umstellt also CDbl(TextBox3.Text.
> Soweit so gut.

warum willst du diese Verrenkungen machen? Das Textfeld heißt Textfeld,
weil darin Text ist. Auch wenn du nur Zahlen zulässt. Du musst sie doch
umwandeln. Und dann hast du es leichter beim Umwandeln eventuellen Text
zu löschen.


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3

Claus Busch

unread,
Jan 29, 2013, 1:37:50 PM1/29/13
to
Hallo Jürgen,

Am Tue, 29 Jan 2013 17:33:38 +0100 schrieb Jürgen Stadermann:

> Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
> If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
> End Sub

probiers mal so:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 44 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Das lässt allerdings noch den Punkt (ascii 46) und den Slash (ascii 47)
zu. Wenn du die auch noch unterdrücken willst, musst du das IF-Statement
etwas erweitern.

Jürgen Stadermann

unread,
Jan 30, 2013, 6:32:47 AM1/30/13
to
Am 29.01.2013 18:18, schrieb Claus Busch:
> Hallo Jürgen,
>
> Am Tue, 29 Jan 2013 17:33:38 +0100 schrieb Jürgen Stadermann:
>
>> Man kann ja ein Textfeld so im VBA schreiben, dass es den String in ein
>> z.Bsp. Währungsformat umstellt also CDbl(TextBox3.Text.
>> Soweit so gut.
>
> warum willst du diese Verrenkungen machen? Das Textfeld heißt Textfeld,
> weil darin Text ist. Auch wenn du nur Zahlen zulässt. Du musst sie doch
> umwandeln. Und dann hast du es leichter beim Umwandeln eventuellen Text
> zu löschen.
>
>
> Mit freundlichen Grüßen
> Claus Busch
>
Hallo Claus.
Erst einmal Danke für Deine Antwort.
Die Verrenkung ist erforderlich, damit ein fremder User keinen
Laufwerksfehler bekommt, wenn der Fokus bei der CDbl(TB) nicht weiter kommt.
Zu Deiner zweiten Antwort.
Ich werde da mal mit den Ascii Keys herumexperimentieren.
Frage: Gibt es da irgendwo eine Tabelle mit den Zuordnungen.

Jürgen

Claus Busch

unread,
Jan 30, 2013, 7:12:52 AM1/30/13
to
Hallo Jürgen,

Am Wed, 30 Jan 2013 12:32:47 +0100 schrieb Jürgen Stadermann:

> Ich werde da mal mit den Ascii Keys herumexperimentieren.
> Frage: Gibt es da irgendwo eine Tabelle mit den Zuordnungen.

du musst nur nach ascii googlen
Du kannst aber auch die Nummern auslesen, indem du die Zeichen in eine
Zelle schreibst, z.B: A1, dann bekommst du mit =CODE(A1) die Nummer.


Mit freundlichen Grüßen
Claus Busch
0 new messages