Hallo,
diese erste Überprüfung kann nicht funktionieren:
1 | If InStr(LCase( CStr (Args(i))), ALLOWED_CHARS) > 0 Then
|
Wenn z. B. eine Zelle den Text "Ich123" enthält, suchst Du darin den Strin"abcdefghijklmnopqrstuvwxyzß". Dieser ist ja logisch nur schwer darin enthalten, so dass, wenn die Zelle nicht zufällig das gesamte Alphabet enthält, diese Prüfung nicht wahr wird und der Code darin nie ausgeführt wird.
Ich weiß ja nicht, was Du machen willst, wenn es aber darum geht zu prüfen, ob die Zelle leer ist, dann reicht z.B. das:
1 | If Len( CStr (Args(i).value)) > 0 Then
|
In der folgenden Zeile vergleichst Du nun einen einzelnen Buchstaben mit der Zeichenfolge "abcdefghijklmnopqrstuvwxyzß". Das kann nie wahr werden, somit kommt als Summe immer 0 heraus:
1 | If Mid(LCase( CStr (Args(i))), s, 1) = ALLOWED_CHARS Then
|
Hier wäre jetzt die Funnktion INSTR angebracht:
1 | If InStr(ALLOWED_CHARS, Mid(LCase( CStr (Args(i).Value)), s, 1)) > 0 Then
|
Die folgende Zeile ist nicht nötig, da Sie den Wert nicht verändert und nur unnötig Rechenleistung verbraucht:
Es kann also der ELSE-Zweig weggelassen werden.
VG
Michael
|