Mathematische Funktionen

Funktionen werden stets mit geklammertem Argument aufgerufen. (Beispiel x = Sin ( a * b )). In der Klammer können Variablennamen, zu berechnende Ausdrücke aber auch weitere Funktionsaufrufe in beliebiger Komplexität stehen. In VB enthalten sind:
 
Abs Absolutwert
Atn Arcustangens
Cos Kosinus
Exp Potenz zur Basis e
Fix Ganzzahl, ohne Rundung
Int größte Ganzzahl <= Argument
Log natürlicher Logarithmus
Randomize Initiiert Zufallsgenerator
Rnd Zufallszahl, 0 <= x < 1
Sgn Vorzeichenwert
Sin Sinus
Sqr Quadratwurzel
Tan Tangens

Mathematische Funktionen, die in der Liste nicht enthalten sind, können definiert werden. Eine Tabelle dazu befindet sich in der VBA-Hilfe. Um sie zu finden, tippe man im Index die gewünschte Funktion oder (wenn die Schreibung unsicher ist) ersatzweise z.B. "Kotangens".

Funktionen können beliebig nachdefiniert werden,. Ihr Aufruf erfolgt dann genauso, wie derjenige der vorhandenen. Solche Funktionsdefinitionen können überall im Programm (aber möglichst in einem Modul und nicht innerhalb einer "Sub") stehen. Die Syntax der Definition einer Funktion des frei wählbaren Namens (hier im Beispiel "fktName") lautet :
 
Function fktName (Argumentvariable As Variablentyp, ... ) As Variablentyp
   [Anweisungen unter Verwendung der Argumentvariablen]
   fktName = Berechnungsergebnis
End Function


Funktionen zur Handhabung von Strings (Zeichenketten)

Zeichenkettenoperationen werden nicht unbedingt vom Anfänger benötigt. Trotzdem ist gut zu wissen, was prinzipiell geht. Deshalb die folgende Übersicht. Zur Verwendung der Funktionen und Anweisungen gibt es in der Visual-Basic-Hilfe, die jeweils mit dem Funktionsnamen aufrufbar ist, jede Menge Unterstützung (Erläuterungen und Aufrufbeispiele).

Zeichenerklärung:
[..] Eckige Klammern zeigen an, daß optionale Erweiterungen folgen
| Senkrechter Strich steht für "oder"
 

Funktionsname Aufruf Funktion
Asc
AscB
AscW
num = Asc(string)
num = AscB(bytefolge)
num = AscW(unicodefolge)
Gibt einen Wert vom Typ Integer zurück, der den Zeichen-Code entsprechend dem ersten Buchstaben in einer Zeichenfolge darstellt.
Chr
ChrB
ChrW
string = Chr(zeichencode)
string = ChrB(bytecode)
string = ChrW(unicode)
Gibt einen Wert vom Typ String zurück, der das Zeichen enthält, das dem angegebenen Zeichen-Code zugeordnet ist.
Format
Format$
text = Format(ausdruck,format[,...])
text = Format$(ausdruck,format[,...])
Gibt einen Wert vom Typ Variant (String) zurück, der einen entsprechend den Anweisungen in einem Formatausdruck formatierten Ausdruck enthält.
InStr
InStrB
pos = InStr(start,string1,string2,comp)
pos = InStrB(start,string1,string2,comp)
Gibt einen Wert vom Typ Variant (Long) zurück, der die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge angibt.
LCase
LCase$
kleinstring = LCase(string)
kleinstring = LCase$(string)
Gibt einen Wert vom Typ String zurück, in dem alle Buchstaben in Kleinbuchstaben umgewandelt worden sind.
Left
Left$
LeftB
LeftB$
teilstring = Left(string,länge)
teilstring = Left$(string,länge)
teilstring = LeftB(string,länge)
teilstring = LeftB$(string,länge)
Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen ab dem ersten (linken) Zeichen einer Zeichenfolge enthält. Die LeftB-Funktion wird für Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. Mit length wird nicht die Anzahl der zurückzugebenden Zeichen angegeben, sondern die Anzahl der Bytes.
Len
LenB
num = Len(string|variable) Gibt einen Wert vom Typ Long zurück, der die Anzahl der Zeichen in einer Zeichenfolge oder die zum Speichern einer Variablen erforderlichen Bytes enthält.Die LenB-Funktion wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. LenB gibt nicht die Anzahl der Zeichen in einer Zeichenfolge zurück, sondern die Anzahl der Bytes, die zur Darstellung dieser Zeichenfolge verwendet werden. Mit benutzerdefinierten Typen gibt LenB die Größe im Speicher zurück, einschließlich aller Polster zwischen Elementen.
LSet LSet string1 = string 2
LSet variable1 = variable2
Anweisung. Richtet eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen links aus oder kopiert eine Variable eines benutzerdefinierten Datentyps in eine Variable eines anderen benutzerdefinierten Datentyps.
LTrim string = LTrim(zeichenfolge) Gibt einen Wert vom Typ Variant (String) zurück, der eine Kopie einer bestimmten Zeichenfolge enthält, die keine führenden Leerzeichen enthält.
Mid
Mid$
MidB
Mid$
string = Mid(string, start[, length])
string = Mid$(string, start[, length])
string = MidB(string, start[, length])
string = MidB$(string, start[, length])
Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge enthält. Die MidB-Funktion wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. Die Argumente geben nicht die Anzahl der Zeichen an, sondern die Anzahl der Bytes.
Right
Right$
RightB
RightB$
teilstring = Right(string,länge)
teilstring = Right$(string,länge)
teilstring = RightB(string,länge)
teilstring = RightB$(string,länge)
Gibt einen Wert vom Typ Variant (String) zurück, der eine bestimmte Anzahl von Zeichen von der rechten Seite (dem Ende) einer Zeichenfolge enthält.Die RightB-Funktion wird für die Byte-Daten verwendet, die in einer Zeichenfolge enthalten sind. length gibt nicht die Anzahl der zurückzugebenden Zeichen zurück, sondern die Anzahl der Bytes.
RSet RSet stringvariable = zeichenfolge Anweisung. Richtet eine Zeichenfolge innerhalb einer Zeichenfolgenvariablen rechts aus.
RTrim string = RTrim(zeichenfolge) Gibt einen Wert vom Typ Variant (String) zurück, der eine Kopie einer bestimmten Zeichenfolge enthält, die keine nachgestellten Leerzeichen enthält.
String string = String(zahl,zeichen) Gibt eine Zeichenfolge vom Typ Variant (String) zurück, die ein sich wiederholendes Zeichen der angegebenen Länge enthält.
Trim string = Trim(zeichenfolge) Gibt einen Wert vom Typ Variant (String) zurück, der eine Kopie einer bestimmten Zeichenfolge enthält, die keine Kombination aus führenden und nachgestellten Leerzeichen enthält.


Finanzmathematische Funktionen

Visual Basic ist besonders auch für Händler und Krämer (das nennt man heute "Geldadel") gedacht, deshalb gibt es einen Fülle vorgefertigter Funktionen für Berechnungen mit Geld (leider fehlt jegliche Funktion zur Vermehrung von Geld!). Um Informationen zur genauen Funktion und zum Aufruf der folgenden Funktionen zu erhalten, tippe man im Hilfe-Index "finanz...", es erscheint die Liste der 13 Funktionen, die man sich einzeln angucken kann. Trägt man diese Funktionsnamen in ein Code-Modul ein, so erscheint bei der Öffnungsklammer ein Flyer (kleines Fenster) mit kurzen Angaben zu den Argumenten.
Hinweis: Wer eine Funktionsgruppe öfter benötigt, sollte sich die Hilfeseiten ausdrucken!
 
Funktionsname Grobe Funktionsbeschreibung
DDB Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum mit Hilfe der geometrisch degressiven Abschreibungsmethode oder einer ausgewählten Methode
FV Zukünftiger Wert einer Annuität bei regelmäßigen, konstanten Zahlungsausgängen und einem konstanten Zinssatz
IPmt Zinszahlung für einen bestimmten Zeitraum einer Annuität bei regelmäßigen, konstanten Zahlungen und einem konstanten Zinssatz 
IRR Interner Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen)
MIRR Modifizierter interner Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen) 
NPer Anzahl der Zeiträume für eine Annuität bei regelmäßigen, konstanten Zahlungen und einem konstanten Zinssatz
NPV Netto-Barwert einer Investition bei regelmäßigen Cash Flows (Aus- und Einzahlungen) und einem Diskontsatz
Pmt Auszahlung für eine Annuität bei regelmäßigen konstanten Zahlungsausgängen und konstantem Zinssatz
PPmt Kapitalanteil einer Auszahlung für einen bestimmten Zeitraum einer Annuität bei regelmäßigen konstanten Auszahlungen und einem konstanten Zinssatz 
PV Barwert einer Annuität bei zukünftig regelmäßig und konstant zu leistenden Zahlungsausgängen und einem konstanten Zinssatz
Rate Zinssatz einer Annuität pro Zeitraum
SLN Arithmetische Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum 
SYD Jahresabschreibung eines Vermögenswertes über einen bestimmten Zeitraum 


