Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sonderzeichen verhindern und durch Unterstrich ersetzen

Forumthread: Sonderzeichen verhindern und durch Unterstrich ersetzen

Sonderzeichen verhindern und durch Unterstrich ersetzen
03.06.2024 11:33:13
christine1
Hallo,

ich habe in bestimmten Zellen Text, der keine Sonderzeichen enthalten darf (bei mir sind die Zellen als Name "MonatText" deklariert). Dazu hab ich mir von einem alten Forum von euch einen passenden Code kopiert. Er funktioniert wunderbar. Hier werden die Sonderzeichen gelöscht.
Jetzt müsste ich aber statt dem Löschen des Zeichens das falsche Zeichen durch einen Unterstrich ersetzen. Leider funktioniert das bei mir nicht (ich habe in der Zeile .Replace "einfach" statt "" --> "_" geschrieben. Könnt ihr mir helfen?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RegEx As Object
Dim strText As String
Dim cell As Range

' Prüfe, ob die Änderung im Bereich MonatText liegt
If Not Intersect(Me.Range("MonatText"), Target) Is Nothing Then
Set RegEx = CreateObject("Vbscript.Regexp")

' Iteriere über alle betroffenen Zellen
For Each cell In Intersect(Me.Range("MonatText"), Target)
strText = cell.Value

With RegEx
.IgnoreCase = True
.MultiLine = True
.Pattern = "[^0-9 a-zäöüß\-_]" ' Erlaubte Zeichen
.Global = True
strText = .Replace(strText, "") ' Ersetze fehlerhafte Zeichen durch Leerzeichen
End With

If Len(strText) Len(cell.Value) Then
Application.EnableEvents = False
MsgBox "Es sind keine Sonderzeichen erlaubt." & vbCr & _
"Sonderzeichen werden gelöscht!", vbCritical
cell.Value = strText
Application.EnableEvents = True
End If
Next cell
End If
End Sub

Vielen Dank schon mal!
Christine
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sonderzeichen verhindern und durch Unterstrich ersetzen
03.06.2024 11:52:44
Heli
Hi,

so auf den schnellen ersten Blick würde ich sagen Du musst noch die erlaubten Zeichen anpassen:
.Pattern = "[^0-9 a-zäöüß\-_]" ' Erlaubte Zeichen

.Pattern = "[^0-9 a-zäöüß\-]" ' Erlaubte Zeichen


Also den "_" entfernen :-)
Ungetestet!

Servus, Heli
Anzeige
AW: Sonderzeichen verhindern und durch Unterstrich ersetzen
03.06.2024 12:22:44
GerdL
Hallo Christine!
Private Sub Worksheet_Change(ByVal Target As Range)

Dim RegEx As Object
Dim strText As String, strTextneu As String
Dim cell As Range

' Prüfe, ob die Änderung im Bereich MonatText liegt
If Not Intersect(Me.Range("MonatText"), Target) Is Nothing Then

Set RegEx = CreateObject("Vbscript.Regexp")

' Iteriere über alle betroffenen Zellen

For Each cell In Intersect(Me.Range("MonatText"), Target)
strText = cell.Value

With RegEx
.IgnoreCase = True
.MultiLine = True
.Pattern = "[^0-9 a-zäöüß\-_]" ' Erlaubte Zeichen
.Global = True
strTextneu = .Replace(strText, "_") ' Ersetze fehlerhafte Zeichen durch Unterstrich
End With

If strTextneu > strText Then
Application.EnableEvents = False
MsgBox "Es sind keine Sonderzeichen erlaubt." & vbCr & _
"Sonderzeichen werden durch _ ersetzt!", vbCritical
cell.Value = strTextneu
Application.EnableEvents = True
End If
Next cell
End If
End Sub


Gruß Gerd
Anzeige
AW: Sonderzeichen verhindern und durch Unterstrich ersetzen
03.06.2024 12:53:35
christine1
Hallo alle zusammen,
ich bedanke mich wieder mal aufs Herzlichste bei Euch für die super schnelle Hilfe. Beide Codes laufen super, jetzt muss ich mich noch entscheiden.
VG Christine
AW: Sonderzeichen verhindern und durch Unterstrich ersetzen
03.06.2024 12:28:07
daniel
Hi
mal ne Variante ohne RegEx.
das sollte für Anfänger in VBA leichter verständlich und anzupassen sein.
ich hab auch mal die Meldung ans Ende genommen.
Wenn du mehrere Zellen gleichzeitig änderst (z.B. per Copypaste), dann reicht ja eine Meldung.

Private Sub Worksheet_Change(ByVal Target As Range)


Dim strText As String, strNeu As String
Dim cell As Range
Dim Z As String, i As Long
Dim Check As Boolean
' Prüfe, ob die Änderung im Bereich MonatText liegt
If Not Intersect(Me.Range("MonatText"), Target) Is Nothing Then


' Iteriere über alle betroffenen Zellen
For Each cell In Intersect(Me.Range("MonatText"), Target)
strText = cell.Value
For i = 1 To Len(strText)
Z = Mid(strText, i, 1)
If Not LCase(Z) Like "[^0-9 a-zäöüß\-_]" Then ' Erlaubte Zeichen
Z = "_"
Check = True
End If
strNeu = strNeu & Z
Next
If strNeu > strText Then
Application.EnableEvents = False
cell.Value = strNeu
Application.EnableEvents = True
End If
Next

If Check Then MsgBox "Es sind keine Sonderzeichen erlaubt." & vbCr & _
"Sonderzeichen werden durch ""_"" ersetzt!", vbCritical
End If
End Sub


Gruß Daniel
Anzeige
AW: Sonderzeichen verhindern und durch Unterstrich ersetzen
03.06.2024 13:00:41
christine1
Hallo Daniel,
ich habe mich jetzt für diesen Code entschieden, da er - wie du schon geschrieben - hast, leichter verständlich ist. Ich finde eure Hilfe unersetzlich. LG
;

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