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

Eingabeprüfung

Eingabeprüfung
30.04.2008 21:22:07
Tobias
Hallo,
ich drehe mich bei einem Problem im Kreis und hoffe Ihr könnt mir helfen...
In einem Textfeld hat der Benutzer die Möglicheit einen Zahlenwert einzugeben. Bei jedem Key-Up event geprüft werden, ob es sich um eine Zahl handelt und, ob diese in einem bestimmten Bereich liegt (z.B. -90 bis +90). Den Key-Up event benötige ich, da ich damit noch andere Kalkulationen steuere.
Momentan verwirkliche ich die Prüfung auf Zahlenwerte mit der ISNumeric-Funktion. Leider meldet diese mir auch einen Fehler, wenn ich das Minuszeichen (-) eingebe...
Hier mal mein momentaner Code. Leider funktioniert beides, die Zahlenprüfung sowie die Eingabewertüberprüfung nicht so richtig:

Private Sub Eingabefeld_KeyUp(ByVal sender As System.Object, ByVal e As System.EventArgs)  _
Handles TGT_Inclination_FillIn_DEG.KeyUp
If Eingabefeld.Focused Then
Select Case Eingabefeld.Text
Case -90 To 90
'If IsNumeric(TGT_Inclination_FillIn_DEG.Text) Then
'Else
Case Else
Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Incorrect Input Value." & vbNewLine & "Only values from -90 to +90  _
are possible."
style = MsgBoxStyle.Information
title = "Message"
response = MsgBox(msg, style, title)
Eingabefeld.Text = "0"
End Select
End If
End Sub


Ich hoffe Ihr könnt mir helfen!
Gruß, Tobias

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabeprüfung
30.04.2008 21:37:00
Hajo_Zi
Hallo Tobias,
ich hätte dafür Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) benutzt.

AW: Eingabeprüfung
30.04.2008 21:50:27
Tobias
Hallo Hajo,
danke für den Tip. Allerdings ändert das nichts an dem Resultat, dass die Texterkennung nicht funktioniert...

AW: Eingabeprüfung
30.04.2008 21:54:00
Renee
Hi Tobias,
Dann versuch mal die Zeile
Select Case Eingabefeld.Text
auf
Select Case Val(Eingabefeld.Text)
zu ändern.
GreetZ Renée

AW: Eingabeprüfung
30.04.2008 22:02:17
Tobias
Hey Renée,
das war's! Super, vielen Dank!
Wäre ich glaube ich nicht frauf gekommen...
Gruß, Tobias

Anzeige
AW: Eingabeprüfung
30.04.2008 22:20:00
Tobias
Hallo Renée,
ich habe jetzt das problem, dass die Eingabe das Komma (,) akzeptiert und damit die Eingabe von mehr als 90 akzeptiert (z.B. 90,8).
Hast Du da eine Idee? Mit dem Punkt als Trennzeichen funktioniert alles...
Gruß, Tobias

AW: Eingabeprüfung
01.05.2008 08:24:00
Hajo_Zi
Hallo Tobias,
Du hast meinen Ansatz abgetan, ich vermute das ergab sich aus Deinem Wissenstand. Ich bin aber immer noch der Auffassung mein Ansatz war korrekt.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox1  "" And KeyAscii  45 Then
Select Case KeyAscii
Case 48 To 57
Case Else
KeyAscii = 0
End Select
End If
If TextBox1  "" And TextBox1  "-" Then
If Abs(CInt(TextBox1)) > 10 Then
KeyAscii = 0
End If
End If
End Sub


Gruß Hajo

Anzeige
AW: Eingabeprüfung
01.05.2008 09:38:00
Renee
Hi Tobias,
Eigentlich erwarte ich beiVBA gut keine so trivialen Fragen.

If Val(Eingabefeld.Text) & ""  Eingabefeld.Text  Then MsgBox "Da ist was faul"


GreetZ Renée

AW: Eingabeprüfung
01.05.2008 09:59:32
Tobias
Hi Renée,
vielleicht habe ich mich da ein wenig überschätzt. Aber trotzdem danke für die Antwort!
Allerdings löst der von Dir genannte Code nicht mein Problem.
Jetzt bekomme ich wieder die Fehlermeldung, wenn ich das Minuszeichen eingebe...
Gruß, Tobias

