Hallo Ben u. K.Rola,
ich denke, ihr könntet das Problem schon alleine lösen. Leider wird es sicher etwas aufwendiger, weil Excel nur recht mager mit Textverarbeitungsfunktionen ausgestattet ist. Weil du so traurig bist und noch ziemlich am Anfang, überlasse ich euch ausnahmsweise mal den Code meiner Funktion MaskOn(), die dein Problem auf elegante Weise lösen sollte. Für die ständige Verwendung importierst du sie am besten in ein Modulblatt einer leeren Excelmappe, die du als AddIn kennzeichnest (im VBA-Editor-Eigenschaftenfenster - erhält dann die Endung .xla und wird unsichtbar). Diese speicherst du am besten im Ordner Makro (nicht Macros) von Office. Für's erste reicht es aber auch, wenn du die Funktion auf dem Modulblatt der Mappe unterbringst, in der sie gebraucht wird. Hier der Code:
Rem erzeugt reduzierte Maske in Listenform nur aus Auswahl-ZTyp und Einzelblanks als Trennz
' Autor: Luc (L.Schuller) - über Herbers XL-Forum am 17.02.2005 publiziert
Function MaskOn(ByVal Text As String, ByVal ZTyp As String, Optional ByVal ZTmask) As String
Dim i As Integer, a As String, d As String, z As String, ZusZ As String
Const b = "abcdefghijklmnopqrstuvwxyzäöü", c = "0123456789", e = " +-,.E " 'letztZ=Chr(160)
If IsMissing(ZTmask) Then
ZTmask = 1
ElseIf IsNumeric(ZTmask) Then
ZTmask = ZTmask Mod 2 + 1
Else
ZusZ = ZTmask: ZTmask = 1
End If
For i = 1 To Len(Text)
Select Case lcase(Left(ZTyp, 3)) 'feste ZKomb in ZTyp
Case "gkz", "buz", "bz", "bzi", "len", "lin", "a0", "an", "anu"
a = c & b & "ß": z = lcase(Mid(Text, i, 1))
Case "gk", "gkb", "bst", "buc", "let", "lit"
a = b & "ß": z = lcase(Mid(Text, i, 1))
Case "kb", "mil", "min"
a = b & "ß": z = Mid(Text, i, 1)
Case "gb", "cal", "cap"
a = UCase(b): z = Mid(Text, i, 1)
Case "zf", "dg", "zif", "dig", "num", "00", "000"
a = c: z = Mid(Text, i, 1)
Case "zw", "nv", "zah", "zwt", "nvl", "+0", "0.-"
a = c & e: z = Mid(Text, i, 1)
Case "mar", "mrk", "mkt", "mtx"
z = Mid(Text, i, 1)
If z = Left(Right(ZTyp, 2), 1) Then
a = z: d = z
ElseIf z = Right(ZTyp, 1) Then
a = z: d = z
ElseIf d = Left(Right(ZTyp, 2), 1) Then
a = z
Else: a = ""
End If
Case Else 'freie ZKomb in ZTyp
a = ZTyp: z = Mid(Text, i, 1)
End Select
a = a & ZusZ
On Abs(CInt(InStr(a, z) > 0)) + ZTmask Go
Sub lm, zm, lm
Next i
MaskOn = WorksheetFunction.Substitute(Trim(MaskOn), " ", " ")
Exit Function
lm: Rem reduziert maskierte Zeichen (mehrere hintereinander als 1 blank)
MaskOn = MaskOn & IIf(Right(MaskOn, 1) = " ", "", " ")
Return
zm: Rem übernommene Zeichen
MaskOn = MaskOn & Mid(Text, i, 1)
Return
End Function
Du gibst dann in den Klammern zuerst den Bezug auf die Zelle und als 2.Argument "num" ein. Die Funktion kann noch mehr, aber das findet ihr schon selber heraus.
Viel Spaß, Luc
PS: Leider wird das "Gosub" im Code hier zerrissen. Es muss zusammengeschrieben wdn!