Hallo,
diese erste Überprüfung kann nicht funktionieren:
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:
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:
If Mid(LCase(CStr(Args(i))), s, 1) = ALLOWED_CHARS Then
Hier wäre jetzt die Funnktion INSTR angebracht:
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:
sum = sum + 0
Es kann also der ELSE-Zweig weggelassen werden.
VG
Michael
|