Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: textbox.exit für bestimmte Textboxen

textbox.exit für bestimmte Textboxen
18.06.2018 17:40:48
Berg
Hallo,
ich prüfe bei der Eingabe von Daten in einer Userform über den textbox_exit Befehl den Inhalt. _
Dies mache ich so:

Private Sub Textbox3_Exit(ByVal Cancel As msforms.ReturnBoolean)
If Textbox3 = "" Then Exit Sub
Elseif Not IsNumeric(Me.TextBox3) Then
TextBox3.BackColor = RGB(100, 100, 199)
MsgBox ("Eingabe ist nicht vom Type Numeric!")
Elseif TextBox3 > 1 Then
TextBox.Backcolor = RGB(255, 255, 255)
Me.TextBox 3 = Format(Me.TextBox3, "#,##0.00")
Else
TextBox3.BackColor = RGB(255, 255, 255)
Me.TextBox3 = Format(Me.Textbox3, "0.00")
End if
End Sub

Das ganze funktioniert wunderbar. Nun möchte ich diesen Code für die Textboxen 4 bis Textboxen 15 erweitern". Also nur für Textboxen 4 bis 15. Allerdings möchte ich den Code nicht für jede Textbox einzeln schreiben. Lässt sich der Code speziell für die Textboxen 4 bis 15 verallgemeinern? Kann mir da vll einer helfen, des wäre super :)
Vorab besten Dank
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: textbox.exit für bestimmte Textboxen
18.06.2018 17:50:38
Nepumuk
Hallo Berg,
erzeuge für die entsprechenden TextBoxen eine Klasse in welcher du nur Zahlen zulässt.
Wenn du dazu Hilfe benötigst, dann sag Bescheid.
Gruß
Nepumuk
AW: textbox.exit für bestimmte Textboxen
18.06.2018 17:57:30
Berg
Hallo Nepumuk,
danke für die schnelle Antwort :) Um eine kleine Hilfestellung wäre ich dir sehr dankbar. Ein Klassenmodul habe ich bislang noch nicht erstellt.
Anzeige
AW: textbox.exit für bestimmte Textboxen
18.06.2018 18:04:08
Hajo_Zi
Teil 1 schaue hier
http://hajo-excel.de/gepackt/vba/userform_steuerelemente.zip
der teil 2 unter UserForm
Private Sub TXT_Kw_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57                               ' Pr?fen ob Eingabe Zahl
Case Else: KeyAscii = 0                     ' alle anderen Eingaben l?schen
End Select
End Sub
da das entsprechende in Klasse wähle.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: textbox.exit für bestimmte Textboxen
18.06.2018 18:11:36
Daniel
Hi
wenn dir das mit der Klassenprogrammierung zu komplex erscheint, mach folgendes:
1. Schreibe ins Modul der Userform diese Funktion:
Function TextBoxPrüfung(crtl As Control) As Boolean
If crtl = "" Then
Exit Function
ElseIf Not IsNumeric(crtl) Then
crtl.BackColor = RGB(100, 100, 199)
MsgBox ("Eingabe ist nicht vom Type Numeric!")
TextBoxPrüfung = True
ElseIf crtl > 1 Then
crtl.BackColor = RGB(255, 255, 255)
crtl = Format(crtl, "#,##0.00")
Else
crtl.BackColor = RGB(255, 255, 255)
crtl = Format(crtl, "0.00")
End If
End Function
Du musst dann zwar immer noch für jede betroffene TextBox das Exit-Eventmakro erstellen, aber dieses sieht dann so aus, dh es besteht nur noch aus einer Zeile, die für alle Makros gleich ist:
Du kannst also diesen Code kopieren, entsprechend oft einfügen und passt dann nur noch den Textboxnamen in der Kopfzeile an.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call TextBoxPrüfung(ActiveControl)
End Sub
wenn du Cancel nutzen willst (Eingabefeld darf nur bei korrekter Eingabe verlassen werden), schreibe den Code so:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel =  TextBoxPrüfung(ActiveControl)
End Sub
in VBA kann eine Function nicht nur als Function, sondern auch wie eine Sub verwendet werden.
der Rückgabewert wird dann nicht genutzt.
Gruß Daniel
Anzeige
AW: textbox.exit für bestimmte Textboxen
18.06.2018 18:29:32
Berg
Hallo Hajo_Zi,
Hallo Daniel,
vielen Dank für eure Antworten. Die Klassenprogrammierung ist mir Anhieb zu komplex, aber ich werde mich die Tage darin einlesen. Daniel, deine Function-Version funktioniert einwandfrei, wirklich super :-). Ich danke euch beiden vielmals. Ihr habt mir sehr geholfen. Eure Hilfsbereitschaft ist wirklich erstaunlich. Danke!!!
Anzeige
AW: textbox.exit für bestimmte Textboxen
18.06.2018 18:39:39
Nepumuk
Hallo Berg,
in das Modul deines UserForms:
Option Explicit

Private mobjTextBoxCollection As Collection

Private Sub UserForm_Initialize()
    Dim objTextboxClass As clsTextBox
    Dim lngIndex As Long
    Set mobjTextBoxCollection = New Collection
    For lngIndex = 4 To 15
        Set objTextboxClass = New clsTextBox
        Set objTextboxClass.TextBox = Controls("TextBox" & CStr(lngIndex))
        Call mobjTextBoxCollection.Add(Item:=objTextboxClass)
        Set objTextboxClass = Nothing
    Next
End Sub

Private Sub UserForm_Terminate()
    Set mobjTextBoxCollection = Nothing
End Sub

In ein Klassenmodul mit dem Namen "clsTextBox":
Option Explicit

Private WithEvents mobjTextBox As MSForms.TextBox

Private Sub Class_Terminate()
    Set TextBox = Nothing
End Sub

Friend Property Set TextBox(ByRef probjTextBox As MSForms.TextBox)
    Set mobjTextBox = probjTextBox
End Property

Private Sub mobjTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 48 To 57
        Case Else: KeyAscii = 0
    End Select
End Sub

Gruß
Nepumuk
Anzeige
AW: textbox.exit für bestimmte Textboxen
18.06.2018 19:06:18
Berg
Hallo Nepumuk,
erstmal danke für deine Mühen. Ich bin deiner Anleitung gefolgt, jedoch meldet er bei der UserForm_initialize "mobjTextBoxCollection" die Variable ist nicht definiert?
AW: textbox.exit für bestimmte Textboxen
18.06.2018 19:08:43
Nepumuk
Hallo Berg,
du musst schon den gesamten Code kopieren.
Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige