PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Basic nur Zahlen akzeptieren.


Geldmann3
2010-11-26, 08:14:23
Hallo, ich erstelle gerade ein Programm, welches unter anderem Längeneinheiten umrechnet. Also man schreibt einen Zahlen-Wert in eine Textbox, und dann wird daraus ein anderer errechnet. Nun ist es aber so, dass wenn man statt einer Zahl etwas anderes hineinschreibt das Programm abstürzt. Denn mit Buchstaben etc. kann es nicht rechnen.

Ich hätte aber gerne, anstatt eines Absturzes beispielsweise
MsgBox("Trage zuerst einen Wert ein!")
dann den weiteren Code nicht ausführen
Wie bekomme ich das hin?

Matrix316
2010-11-26, 08:43:44
Unter VB gibts die Funktion "IsNumeric(Wert)", welche True oder Fals zurück liefert. Das kannste entweder nach der Eingabe checken ODER einen RegularExpressionValidator mit einer RegEx die nur Zahlen zulässt

Geldmann3
2010-11-26, 10:10:42
Danke,
wie kann ich dieses IsNumeric() abfragen?

Ich habe es so versucht
If TextBox1.Text = IsNumeric(False) = True Then
MsgBox("Trage zuerst einen Wert ein!")
Das geht natürlich nicht, wie genau muss ich das abfragen?

So gehts auch nicht
If TextBox1.Text = IsNumeric() = False Then
MsgBox("Trage zuerst einen Wert ein!")

Kenny1702
2010-11-26, 10:20:37
Ohne es zu wissen, probier mal

If not IsNumeric(TextBox1.Text) Then
MsgBox("Trage zuerst einen Wert ein!")
End If

Asyan
2010-11-26, 10:38:41
Danke,
wie kann ich dieses IsNumeric() abfragen?

Ich habe es so versucht
If TextBox1.Text = IsNumeric(False) = True Then
MsgBox("Trage zuerst einen Wert ein!")
Das geht natürlich nicht, wie genau muss ich das abfragen?

So gehts auch nicht
If TextBox1.Text = IsNumeric() = False Then
MsgBox("Trage zuerst einen Wert ein!")
http://www.vbarchiv.net/tipps/tipp_306-verwendung-von-isnumeric.html

Monger
2010-11-26, 10:49:26
Reden wir eigentlich über VB6 oder VB.NET?
Bitte das immer dazu sagen, weil es immer noch ein paar arme Schweine gibt die sich mit VB6 rumschlagen müssen, und die beiden Sprachen - trotz der Namensähnlichkeit - nichts gemeinsam haben.

In VB.NET wäre ein Integer- bzw. Single.TryParse(String) die einfachste Lösung.

Geldmann3
2010-11-26, 11:53:19
Wir reden von Visual Basic 2008
If Not IsNumeric(TextBox1.Text) Then
MsgBox("Trage zuerst einen Wert ein!")
Return
Aha funktioniert:biggrin:

Jetzt habe ich allerdings noch ein kleines Problem, ich möchte, dass gleich wenn meine Form geladen wird, ComboBox1 einen Eintrag auswählt.

Ich habe es so versucht
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.Listindex = 0
End Sub

Funktioniert leider nicht, kann mir jemand weiterhelfen?

Asyan
2010-11-26, 12:07:28
Wir reden von Visual Basic 2008
If Not IsNumeric(TextBox1.Text) Then
MsgBox("Trage zuerst einen Wert ein!")
Return
Aha funktioniert:biggrin:

Jetzt habe ich allerdings noch ein kleines Problem, ich möchte, dass gleich wenn meine Form geladen wird, ComboBox1 einen Eintrag auswählt.

Ich habe es so versucht
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.Listindex = 0
End Sub

Funktioniert leider nicht, kann mir jemand weiterhelfen?
Das müsste
ComboBox1.SelectedIndex = 0

sein

Geldmann3
2010-11-26, 12:13:54
Danke:smile:

RattuS
2010-11-26, 13:46:55
Also man schreibt einen Zahlen-Wert in eine Textbox...
Hast du dir das NumericUpDown-Control mal angeschaut? Damit sparst du dir das Parsen und hast gleichzeitig Dezimalstellen bei Bedarf abgefrühstückt. ;)

Geldmann3
2010-11-26, 14:29:04
Kannte ich noch nicht, guter Tipp! Danke

paul.muad.dib
2010-12-09, 15:30:05
Wie wäre es, wenn du das Keypress Ereignis ausnutzt, um von vornherein nur Zahlen und Kommata eingaben zuzulassen.
Andere Zeichen sollen einfach wieder gelöscht werden

RattuS
2010-12-09, 16:37:31
Wie wäre es, wenn du das Keypress Ereignis ausnutzt, um von vornherein nur Zahlen und Kommata eingaben zuzulassen.
Andere Zeichen sollen einfach wieder gelöscht werden
Dann muss er auch auch Einfügen/Drop berücksichtigen.

Monger
2010-12-09, 16:37:38
Wie wäre es, wenn du das Keypress Ereignis ausnutzt, um von vornherein nur Zahlen und Kommata eingaben zuzulassen.
Andere Zeichen sollen einfach wieder gelöscht werden
Ist eventuell keine gute Idee. So mancher Anwender dürfte irritiert sein, wenn er auf die Tastatur haut und buchstäblich nichts passiert. Auch bei Copy & Paste o.ä. gäbe das komische Effekte.

Das sauberste wäre den Inhalt aktiv zu validieren (Validate Event), und eine ordentliche Fehlermeldung z.B. über einen Rollout Tip rauszuwerfen.