Kapitel 5 Benutzerdefinierte Funktionen
230
Nach der Deklaration der Funktion Quersumme() als Funktion vom Datentyp Long mit dem
Argument Zahl im Excel-Standardzahlenformat enthalten die nächsten beiden Anweisungen
Variablendeklarationen. I ist die Zählvariable für die For...Next-Schleife, deren größter Wert
der Stellenanzahl von Zahl entspricht.
Neues bietet dagegen die zweite Variable: S wird als String, als Textvariable bekannt gemacht.
Ihr Sinn wird erst beim Betrachten des Schleifenrumpfs klar. Es existiert nämlich keine
Funktion in Excel, weder als Tabellenfunktion noch als VBA-Funktion, mit der man die
Anzahl der Stellen einer Zahl feststellen kann oder mit der sich einzelne Ziffern aus einer
Zahl extrahieren lassen. (Ersteres könnte man noch mit einer Logarithmus-Funktion hinbe-
kommen, Letzteres gelänge dagegen nur sehr umständlich.)
Deshalb wird hier Zahl mittels der VBA-Funktion Str() in die String-Variable S umgewandelt.
Bei dieser kann man dann mit der VBA-Funktion Len() (von engl.: »length«) die Textlänge
ermitteln, was der Ziffernanzahl von Zahl und damit der Anzahl der Schleifendurchläufe ent-
spricht.
Innerhalb der Schleife gibt die VBA-Funktion Mid() nacheinander die einzelnen Ziffern von
Zahl als Zeichen heraus, indem sie aus der String-Variablen S ab der Stelle I jeweils ein Zeichen
herauskopiert. (Die Anzahl der zu kopierenden Zeichen werden durch das dritte Argument,
hier die Eins, bestimmt.) Zeichen können nicht zu Zahlen hinzuaddiert werden. Deshalb wan-
delt die VBA-Funktion Val() (von engl.: »value«) die als Zeichen dargestellten einzelnen Ziffern
von Zahl wieder in Zahlen zurück, die zu Quersumme hinzugezählt werden können.
Wenn alle Stellen von Zahl abgearbeitet worden sind, wird die Schleife verlassen und der
Wert der Variablen Quersumme wird von der Tabellenfunktion Quersumme() der Formel im
Arbeitsblatt übermittelt.
In diesem Beispiel findet der Anfänger sicherlich den Umweg über die String-Variable und
den Einsatz der dazu gehörenden String-Funktionen Str(), Len(), Mid() und Val() sehr ver-
wirrend. Es ist aber dennoch die am wenigsten anspruchsvolle Lösung. Der Einsatz von
Schleifen, Variablen und VBA-Funktionen ließ sich anhand weniger Zeilen zeigen.
CD-ROM Auf der CD-ROM zum Buch finden Sie im Ordner \Buch\Kap05 in der Arbeitsmappe Quersumme.xls
(Excel 97-2003) bzw. Geometrie.xlsm (Excel 2007/2010) auf dem Arbeitsblatt Quersumme dieses
Beispiel. In Modul1 dieser Arbeitsmappe können Sie mithilfe des Visual Basic-Editors den Code einse-
hen. Auf dem Arbeitsblatt Spezial befinden sich zwei weitere Lösungen für die Berechnung der Quer-
summe einer Zahl. Eine Lösung kommt dabei ohne VBA-Funktionen aus.
Die Funktion Kreisfläche1()
Diese Funktion soll dasselbe leisten wie die am Anfang dieses Kapitels beschriebene Funktion
Kreisfläche(). Sie soll hier aber eine Verbesserung erfahren und Ihnen den Einsatz der integ-
rierten Tabellenfunktionen vorführen.
Die Funktion Kreisfläche() benutzte zur Berechnung der Kreisfläche die Kreiszahl Pi als Konstante
mit dem Wert 3,14159265358979 (unter Ausnutzung der in Excel maximal möglichen Stellen-
zahl). Doch nicht immer hat man die Kreiszahl Pi mit allen Nachkommastellen in der notwendi-
gen Genauigkeit zur Hand, sodass man auf zusätzliche Tabellenwerke angewiesen scheint.