| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Textbox nur für numerische Eingabe (3467 mal gelesen)
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 06. Jan. 2007 22:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe in einer Userform eine Textbox in der ich nur numerische Eingaben zulassen möchte. In der Sub Textbox1_change frage ich das mit "IsNumeric" ab, jetzt kann ich aber kein "-" eingeben. Ich muss zuerst einen Wert eingeben und dann das "-" davorsetzen, ist etwas umständlich aber geht. Ausserdem möchte ich mit einem Button "Löschen", eine schon eingegebenen Wert löschen. Wenn ich das mit Textbox1.Value="" mache, meckert die Sub auch. Wie machen das die Profis? ------------------ Gruß Hans-Peter Der Wahnsinn in Sachen Musik. Das Saxregister Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 06. Jan. 2007 22:25 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 06. Jan. 2007 22:41 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Hallo Hans-Peter, versuch's mal so: Code: Private Sub CommandButton1_Click() TextBox1.Text = "" End SubPrivate Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 48 To 57 'Zahlen If CBool(InStr(1, TextBox1.Text, "-")) And TextBox1.SelStart = 0 Then _ TextBox1.Text = Replace(TextBox1.Text, "-", "") Case 45 'Bindestrich If TextBox1.SelStart <> 0 Then KeyAscii = 0 If CBool(InStr(TextBox1.Text, "-")) Then KeyAscii = 0 Case 44, 46 If KeyAscii = 44 Then KeyAscii = 46 If CBool(InStr(TextBox1.Text, ".")) Then KeyAscii = 0 If CBool(InStr(1, TextBox1.Text, "-")) And TextBox1.SelStart = 0 Then _ TextBox1.Text = Replace(TextBox1.Text, "-", "") Case Else KeyAscii = 0 End Select End Sub
Damit die Textbox den Fokus behält, musst du in den Eigenschaften des Commandbuttons die Eigenschaft TakeFokusOnClick auf False setzen. ------------------ Gruß Nepumuk [Diese Nachricht wurde von Nepumuk am 06. Jan. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Ehrenmitglied V.I.P. h.c.
Beiträge: 11981 Registriert: 28.05.2002 Trau keiner Diva unter SP2....
|
erstellt am: 06. Jan. 2007 23:35 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Das ist ja nun auch etwas "von hinten durch die Brust ins Auge" Wenn "isnumeric" bei neg. Zahlen nicht funktioniert, würde ich es ml mit "val()" versuchen. Müßte ja im Falle einer fehlerhaften Typumwandlung einen Fehler geben. Zumindest funzt das im Pascal ------------------ Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen. Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 Veni, Vidi, VW ... I came, I saw, I drove around in a little car.
|
erstellt am: 07. Jan. 2007 00:39 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Guten Abend die Herren;-), bin mal beim change() geblieben, war bissel Knobelei, bin nun auch 10 graue Haare reicher ... also hier mal noch ne Variante: Code:
Option Explicit Private re As ObjectPrivate Sub UserForm_Initialize() Set re = CreateObject("vbscript.regexp") re.Pattern = "^-?\d*\.?\d*$" End Sub Private Sub TextBox1_Change() With TextBox1 If .TextLength > 0 And Not re.test(.Text) Then .Text = Mid(.Text, 1, .TextLength - 1) End With End Sub
lg Nancy
[Diese Nachricht wurde von startrek am 08. Jan. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 07. Jan. 2007 10:52 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 07. Jan. 2007 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
freak-tom Mitglied PDM-/CAD-Admin
Beiträge: 347 Registriert: 07.03.2006
|
erstellt am: 15. Jan. 2007 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Hallo Forumuser Habe auch ein Feld erstellt mit folgendem Code zur Überprüfung! Zitat: Original erstellt von daywa1k3r:
Code:
If (IsNumeric(TextBox1.Text)) Then MsgBox "Numeric" Else MsgBox "Not numeric" End If
Gibt es hier eine Möglichkeit Ausnahmen zu erlauben zum Beispiel den Buchstaben x? Wenn ja wie geht das? Danke schonmal! MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 15. Jan. 2007 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
freak-tom Mitglied PDM-/CAD-Admin
Beiträge: 347 Registriert: 07.03.2006 Productstream Professional Pro 2011 / Jobserver / Replikator Productstream Professional Office 2011 Productstream Professional Pro 2010 / Jobserver / Replikator Productstream Professional Office 2010 Solid Works 2018 DraftSight 2019 SAP ECTR
|
erstellt am: 22. Jan. 2007 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Das komplette script? oder was meinst du? Script ist im Anhang! Ich füge mit diesem Script ein skizziertes Symbol in Compass ein und die Werte in den Textboxen entsprechen den angeforderten Eingaben im skizzierten Symbol! MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
freak-tom Mitglied PDM-/CAD-Admin
Beiträge: 347 Registriert: 07.03.2006
|
erstellt am: 22. Jan. 2007 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
Wenn mein Code umständlich ist, bin ich offen für Verbesserungsvorschläge! Ich bin nämlich froh wenn ich sowas überhaupt hin bekomme, habe vor ein paar Monaten nichts gekonnt in VBA hab alles nur aus dem Forum hier gelernt durch anschauen von anderem Code und ausprobieren! Also ich kenn mich nicht wirklich aus! Jetzt weiß ich zumindest was der Code macht, den ich verwende! :-) Hier mal ein Dankeschön an alle Leute, die hier immer fleißig Antworten! MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |