Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Textbox - Texteingabe wird nicht angzeigt

VBA Textbox - Texteingabe wird nicht angzeigt
19.08.2016 15:18:56
MFuchs
Hallo zusammen.
Nachdem ich die letzten zwei Tage durch div. Beiträge hier und mit Googles Hilfe versucht habe eine Lösung für mein Problem zu finden, aber bisher zu keinem Ergebnis gekommen bin, bitte ich jetzt doch die Experten um Rat.
Beschreibung des Situation:
Ich habe ein Userform, das innerhalb eines Frames mehrere Textboxen besitzt.
In diese Textboxen soll der Anwender eine Zahl angeben.
Die Eingabe der Zeichen überwache ich in einer Sub innerhalb des Codebereichs des Userforms:

Private Sub tbEmployeeActive_KeyPress(ByVal tbInput As MSForms.ReturnInteger)
Call checkInput(tbInput, tbEmployeeActive)
Debug.Print (tbInput)
End Sub

Um den Code übersichtlich zu halten, habe ich die Funktion zur
Fehlerprüfung in den Codebereich eines Moduls ausgelagert:

Public Sub checkInput(ByVal KeyAScii As MSForms.ReturnInteger, ByRef tbObj As MSForms.TextBox)
Select Case KeyAScii
Case 48 To 57
Case Else:
KeyAScii = 0
MsgBox "Bitte eine Zahl zwischen 0 und 99999 eingeben.", vbOKOnly, "Eingabefehler"
tbObj.SetFocus
tbObj.SelStart = Len(tbObj.Text)
Debug.Print (tbObj.Name)
Debug.Print (tbObj.Text)
End Select
Debug.Print ("Debug1")
End Sub

Hier werden die eingebenen Zeichen ausgewertet und bei Eingabe eines Zeichens != 0-9 eine MsgBox mit einem Hinweis auf die korrekte Eingabe geöffnet. Wenn der Anwender die MsgBox per "OK" schließt, soll er in der Textbox die Eingabe erneut tätigen.
Der Aufruf der Funktionen funktioniert, wie ich anhand der Debug.Prints nachvollziehen konnte. Beim Verlassen der MsgBox befindet sich der Fokus auch wieder korrekt in der aufrufenden Textbox.
Hier beginnt mein Problem:
Wie ich anhand meines "Debug.Print(tbInput)" in der aufrufenden Sub feststellen konnte wird die Eigabe von Zeichen = 0-9 verarbeitet. Der voherige Text kann auch korrekt per Backspace gelöscht werden. Wird ein nicht zugelassenes Zeichen eingegeben, wird auch wieder korrekt die Fehlerroutine aufgerufen. Per Shift+/Tab gelangt man auch korrekter Weise in die vorherige/nächste Textbox. Alles weist also darauf hin, dass der Carrier sich an der korrekten Stelle befindet, jedoch erscheinen die eingegebenen Zeichen 0-9 nicht im Textfeld der Textbox.
Erst wenn per Maus die Textbox wieder angeklickt wird, taucht der IBeam Cursor auf und die Eingabe wird korrekt angezeigt.
Für Hinweise wäre ich sehr dankbar.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Textbox - Texteingabe wird nicht angzeigt
20.08.2016 02:52:08
fcs
hallo MFuchs,
ich habe den beschriebenen Effekt unter Excel 2010 nicht beobachtet.
Allerdings reicht folgendes zur Überwachung der Tasten-Eingabe in Textboxen:
'Ereignismakro für Textbox im Userform
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = fncCheckInputZahl(KeyAscii)
End Sub

'Function in einem allgemeinen Modul
Public Function fncCheckInputZahl(varAscii)
'nur Zahleneingabe zulassen
Select Case varAscii
Case 48 To 57
fncCheckInputZahl = varAscii
Case Else:
fncCheckInputZahl = 0
MsgBox "Bitte eine Zahl zwischen 0 und 99999 eingeben.", vbOKOnly, "Eingabefehler"
End Select
End Function
Gruß
Franz
Anzeige

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige