Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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
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

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.
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!!!
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige