VBA - Sonderzeichen löschen und ersetzen

Grüße, liebe Com!

Ich hab da eine kleine Frage an die VBA-Freunde!

Ich versuche gerade aus einem großen Wust aus Text und Sonderzeichen eMails auszufiltern. Das ganze könnte so aussehen:

Text1°!/„Text2!)([email protected])(“/

Das ganze soll am Ende nun so aussehen, dass „abc…“, „123…“ und „.@“ stehen bleiben. Alles was nicht in diesen Vorgaben drin steht, soll verschwinden. Allerdings soll er die Zeichen nicht einfach löschen, da es ja am Ende sonst so aussieht:

[email protected]

Ergo sollte er alles, was er nicht in den erlaubten Zeichen drin hat entweder durch ein Leerzeichen ersetzen:

Text1 Text2 [email protected]

Gefunden hatte ich bereits folgenden (abgeänderten) Schippsel im Netz:

Public Const Erlaubt = „abcdefghijklmnopqrstuvwxyz0123456789.@“

Public Function Filter(ByVal Text As String, ByVal Chars As String) As String
Dim i As Long

'Nur angegebene Zeichen durchlassen:
For i = 1 To Len(Text)
If InStr(1, Chars, Mid$(Text, i, 1), Compare) Then
Filter = Filter & Mid$(Text, i, 1)

End If
Next i

End Function

Funktioniert fast perfekt, wenn ich einen „Text = Filter(Text, Erlaubt)“ drüber jage, aber ich bekomme den Part mit dem Leerzeichen da irgendwie nicht reingedichtet.

Kann mir da jemand nen Tipp geben? :smile:

Ich versuche gerade aus einem großen Wust aus Text und
Sonderzeichen eMails auszufiltern. Das ganze könnte so
aussehen:

Text1°!/„Text2!)([email protected])(“/
Text1 Text2 [email protected]

Hallo Neyus,

ich hab noch äöü mit eingebaut.

Option Explicit

Public Const Erlaubt = "abcdefghijklmnopqrstuvwxyzäöü0123456789.@"

Sub Test()
MsgBox Filter("Text1°!/""Text2!)([email protected])(""/", Erlaubt)
End Sub

Public Function Filter(ByVal Text As String, ByVal Chars As String) As String
Dim i As Long
'Nur angegebene Zeichen durchlassen:
For i = 1 To Len(Text)
 If InStr(Chars, LCase(Mid$(Text, i, 1))) = 0 Then
 Mid$(Text, i, 1) = " "
 End If
Next i
While InStr(Text, " ")
 Text = Replace(Text, " ", " ")
Wend
Filter = Text
End Function

Gruß
Reinhard

Ah, stimmt! Umlaute sind ne gute Idee! :smile:

Ah, stimmt! Umlaute sind ne gute Idee! :smile:

Hallo Neyus,

äh, das „ß“ fehlt auch noch :smile:

Gruß
Reinhard