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

Zelleneintrag überwachen und begrenzen

Forumthread: Zelleneintrag überwachen und begrenzen

Zelleneintrag überwachen und begrenzen
19.09.2025 14:12:55
Timo78
Hallo zusammen,
Ich habe mir für die Arbeit eine Excel Datei erstellt in der eine Chargennummer einzutragen ist zwecks ausdrucken der Dokumente, da es immer zu fehlerhaften Eingaben kommt wollte ich diese begrenzen.
Die Einträge bestehen immer aus 3 Buchstaben und 6 Zahlen z. B. "G9FI16300".
Es sollte nur diese Kombinationen zulassen.
Habe schon mehrere Sachen versucht ohne Erfolg.
Mir würde es schon reichen wenn nur 3 Buchstaben und 6 Zahlen auf die Zelle begrenzt werden, es muss nicht unbedingt der chronologische Ablauf überwacht werden
Zb. 1 Buchstabe, 1 Zahl, 2 Buchstaben, 5 Zahlen.

Gruß Timo, danke schonmal für die Hilfestellung.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 15:10:26
velo
Hi,

z.B. so (Code muss in das entsprechende Tabellen-Modul eingefügt werden, nicht in ein Standard Modul!):
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A2:A" & Me.Rows.Count)) Is Nothing Then 'Ab A2 (Überschrift)
Dim val As String
val = Target.Text
If IsStringCorrect(val) = False And val > "" Then
MsgBox "Falsche Eingabe", vbOKOnly
Target.Value = ""
End If
End If
End Sub

Private Function IsStringCorrect(str As String) As Boolean
'Reihenfolge der Bedinungen:
'1. Passt Länge?
'2. Ist das erste Zeichen ein Buchstabe?
'3. Ist das zweite Zeichen eine Zahl?
'4. Sind die mittleren Zeichen Buchstaben?
'5. Sind die letzten 5 Zeichen Zahlen?
If Len(str) > 9 Or _
IsNumeric(Left(str, 1)) Or _
Not IsNumeric(Mid(str, 2, 1)) Or _
IsNumeric(Mid(str, 3, 2)) Or _
Not IsNumeric(Right(str, 5)) Then
IsStringCorrect = False
Else
IsStringCorrect = True
End If

End Function

Die Funktion IsStringCorrect() kann definitiv noch verbessert bzw. aufgehübscht werden, war jetzt mehr auf die schnelle gemacht.

VG
velo
Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 16:07:39
daniel
Hi

verwende die Function:

Function checkCharge(txt As String) As Boolean

Dim ZählerTxt As Long
Dim ZählerZahl As Long
Dim i As Long

For i = 1 To Len(txt)
ZählerTxt = ZählerTxt - (Mid(txt, i, 1) Like "[A-Z]")
ZählerZahl = ZählerZahl - (Mid(txt, i, 1) Like "[0-9]")
Next

checkCharge = (ZählerTxt = 3) And (ZählerZahl = 6)
End Function


schreibe dann in eine freie Zelle (ggf auch außerhalb des Druckbereichs) die Formel (A1 ist die Zelle, die du überwachen willst)
=checkCharge(A1)
dies ergibt dir dann ein WAHR oder FALSCH, je nach dem ob die Chargennummer korrekt ist oder nicht

dies kannst du dann in er Bedingten Formatierung verwenden, um die Zelle A1 zu färben, wenn die die Kontrollzelle ein FALSCH ergibt
oder auch in der Datenüberprüfung, um schon die falsche Eingabe zu verhindern.
hier dann mit der Einstellung Zulassen: Benutzerdefiniert und als Formel einfach =x1 (wobei x1 die Zelle mit der Kontrollformel ist:

Gruß Daniel
Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 16:10:08
peter
Hallo

Datenüberprüfung für Zelle A2 : =REGEXTESTEN(A2;"^[A-Z]{1}[0-9]{1}[A-Z]{2}[0-9]{5}$")
A2 Kopieren (STRG-C)
A3-A100 markieren
STRG-ALT-V
Bei Einfügen "Gültigkeit" wählen

Mfg.
Peter
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 19:33:21
daniel
Hi

hier nochmal ein Ansatz für alle, die mit RegEx ihre Schwierigkeiten haben.

die folgende Formel gibt WAHR aus, wenn die Bedinung erfüllt ist, hierbei müssen Anzahl und Reihenfolge stimmen (x0xx00000 (x=buchstabe, 0=Zahl)

=UND(1*(ISTZAHL(-TEIL(F5;SEQUENZ(9);1)))=--TEXTTEILEN("0 1 0 0 1 1 1 1 1";;" "))


die Formel gilt für deine Beispieldatei (Eingabe in F5)
im Textteil steht 1 für Zahl und 0 für Buchstabe bzw nicht Zahl, jeweils mit Leerzeichen getrennt.
du kannst diese Formel in der Bedingten Formatierung (falsche Eingabe durch Färbung anzeigen) und in der Datenüberprüfung verwenden (falsche Eingabe wird abgeblockt)

für die Gültigkeitsprüfung dann Zulassen: Benutzerdefiniert auswählen und diese Formel verwenden.
Gruß Daniel

Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 20:25:37
Timo
Hey,
danke für den Code zwecks Datenprüfung.

Der Code funktioniert soweit bis auf die Anzahlprüfung, wenn ich zb. am Schluss mehrere Zahlen dran hänge zb. G8FD1630000 lässt diese zu, ebenso bei G8FD0163000.

=UND(1*(ISTZAHL(-TEIL(J3;SEQUENZ(9);1)))=--TEXTTEILEN("0 1 0 0 1 1 1 1 1";;" ");UND(LÄNGE(J3)=9))
habe den Code eingegrenzt auf max 9 Zahlen und Buchstaben, so funktioniert er wie er soll.

Danke für deine Mühe, hatte Online nicht gefunden außer Code der nicht funktionierte als Vorschlag über die KI.


Gruß Timo
Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 19:46:56
daniel
oder noch ne Formelmöglichkeit

=UND(LÄNGE(F5)=9;TEXTKETTE(WENNFEHLER(TEIL(F5;SEQUENZ(9);1)^0;"x"))="x1xx11111")


passt auch für Datenüberprüfung und Bedingte Formatierung
anstelle der Buchstaben kann man aber auch Zeichen eingeben (Komma usw)
falls das ein Problem ist, kann man die Formel noch erweitern:

=UND(LÄNGE(F5)=9;LET(a;TEIL(F5;SEQUENZ(9);1);TEXTKETTE(WENNFEHLER(a^0;WENN((CODE(a)>=CODE("A"))*(CODE(a)=CODE("Z"));"x";"-"))))="x1xx11111")


x steht jeweils für einen Buchstaben, 1 für eine Zahl an der jeweiligen Position

Gruß Daniel
Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 19:11:50
Oppawinni
Ja, das ist der typische Anwendungsfall für Regex..
Ich wollte schon fast etwas in VBA posten, aber das hat sich ja erledigt, leider kennt mein Excel 2024 die Funktion nicht.
Mir scheint aber, dass das Pattern etwas kürzer sein könnte...
"[A-Z][0-9][A-Z]{2}[0-9]{5}"
sollte es wohl auch tun, oder?
Anzeige
Ich nehme alles zurück..
19.09.2025 19:27:32
Oppawinni
Eigentlich wollte ich nur die {1} raus werfen..
"^[A-Z][0-9][A-Z]{2}[0-9]{5}$"
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 15:37:49
Timo
Dein Code funktioniert so weit, bei den zwei Buchstaben passt es noch nicht. Bei der Eingabe G9FI16300 und ändern der zwei Buchstaben in Zahlen werden diese akzeptiert als io. Siehe Bsp. Datei.


https://www.herber.de/bbs/user/178935.xlsm

Gruß Timo
Anzeige
AW: Zelleneintrag überwachen und begrenzen
19.09.2025 16:08:29
Timo
Hallo Velo,

danke für deinen super Code, konnte diesen selber korrigieren wegen der fehlerhaften Stelle in der Mitte mit den zwei Buchstaben.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("J3:J" & Me.Rows.Count)) Is Nothing Then 'Ab J3 (Überschrift)
Dim val As String
val = Target.Text
If IsStringCorrect(val) = False And val > "" Then
MsgBox "Falsche Eingabe", vbOKOnly
Target.Value = ""
End If
End If
End Sub

Private Function IsStringCorrect(str As String) As Boolean
'Reihenfolge der Bedinungen:
'1. Passt Länge?
'2. Ist das erste Zeichen ein Buchstabe?
'3. Ist das zweite Zeichen eine Zahl?
'4. Sind die mittleren Zeichen Buchstaben?
'5. Sind die letzten 5 Zeichen Zahlen?
If Len(str) > 9 Or _
IsNumeric(Left(str, 1)) Or _
Not IsNumeric(Mid(str, 2, 1)) Or _
IsNumeric(Mid(str, 3, 1)) Or _
IsNumeric(Mid(str, 4, 2)) Or _

Not IsNumeric(Right(str, 5)) Then
IsStringCorrect = False
Else
IsStringCorrect = True
End If

End Function



so funktioniert es wie ich es mir vorstelle, vielen vielen Dank.

Gruß Timo Weiß
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige