Enstellt wurden diese beiden Zeilen, ...
14.01.2014 16:32:01
Luc:-?
…die eigentlich nur eine sind, …
On Abs(CInt(InStr(a, z) > 0)) + ZTmask Go
Sub lm, zm, lm
…nämlich On Abs(CInt(InStr(a, z) > 0)) + ZTmask GoSub lm, zm, lm
…also dann insgesamt so:
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 GoSub 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
Das ist aber eben eine sehr alte Version, bei der grundsätzlich Blank (" ") als Ersatzzeichen verwendet wird. In der von mir verwendeten Version ist ein zusätzliches Argument als Letztes enthalten, mit dem das Ersatzzeichen variabel festgelegt wdn kann. Irgendwo ist da zwar noch der Wurm drin, aber mit Leerstring ("") fktioniert's! In allen anderen Versionen muss leider noch zusätzlich WECHSELN eingesetzt wdn, um die Standard-Ersatz-Blanks zu eliminieren.
Gruß Luc :-?