Guten Tag,
ich bräuchte im Rahmen einer Prüfungsvorbereitung bei folgender Aufgabenstellung eure Hilfe:
Erstelle eine benutzerdefinierte Funktion ANZAHLBUCHSTABEN innerhalb von Microsoft Excel, die in beliebigen als Argumenten anzugebenden Zellen und Zellbereichen alle Zeichen in den Werten dieser Zellen durchläuft und die Gesamtzahl aller gefundenen Buchstaben (egal, ob groß oder klein) als Funktionsergebnis zurückgibt. Wurden keine Zellen mit Buchstaben darin gefunden, soll 0 zurückgegeben werden. Die erstellte Funktion soll im Funktionsassistenten in der Rubrik Informationen erscheinen und einen erklärenden Text enthalten.
Mein Code sieht folgendermaßen aus:
'Funktion, die die Anzahl gefundener Buchstaben in Zellen und Zellbereichen ausgibt
Public Function ANZAHLBUCHSTABEN(ParamArray Args() As Variant) As Integer
Dim i As Integer
Dim s As Integer
Dim sum As Integer
sum = 0
Const ALLOWED_CHARS = "abcdefghijklmnopqrstuvwxyzß"
'Alle Parameter durchlaufen
For i = LBound(Args) To UBound(Args)
'Prüfen ob etwas eingegeben wurde
If InStr(LCase(CStr(Args(i))), ALLOWED_CHARS) > 0 Then
'Alle Stellen des Arguments durchlaufen und prüfen, ob Buchstaben vorkommen
For s = 1 To Len(Args(i))
If Mid(LCase(CStr(Args(i))), s, 1) = ALLOWED_CHARS Then
sum = sum + 1
Else
sum = sum + 0
End If
Next
ElseIf TypeName(Args(i)) = "Range" Then
'Bei Zellbereichen jede Zelle daraus betrachten
Dim Zelle As Range
For Each Zelle In Args(i)
'Zellenargument zu einem String mit nur Kleinbuchstaben machen und prüfen, ob ein Buchstabe drinne vorkommt
If InStr(LCase(CStr(Zelle.Value)), ALLOWED_CHARS) > 0 Then
'Alle Argumente einer Zelle durchlaufen und die Buchstaben zählen
For s = 1 To Len(Zelle.Value)
If Mid(LCase(CStr(Zelle.Value)), s, 1) = ALLOWED_CHARS Then
sum = sum + 1
Else
sum = sum + 0
End If
Next
End If
Next
Else
sum = sum + 0
End If
ANZAHLBUCHSTABEN = sum
Next
End Function
Sub SetFunctionInfos()
Application.MacroOptions Macro:="ANZAHLBUCHSTABEN", Description:="Funktion zur Bestimmung der Anzahl von vorkommenden Buchstaben", Category:=9
End Sub
Wo liegt mein Fehler und wie behebe ich selbigen?
Vielen Dank im Voraus.
Beste Grüße
|