(Excel 8)
--
Ing. Ludwig Trksak
LOLO Fahrwerkstechnik
lo...@lolo.co.at
http://www.lolo.co.at/lolo
in der Entwicklungsumgebung das Textfeld doppelklicken und in das sich
öffnende Modul folgenden Code eingeben:
Private Sub TextBox1_Change()
If Len(TextBox1.Text) = 0 Then Exit Sub
If Not IsNumeric(TextBox1.Text) Then
Beep
MsgBox "Nur Zahlen bitte!"
End If
End Sub
hans
########################################################
# Herber's Excel-Server - letztes Update: 27.10.98 #
# http://www.herber.de - Microsoft MVP - Excel #
# Neu bei der Freeware: DejaNews-Abfrage - XL8 #
########################################################
--
Ing. Ludwig Trksak <lo...@lolo.co.at> wrote in message
O1LhZJcA#GA....@uppssnewspub05.moswest.msn.net...
Danke für (wieschonsooft) die prompte Lösung!
Ich hab den Code dahingehend verändert, daß das lästige Wegklicken der
Fehlermeldung entfällt. Wenn eine Taste gedrückt wird, die keine Ziffer ist,
geschieht ganz einfach garnix.
Private Sub txbFW_change()
If IsNumeric(txbFW.Value) Or Len(txbFW.Text) = 0 Then
Else:
txbFW.Value = txbFW.Tag
End If
sonstiger Code
txbFW.Tag = txbFW.Value
End Sub
--
Ing. Ludwig Trksak
LOLO Fahrwerkstechnik
lo...@lolo.co.at
http://www.lolo.co.at/lolo
Hans W. Herber schrieb in Nachricht <7165b6$ki8$5...@news00.btx.dtag.de>...
einfacher? NaJa.
Wie folgt:
Private Sub TextBox1_Change()
If Len(TextBox1.Text) = 0 Then Exit Sub
If Not IsNumeric(TextBox1.Text) Then
TextBox1.Text = ""
End If
End Sub
hans
########################################################
# Herber's Excel-Server - letztes Update: 02.11.98 #
# http://www.herber.de - Microsoft MVP - Excel #
# Neu bei der Freeware: DejaNews-Abfrage - XL8 #
########################################################
--
Michael Schwimmer <Schw...@t-online.de> wrote in message
71dgr1$5ga$1...@news02.btx.dtag.de...
Einfacher geht's so :
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, "1234567890", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
MfG
Michael
Ing. Ludwig Trksak schrieb in Nachricht ...
--
Ing. Ludwig Trksak
LOLO Fahrwerkstechnik
lo...@lolo.co.at
http://www.lolo.co.at/lolo
Hans W. Herber schrieb in Nachricht <71jk62$gqs$1...@news02.btx.dtag.de>...
sorry, ich hatte Deine Nachricht falsch verstanden.
hans
########################################################
# Herber's Excel-Server - letztes Update: 02.11.98 #
# http://www.herber.de - Microsoft MVP - Excel #
# Neu bei der Freeware: DejaNews-Abfrage - XL8 #
########################################################
--
Ing. Ludwig Trksak <lo...@lolo.co.at> wrote in message
Private Sub NumerischesFeld_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, "1234567890", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Das Problem dabei ist, das ausschließlich ganze Zahlen eingegeben werden können. Nimmt man nun noch das Komma in den String auf, ist es zwar möglich, auch Kommazahlen einzugeben, birgt aber die Gefahr, das Komma an den Anfang zu setzen oder mehrmals einzugeben, was bei einer Typenumwandlung zu Fehlermeldungen führt.
Die Überprüfung auf IsNumeric(NumerischesFeld.Text) z.b. im Change Ereignis kann das verhindern, aber es erfordert zusätzlichen Aufwand, durch eine statische oder auf Modulebene deklarierte Variable, den Text bei einer Fehleingabe in den ursprünglichen Zustand zurückzuversetzen. Folgendes funktioniert auch ohne solche (ekligen) Variablen.
Private Sub NumerischesFeld_Change()
If Left$(NumerischesFeld.Text, 1) = "," Then
NumerischesFeld.Text = Mid$(NumerischesFeld.Text, 2, Len(NumerischesFeld.Text))
End If
End Sub
Private Sub NumerischesFeld_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr(1, NumerischesFeld.Text, ",") <> 0 And Chr$(KeyAscii) = "," Then KeyAscii = 0: Exit Sub
If InStr(1, "1234567890,", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Die Abfrage in der Change-Prozedur dient dazu, das setzen des Kommas an den Anfang zu verhindern. Mir ist leider nichts anderes eingefallen.
Michael
Hans W. Herber schrieb in Nachricht <71jk62$gqs$1...@news02.btx.dtag.de>...
>Hallo Ludwig, Michael,
>
>einfacher? NaJa.
>
>Wie folgt:
>
>Private Sub TextBox1_Change()
> If Len(TextBox1.Text) = 0 Then Exit Sub
> If Not IsNumeric(TextBox1.Text) Then
> TextBox1.Text = ""
> End If
>End Sub
>
zu dem zweiten, von Dir vorgeschlagenen Modul hätte ich noch einen
Verbesserungsvorschlag:
Private Sub NumerischesFeld_Change()
If Left$(NumerischesFeld.Text, 1) = "," Then
NumerischesFeld.Text =
Application.WorksheetFunction.Substitute(NumerischesFeld.Text, ",", "0,")
End If
End Sub
dann kannst Du Dir bei der Eingabe die führende Null vor dem Koma schenken,
genauso wie auf den meisten Taschenrechnern oder im EXCEL Worksheet.
--
Ing. Ludwig Trksak
LOLO Fahrwerkstechnik
lo...@lolo.co.at
http://www.lolo.co.at/lolo
Michael Schwimmer schrieb in Nachricht <71q1i1$6bp$1...@news01.btx.dtag.de>...