Umwandlungsfunktionen

betreffen die Umwandlung von Datentypen ineinander. Diese Umwandlung, die oft automatisch erfolgt, soll in Zweifelsfällen programmiert werden, denn man kann durch Verknüpfung unverträglicher Variabler die schönsten, kaum zu findenden Fehler produzieren. Zwar bemüht sich VBA selbst, das zu vermeiden, ist aber viel zu komplex, um alle möglichen Fälle sicher zu beherrschen. Man tippe im Hilfeindex "typu..", dann erscheint unter dem Schlüsselwort "Typ-Umwandlungsfunktionen" die Übersicht. Da die Umwandlungsfunktionen einer geschickten Namenskonvention folgen, kann man sie leicht merken bzw. erraten. Sie beginne alle mit "C", darauf folgt ein drei- oder vierstelliges Kürzel des neuen Typs, also z.B. CInt, CDbl oder CDate. (Integer, Double, Datum).

Übersicht:
 

Funktion Rückgabetyp Bereich des Arguments 
CBool  Boolean Eine gültige Zeichenfolge oder ein gültiger numerischer Ausdruck.
CByte  Byte  0 bis 255.
CCur Currency  -922.337.203.685.477,5808 bis 922.337.203.685.477,5807.
CDate Date  Ein beliebiger gültiger Datumsausdruck.
CDbl Double -1,79769313486232E308 bis -4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte.
CDec Decimal +/-79.228.162.514.264.337.593.543.950.335 für skalierte Ganzzahlen, d.h. Zahlen ohne Dezimalstellen. Für Zahlen mit 28 Dezimalstellen gilt der Bereich +/-7,9228162514264337593543950335. Die kleinste mögliche Zahl ungleich Null ist 0,0000000000000000000000000001
CInt Integer -32.768 bis 32.767; Nachkommastellen werden gerundet.
CLng Long -2.147.483.648 bis 2.147.483.647; Nachkommastellen werden gerundet.
CSng Single -3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte.
Cvar Variant Numerische Werte im Bereich des Typs Double. Nichtnumerische Werte im Bereich des Typs String.
CStr String Rückgabe für CStr hängt vom Argument ab.


Datumsfunktionen

sind teilweise intuitiv nutzbar, so liefert "Date" das Datum, "Time" die Uhrzeit, Datumsdifferenzen berechnet man mit "DateDiff", Summen mit "DateAdd", "DateValue" wandelt einen Zahleneingabe in ein Datum um etc. In der normalen VBA-Hilfe gibt es aber leider keine Gesamtübersicht. Viele Operationen werden über Formatierungsanweisungen geregelt. Der Aufruf erfogt in der Fom:
 
datum_zeit_string = Format$(datumswert,"formatkonstante")

Als Datumswert kommen berechnete Werte oder aus der Systemzeit abgeleitet in Frage.
Dazu bietet die Tabelle die für Zeit- und Datumsangaben wichtigen Formatierungskonstanten. Über diese Angaben hinaus könne benutzerdefinierte Formatieranweisungen auch weitere Zeit- und Datumsformate erzeugen.
 

Formatkonstante Anzeige
General Date Zeigt ein Datum und/oder eine Zeit an. Bei reellen Zahlen werden Datum und Uhrzeit angezeigt (zum Beispiel 4.3.93 05:34). Werden keine Nachkommastellen angegeben, so wird nur ein Datum (zum Beispiel 4.3.93) angezeigt. Enthält der Wert ausschließlich Nachkommastellen, so wird nur eine Uhrzeit ausgegeben (zum Beispiel 05:34). Die Anzeige von Datum und Zeit wird durch die Systemeinstellungen festgelegt.
Long Date Zeigt ein Datum im langen Datumsformat (mit Wochentagsangabe) entsprechend den Systemeinstellungen an.
Long Time Zeigt eine Zeit entsprechend der Einstellung für das lange Zeitformat an, einschließlich Stunden, Minuten und Sekunden ( 12:33:11 )
Medium Date Zeigt ein Datum im mittleren Datumsformat an, das von der Sprachversion der Host-Anwendung bestimmt wird.
Medium Time Zeigt eine Zeit im 12-Stunden-Format mit Stunden, Minuten und einer AM/PM-Kennung an (12:45 am )
Short Date  Zeigt ein Datum im kurzen Datumsformat entsprechend den Systemeinstellungen an ( 22.03.99 ).
Short Time Zeigt eine Zeit im 24-Stunden-Format an ( 18:45 )


Eine Übersicht der ermittelten Datums- und Zeitfunktionen soll helfen, im Verdachtsfall mit Hilfe der Hilfe die richtige einzusetzen.
 

Funktionsname Wirkung
Date  Gibt einen Wert vom Typ Variant (Date) zurück, der das aktuelle Systemdatum enthält.
DatAdd Gibt einen Wert vom Typ Variant (Date) zurück, der ein Datum enthält, zu dem ein bestimmtes Zeitintervall addiert wurde.
DateDiff Gibt einen Wert vom Typ Variant (Long) zurück, der die Anzahl der Zeitintervalle zwischen zwei bestimmten Terminen angibt.
DatePart Gibt einen Wert vom Typ Variant (Integer) zurück, der einen bestimmten Teil eines angegebenen Datums enthält.
DateSerial Gibt einen Wert vom Typ Variant (Date) zurück, der die angegebene Jahres-, Monats- und Tageszahl enthält.
Day Gibt einen Wert vom Typ Variant (Integer) zurück, der den Tag des Monats als ganze Zahl im Bereich von 1 bis 31 angibt.
DateValue Gibt einen Wert vom Typ Variant (Date) zurück.
Hour Gibt einen Wert vom Typ Variant (Integer) zurück, der die Stunde des Tages als ganze Zahl im Bereich von 0 bis 23 angibt.
Minute Gibt einen Wert vom Typ Variant (Integer) zurück, der die Minute in der Stunde als ganze Zahl im Bereich von 0 bis 59 angibt.
Month Gibt einen Wert vom Typ Variant (Integer) zurück, der den Monat im Jahr als ganze Zahl im Bereich von 1 bis 12 angibt.
Now Gibt einen Wert vom Typ Variant (Date) zurück, der das aktuelle Datum und die aktuelle Zeit aus den Einstellungen für das Systemdatum und die Systemzeit auf Ihrem Computer angibt.
Second Gibt einen Wert vom Typ Variant (Integer) zurück, der die Sekunden in der Minute als ganze Zahl im Bereich von 0 bis 59 angibt.
Time Gibt einen Wert vom Typ Variant (Date) zurück, der die aktuelle Systemzeit angibt.
Timer Gibt einen Wert vom Typ Single zurück, der die Anzahl der seit Mitternacht vergangenen Sekunden angibt.
TimeSerial Gibt einen Wert vom Typ Variant (Date) zurück, der die Uhrzeit für eine bestimmte Stunde, Minute und Sekunde enthält.
TimeValue Gibt einen Wert vom Typ Variant (Date) zurück, der die Uhrzeit enthält.
Weekday Gibt einen Wert vom Typ Variant (Integer) zurück, der den Wochentag als ganze Zahl angibt.
Year Gibt einen Wert vom Typ Variant (Integer) zurück, der das Jahr als ganze Zahl angibt.

Zur Anwendung von Datumsfunktionen vergleichen Sie bitte das Beispielprogramm.


Sonstige Funktionen

VBA bietet weitere Funktionsgruppen, die z. T. sehr mächtig, aber auch kompliziert im Aufruf sind. Einen Überblick hole man sich in der VBA-Hilfe. Wer Programmcode aus anderen Programmiersprachen übernehmen will, suche in der Hilfe nach Funktionsbezeichnungen. Es sind fast alle Befehle älterer Basic-Versionen und aus Pascal vorhanden und nicht einmal in Büchern vollständig dokumentiert. Da immer neue Versionen von VBA auf den Markt kommen, gewöhne man sich an, die jeweils mitgelieferte Hilfe zu nutzen.