Registriert seit: 20.11.2017
Version(en): Excel2013
Hallo Forum,
ich suche eine Möglichkeit das auf einer Userform in TextBox1 nur folgende
Eingaben möglich sind.
Format1: 2 Buchstaben und 4 Zahlen
Beispiel: AB1234
Format2: 2 Buchstaben und 4 Zahlen und 1 Bindestich und 2 Zahlen.
Beispiel: AB1234-12
Ab besten wäre ein vorbelegtes Eingabeformat, so das der User nur die Zahlen eingeben muss.
Besten Dank im Voraus
omron2003
Registriert seit: 17.08.2015
Version(en): 19
Hallo, und dann, was soll damit geschehen? In Sheet?
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Registriert seit: 20.11.2017
Version(en): Excel2013
Hallo,
der Wert soll dann per Buttonklick an das aktive Sheet übergeben siehe Code.
Code:
Dim AktuelleZeile As Integer
AktuelleZeile = ActiveCell.Row()
Cells(ActiveCell.Row, 3) = TextBox1
usw....
Registriert seit: 26.09.2022
Version(en): 2019
Moin,
soetwas gibt es für TextBoxen nicht vorgefertigt, du müsstest das also selbst programmieren. Hierzu würde es sich eigentlich anbieten, "einfach" eine Klasse zu entwickeln, die eine "ValidatedTextBox" erstellt. Innerhalb der Klasse würden dann die Events der sichtbaren Textbox abgefangen und der Inhalt entsprechend verarbeitet. Blöd daran ist allerdings, dass die ActiveX-Steuerelemente die Enter() und Exit()-Events nicht weiterleiten und du somit nicht darauf reagieren kannst. Du müsstest also auf das .Change()-Event ausweichen, welches im Zweifel recht häufig aufgefangen werden muss.
Also bleibt dir zunächst nur, die Einzelfalllösung im Klassenmodul der UserForm. Hier würde ich mich an das Exit()-Event der Textbox binden und von dort aus eine Validation()-Function aufrufen, die den Inhalt der Textbox als Parameter enthält. Die Validierung selbst würde ich mit einem regulären Ausdruck erledigen. Falls die Validierung fehlschlägt, springst du zurück in die Textbox. Anschließend musst du nur noch überlegen, wie du den Fall abfängst, dass gar kein Exit-Event ausgelöst wird (bspw, wenn der Nutzer direkt einen Button klickt, während die Textbox noch aktiv ist).
Praktischer fände ich persönlich, die Teile auf drei Textboxen aufzuteilen. Noch besser wäre es, einfach die Datengültigkeit im Tabellenblatt zu verwenden und auf die UserForm zu verzichten.
Viele Grüße
derHöpp
Registriert seit: 16.08.2020
Version(en): 2019 64bit
04.12.2024, 12:05
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2024, 12:23 von Egon12.)
Hallo,
wenn ich es richtig verstanden habe, wäre es für deine Textbox so:
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
With TextBox1
If Len(TextBox1) < 6 Then
If Len(TextBox1) < 2 Then
Select Case KeyAscii
Case 65 To 122
Case Else: KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case 48 To 57, 96 To 105
Case Else: KeyAscii = 0
End Select
End If
Else
If Len(TextBox1) = 6 Then
Select Case KeyAscii
Case 45
Case Else: KeyAscii = 0
End Select
Else
If Len(TextBox1) = 9 Then Exit Sub
Select Case KeyAscii
Case 48 To 57, 96 To 105
Case Else: KeyAscii = 0
End Select
End If
End If
End With
End Sub
Gruß Uwe
ich habe noch etwas übersehen. Da brauchst noch die Begrenzung der maximalen Zeichenzahl.
Dies wäre so:
Code:
If Len(TextBox1) = 9 Then TextBox1 = Left(TextBox1, Len(TextBox1) - 1): Exit Sub
Folgende(r) 1 Nutzer sagt Danke an Egon12 für diesen Beitrag:1 Nutzer sagt Danke an Egon12 für diesen Beitrag 28
• omron2003
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
04.12.2024, 12:47
(Dieser Beitrag wurde zuletzt bearbeitet: 04.12.2024, 12:47 von Kuwer.
Bearbeitungsgrund: Code berichtigt
)
(04.12.2024, 10:27)omron2003 schrieb: Hallo Forum,
ich suche eine Möglichkeit das auf einer Userform in TextBox1 nur folgende
Eingaben möglich sind.
Format1: 2 Buchstaben und 4 Zahlen
Beispiel: AB1234
Format2: 2 Buchstaben und 4 Zahlen und 1 Bindestich und 2 Zahlen.
Beispiel: AB1234-12
Ab besten wäre ein vorbelegtes Eingabeformat, so das der User nur die Zahlen eingeben muss.
Besten Dank im Voraus
omron2003
Das wäre mein Vorschlag:
Code:
Option Explicit
Const MusterVorlage = "####-##"
Private Sub CommandButton1_Click()
If TextBox1 Like MusterVorlage Then
Cells(ActiveCell.Row, 3).Value = "AB" & UCase(TextBox1)
Else
MsgBox "Die Eingabe war nicht komplett!", vbInformation
TextBox1.SetFocus
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not LCase(TextBox1 & Chr(KeyAscii)) Like Left(MusterVorlage, Len(TextBox1) + 1) Then
KeyAscii = 0
End If
End Sub
Registriert seit: 20.11.2017
Version(en): Excel2013
Danke an alle die mir hier geantwortet haben!
Ich werde die verschiedenen Lösungsvorschläge testen und mich bei Fragen ggf. nochmals melden.
Nochmals besten Dank für die schnelle Hilfe.
Gruß
omron2003