AW: Eingabeprüfung
01.05.2008 11:33:00
Renee
Hi Tobias,
Dann nimm Hajos Einwände ernst-
So:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If InStr(TextBox1, "-") > 1 Or _
(Len(TextBox1) - Len(Replace(TextBox1, ".", ""))) > 1 Or _
Val(TextBox1)  90 Then
MsgBox "Werte nur zwischen -90.0 und 90.0"
Else
MsgBox "So geht's : " & Val(TextBox1)
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii  57 Or KeyAscii = 47 Then KeyAscii = 0
End Sub


GreetZ Renée

Anzeige
AW: Eingabeprüfung
01.05.2008 14:42:00
Tobias
Sorry, also bei mir klappt das nicht. Auch das KeyAscii Argument wird bei mir nicht erkannt. Ich benutze Visual Basic 2008. Kann das sein, dass da dieses Argument nicht mehr verwendet werden kann?
Vielleicht habe ich mich auch falsch ausgedrückt... Ich möchte, dass es dem Nutzer garnicht erst möglich ist falsche Werte einzugeben, um spätere Kalkulationen nicht zu stören. Außerdem soll das Eingabefeld so benutzerfreundlich wie möglich sein. Momentan habe ich das Problem so gelöst:

Private Sub Eingabefeld_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)  _
Handles Eingabefeld.TextChanged
Eingabefeld.Text = Eingabefeld.Text.Replace(",", ".")
Eingabefeld.SelectionStart = 5
Eingabefeld.Focused Then
Select Case Val(Eingabefeld.Text)
Case -90 To 90
Case Else
Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Incorrect Input Value." & vbNewLine & "Only -90 to 90 is possible."
style = MsgBoxStyle.Information
title = "Big Brother"
response = MsgBox(msg, style, title)
Eingabefeld.Text = "0"
Eingabefeld.SelectAll()
End Select
End If
End Sub


Ich weiß, der Code ist sehr eigenwillig aber wahrscheinlich bin ich wirklich nicht so sehr im Programmieren bewandert. Das einzige Problem, das ich jetzt noch habe ist, dass Nutzer andere Eingaben wie Buchstaben, Klammern etc. eintragen können ohne, dass dies verhindert wird...
Hast Du vielleicht noch einen Input bezüglich meines anderen Threats mit dem Tab des TabControls? Ich würde gern ein Tab mit Passwort schützen...
Gruß, Tobias

Anzeige
AW: Eingabeprüfung
01.05.2008 15:19:32
Renee
Hi Tobias,
Ich benutze Visual Basic 2008. Dann bist du hier in einem falschen Forum, den hier dreht sich eigentlich alles um EXCEL und VBA (Visual Basic for Application). Damit kan ich dir nicht sagen, was für Event-Prozeduren standardmässig zur Verfügung stehen.
Sorry, Renée

AW: Eingabeprüfung
01.05.2008 15:22:00
Tobias
Na gut. Aber trotzdem vielen Dank für die Hilfe!
Gruß, Tobias

AW: Eingabeprüfung
30.04.2008 21:56:00
Hajo_Zi
Hallo Tobias,
ich hatte gelesen das Du Zahlen nur eingeben möchtest, jetzt Text?
Mal ein Code nicht Exploicit auf Dein Proiblem zzugeschnitten. Aber Bei VBA Gut dürfte die Anpassung kein Problem sein.

Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'   Ansatz VB 6 Buch von Peter Monadjemi
'   nur Zahlen, ein Komma und nur 2 Stellen nach Komma
Select Case KeyAscii
Case Asc("0") To Asc("9")
If InStr(TextBox8, ",")  0 Then
If Len(TextBox8) - InStr(TextBox8, ",") > 1 Then KeyAscii = 0
End If
Case Asc("."), Asc(",")
If InStr(TextBox8, ",")  0 Then
KeyAscii = 0
Else
KeyAscii = Asc(",")
End If
Case Asc(vbBack)
'       Eingabe von minus
Case Asc("-")
'            If Len(Textbox8) = 0 Then
'                If InStr(Textbox8, "-")  0 Then
'                Else
'                    KeyAscii = Asc("-")
'                End If
'            Else
'                KeyAscii = 0
'            End If
Case Else
KeyAscii = 0
End Select
End Sub


Gruß Hajo

Anzeige
AW: Eingabeprüfung
30.04.2008 22:03:00
Tobias
Hallo Hajo,
vielen Dank. Renée hat die meinem Problem nächste Lösung gefunden.
Schöne Feiertage!
Gruß, Tobias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige