Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
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
Inhaltsverzeichnis

TextBoxen Formatierung nach verlassen

TextBoxen Formatierung nach verlassen
19.04.2022 14:38:02
Ron
Hallo,
ich habe ca. 100 TextBoxen die mit Zahlen gefüllt werden und nach dem Verlassen ein bestimmtes Format haben sollen.
Aktuell habe ich für jede TextBox dieses Sub (hier ein Beispiel).

Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox7.Text = Textfeld_Formatieren(TextBox7.Text)
End Sub
Kann man den gesamten Code irgendwie verkürzen (Schleife oder so), oder geht das bei "Exit" nicht?
Grüße

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBoxen Formatierung nach verlassen
19.04.2022 15:23:54
ChrisL
Hi
Hier ein Beispiel:
https://www.herber.de/bbs/user/152520.xlsm
Es handelt sich um Klassenprogrammierung. Inspiration/Quelle hier: http://www.office-loesung.de/ftopic566975_0_0_asc.php
Wie ich leider erst spät bemerkte ;) funktioniert das Exit-Event bei Klassen nicht.
https://www.herber.de/forum/archiv/1208to1212/1208050_TextBox_Exit.html
Als Umgehungslösung bin ich daher auf KeyDown (Tab-Taste) ausgewichen.
cu
Chris
Modul Userform1

Private m_objTextBoxes() As New Klasse1
Private Sub UserForm_Initialize()
Dim objCtl As Control
Dim nCnt As Integer
For Each objCtl In Me.Controls
If TypeOf objCtl Is MSForms.TextBox Then
nCnt = nCnt + 1
ReDim Preserve m_objTextBoxes(1 To nCnt)
Set m_objTextBoxes(nCnt).MyTB = objCtl
End If
Next objCtl
End Sub
Klassenmodul "Klasse1"

Public WithEvents MyTB As MSForms.TextBox
Private Sub MyTB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then MyTB = "jetzt formatieren"
End Sub

Anzeige
AW: TextBoxen Formatierung nach verlassen
19.04.2022 15:34:27
Ron
Hallo,
das funktioniert leider nur mit der TAB Taste.
Schade
Gruß
AW: TextBoxen Formatierung nach verlassen
19.04.2022 15:24:53
Nepumuk
Hallo Ron,
ich habe mal eine DLL geschrieben mit der das in einer Klasse gehen würde. Die DLL muss aber auf allen Rechnern registriert werden, auf denen die Mappe laufen soll. Wenn das nicht möglich ist, dann wirst du um die 100 Prozeduren nicht herumkommen.
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
19.04.2022 15:30:26
Ron
Hallo,
eine Registrierung ist nicht möglich.
Trotzdem danke!
Gruß
AW: TextBoxen Formatierung nach verlassen
19.04.2022 16:31:58
Nepumuk
Hallo Ron,
dann eventuell so?
https://www.herber.de/bbs/user/152521.xlsm
Zum Testen wird in jede verlassene Textbox ein + zum Text hinzugefügt. Das musst du noch anpassen.
Gruß
Nepumuk
Anzeige
AW: TextBoxen Formatierung nach verlassen
19.04.2022 16:47:49
Mullit
Hallo Nepumuk,
viell interessehalber, hab diese Möglichkeit hier neulich gesehen, kannte ich auch noch nicht, da werden echte Enter/Exit-Events en Bloc in einer Klasse über Attribute + Api erstellt, haute in meinem Test tasächlich hin...;-)
https://stackoverflow.com/questions/61855925/reducing-withevent-declarations-and-subs-with-vba-and-activex/61893857#61893857
Der Link kam urs. hier her...
http://www.office-loesung.de/p/viewtopic.php?f=166&t=877963#p3389113
Gruß, Mullit
Anzeige
AW: TextBoxen Formatierung nach verlassen
19.04.2022 21:36:24
Mullit
Hallo Max & Ron,
hab mal die Exit-Events über Klasse nach dem Link-Bsp nochmal in Max' Bsp eingebaut, damit ich nicht nur Links poste hier...
https://www.herber.de/bbs/user/152526.xlsm
Gruß, Mullit
AW: TextBoxen Formatierung nach verlassen
20.04.2022 05:11:52
Nepumuk
Hallo Mullit,
ich habe das Ganze mal ein bisschen umgebaut, so wie ich es mir vorstelle.
https://www.herber.de/bbs/user/152529.xlsm
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
20.04.2022 07:40:24
Ron
Hallo Nepumuk,
das funktioniert richtig gut.
Ich habe aber ein paar Textboxen wo eine andere Formatierung angewendet werden muss.
Wie bekomme ich das hin, dass nur bestimmte TextBoxen diese Formatierung haben sollen.
Gruß
Anzeige
AW: TextBoxen Formatierung nach verlassen
20.04.2022 07:47:38
Nepumuk
Hallo Ron,
woran können die TextBoxen unterschieden werden?
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
20.04.2022 07:49:16
Ron
Hi,
eigentlich nur anhand der Nummern (TextBox1, TextBox 2,....)
Gruß
AW: TextBoxen Formatierung nach verlassen
20.04.2022 07:52:57
Nepumuk
Hallo Ron,
von welcher Nummer bis welche Nummer gehen die der Gruppe A und von welcher Nummer bis welche Nummer gehen die der Gruppe B?
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
20.04.2022 08:00:28
Ron
Ich habe schon ein Klassenmodul angelegt für die Formatierung nur Zahlen und Komma und es in der UserForm so mit den zugehörigen TextBoxen angewendet.

Dim v As Variant, i As Long
'hier stehen die TextBox-Nummern die es betreffen soll
v = Array(207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, _
218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, _
232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 253, 254, 255, _
256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267)
ReDim objTB(UBound(v))
For i = LBound(v) To UBound(v)
Set objTB(i).myTB = Me.Controls("TextBox" & v(i))
Next i
Vielleicht bekommt man das in Kombination hin.
Die TextBoxen sollen nur Zahlen mit Komma und nach Verlassen folgendes Format haben: "#,##0.00"
Gruß
Anzeige
AW: TextBoxen Formatierung nach verlassen
20.04.2022 08:33:06
Nepumuk
Hallo Ron,
der Code in der angehängten Mappe läuft nun nicht mehr, da die entsprechenden TextBoxen im UserForm fehlen. Du kannst aber den Code im Modul des User'Forms 1 zu 1 übernehmen. Die Klasse kopierst du per Drag&Drop im Projektexplorer in deine Mappe. Du musst dann nur noch die Formatierungsprozedur im Modul basUserForm anpassen. Das Ganze ist schon vorbereitet für 2 Gruppen von TextBoxen. Nummern der 2. Gruppe musst du nur noch eintragen.
https://www.herber.de/bbs/user/152532.xlsm
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
20.04.2022 10:54:59
Ron
Hallo Nepumuk,
das ist absolute Klasse. Vielen Dank!
Ein Frage habe ich noch. In der Gruppe B sollen nur 4 Zahlen ohne Punkt und Komma zugelassen werden.
Wenn keine 4 Zahlen eingegeben werden, soll eine MsgBox darauf hinweisen.
Kann mann das auch im Klassenmodul einbauen?
Anbei die angepasste Datei.
https://www.herber.de/bbs/user/152539.xlsm
Gruß
Anzeige
AW: TextBoxen Formatierung nach verlassen
20.04.2022 11:16:25
Nepumuk
Hallo Ron,
folgende Änderung im Klassenmodul:

Public Sub TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If GroupA Then
TextBox.Text = TextBoxFormat(TextBox.Text, GroupA)
Else
If TextBox.TextLength  4 Then
Call MsgBox("Bitte genau 4 Zahlen eingeben.", vbExclamation, "Hinweis")
Cancel = True
End If
End If
End Sub
Private Sub mobjTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If GroupA Then
Select Case KeyAscii
Case vbKey0 To vbKey9, 44
If InStr(1, TextBox.Text, ",")  0 Then KeyAscii = 0
Case Else
KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case vbKey0 To vbKey9
If TextBox.TextLength = 4 Then
Call MsgBox("Bitte nur 4 Zahlen eingeben.", vbExclamation, "Hinweis")
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End If
End Sub

Achtung, das Exit-Event nicht komplett kopieren, nur den Teil zwischen Sub ... und 

End Sub !!!
Gruß
Nepumuk
Anzeige
AW: TextBoxen Formatierung nach verlassen
20.04.2022 11:28:43
Ron
Super, vielen Dank!
Gruß
AW: TextBoxen Formatierung nach verlassen
20.04.2022 11:55:21
Ron
Hallo Nepumuk,
eine Frage habe ich noch.
Bei der Gruppe B erzwingt er in den Textboxen eine Eingabe.
Wie bekomme ich das hin, dass wenn die TextBox leer ist keine Aktion durchgeführt wird?
Gruß
AW: TextBoxen Formatierung nach verlassen
20.04.2022 12:02:35
Nepumuk
Hallo Ron,
so:

If TextBox.TextLength  4 And TextBox.TextLength > 0 Then
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
20.04.2022 12:06:14
Ron
Danke!!
AW: TextBoxen Formatierung nach verlassen
22.04.2022 12:14:21
Ron
Hallo,
warum kann ich in der Gruppe A keine Nachkommastellen eingeben?
Wer kann helfen?!
https://www.herber.de/bbs/user/152592.xlsm
Gruß
Anzeige
AW: TextBoxen Formatierung nach verlassen
22.04.2022 17:07:06
Nepumuk
Hallo Ron,
weil du das falsch geändert hast:

Private Sub mobjTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If GroupA Then
Select Case KeyAscii
Case 44
If InStr(1, TextBox.Text, ",")  0 Then KeyAscii = 0
Case vbKey0 To vbKey9
'do nothing
Case Else
KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case vbKey0 To vbKey9
If TextBox.TextLength = 4 Then
Call MsgBox("Bitte nur 4 Zahlen eingeben!", vbExclamation, "Eingabefehler")
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End If
End Sub
Gruß
Nepumuk
AW: TextBoxen Formatierung nach verlassen
24.04.2022 08:14:59
Ron
Hallo Nepumuk,
danke für den Hinweis! Habe nochmal alles überprüft und angepasst.
Jetzt funktioniert alles.
Nochmals Danke und Gruß
Anzeige
AW: TextBoxen Formatierung nach verlassen
20.04.2022 18:47:00
Mullit
Hallo Nepumuk,
ah ja, sauber, mit einer Collection ist das ganze noch professioneller, ich hatte das nur Quick & Dirty aus dem Link übernommen...top....ist schon ne coole Variante, oder...
Gruß, Mullit

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige