Funktionsübersicht

Mathematische Funktionen | Zeichenkettenfunktionen | Finanzmathematische Funktionen
Typ-Umwandlungsfunktionen | Datums- und Zeitfunktionen | Sonstige Funktionen

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:

AbsAbsolutwert
AtnArcustangens
CosKosinus
ExpPotenz zur Basis e
FixGanzzahl, ohne Rundung
Intgrößte Ganzzahl <= Argument
Lognatürlicher Logarithmus
RandomizeInitiiert Zufallsgenerator
RndZufallszahl, 0 <= x < 1
SgnVorzeichenwert
SinSinus
SqrQuadratwurzel
TanTangens

Mathematische Funktionen, die in der Liste nicht enthalten sind, können definiert werden. Eine Tabelle dazu befindet sich in der VBA-Hilfe. Da die nicht immer zugänglich ist, folgt sie hier:

SekansSekans(X) = 1 / Cos(X)
KosekansKosekans(X) = 1 / Sin(X)
KotangensKotangens(X) = 1 / Tan(X)
ArkussinusArkussinus(X) = Atn(X / Sqr(-X * X + 1))
ArkuskosinusArkuskosinus(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
ArkussekansArkussekans(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) – 1) * (2 * Atn(1))
ArkuskosekansArkuskosekans(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
ArkuskotangensArkuskotangens(X) = Atn(X) + 2 * Atn(1)
Hyperb. SinusHSin(X) = (Exp(X) - Exp(-X)) / 2
Hyperb. KosinusHCos(X) = (Exp(X) + Exp(-X)) / 2
Hyperb. TangensHTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
Hyperb. SekansHSekans(X) = 2 / (Exp(X) + Exp(-X))
Hyperb. KosekansHKosekans(X) = 2 / (Exp(X) - Exp(-X))
Hyperb. KotangensHKotangens(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
Hyperb. ArkussinusHArkussinus(X) = Log(X + Sqr(X * X + 1))
Hyperb. ArkuskosinusHArkuskosinus(X) = Log(X + Sqr(X * X - 1))
Hyperb. ArkustangensHArkustangens(X) = Log((1 + X) / (1 - X)) / 2
Hyperb. ArkussekansHArkussekans(X) = Log((Sqr(-X * X + 1) + 1) / X)
Hyperb. ArkuskosekansHArkuskosekans(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Hyperb. ArkuskotangensHArkuskotangens(X) = Log((X + 1) / (X - 1)) / 2
Logarithmus zur Basis NLogN(X) = Log(X) / Log(N)

Diese und andere Funktionen können einfach 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
zum Anfang

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"

FunktionsnameAufrufFunktion
Asc
AscB
AscW
num = Asc(string)
num = AscB(bytefolge)
num = AscW(unicodefolge)
Gibt den Zeichen-Code des ersten Buchstabens in der Zeichenfolge als Integer zurück.
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 durch den Zeichen-Code beschrieben wird.
Format
Format$
text = Format(ausdruck,format[,...])
text = Format$(ausdruck,format[,...])
Liefert den komplett formatierten Ausdruck als Variant (String).
InStr
InStrB
pos = InStr(start,string1,string2,comp)
pos = InStrB(start,string1,string2,comp)
pos bedeutet einen Wert vom Typ Variant (Long), der die Position des ersten Auftretens der Zeichenfolge string2 in der Zeichenfolge string1 enthält. Die Konstante comp beschreibt die Art des Textvergleiches und kann die Werte 0 oder 1 oder 2 erhalten, (die entsprechenden vb-Konstanten heißen vbBinaryCompare, vbTextCompare, vbDataBaseCompare und deuten an, wie gesucht wird.)
LCase
LCase$
kleinstring = LCase(string)
kleinstring = LCase$(string)
Alle Buchstaben werden in Kleinbuchstaben umgewandelt.
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 länge 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.
LSetLSet 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.
LTrimstring = LTrim(zeichenfolge)Schneidet die führenden Leerzeichen weg.
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.
RSetRSet stringvariable = zeichenfolgeAnweisung. Richtet eine Zeichenfolge innerhalb eines Strings rechts aus; entfernt also nachfolgende Leerzeichen.
RTrimstring = RTrim(zeichenfolge)Schneidet nachgestellte Leerzeichen ab.
Spacestring = Space(zahl)Erzeugt einen String mit zahl Leerzeichen
StrComperg = StrComp(string1,string2,VerglKonstante)Vergleicht zwei Strings, Art des Vergleichs wird durch die VerglKonstante festgelegt; mögliche Einstellungen sind vbBinaryCompare, vbTextCompare
Stringstring = String(zahl,zeichen)Erzeugt eine Zeichenfolge vom Typ Variant (String), die zahl mal das zeichen enthält.
Trimstring = Trim(zeichenfolge)Schneidet führende und nachgestellte Leerzeichen weg.
UCaseGROSS-STRING = UCase(gross-string)Wandelt alle Zeichen eines Strings in Großbuchstaben um
zum Anfang

Finanzmathematische Funktionen

Visual Basic ist besonders auch für Händler und Krämer (das nennt man heute "Geldadel") gedacht, deshalb gibt es eine 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!
 

FunktionsnameGrobe Funktionsbeschreibung
DDBAbschreibung eines Vermögenswertes über einen bestimmten Zeitraum mit Hilfe der geometrisch degressiven Abschreibungsmethode oder einer ausgewählten Methode
FVZukünftiger Wert einer Annuität bei regelmäßigen, konstanten Zahlungsausgängen und einem konstanten Zinssatz
IPmtZinszahlung für einen bestimmten Zeitraum einer Annuität bei regelmäßigen, konstanten Zahlungen und einem konstanten Zinssatz 
IRRInterner Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen)
MIRRModifizierter interner Ertragssatz für eine Folge regelmäßiger Cash Flows (Aus- und Einzahlungen);
NPerAnzahl der Zeiträume für eine Annuität bei regelmäßigen, konstanten Zahlungen und einem konstanten Zinssatz
NPVNetto-Barwert einer Investition bei regelmäßigen Cash Flows (Aus- und Einzahlungen) und einem Diskontsatz
PmtAuszahlung für eine Annuität bei regelmäßigen konstanten Zahlungsausgängen und konstantem Zinssatz
PPmtKapitalanteil einer Auszahlung für einen bestimmten Zeitraum einer Annuität bei regelmäßigen konstanten Auszahlungen und einem konstanten Zinssatz
PVBarwert einer Annuität bei zukünftig regelmäßig und konstant zu leistenden Zahlungsausgängen und einem konstanten Zinssatz
RateZinssatz einer Annuität pro Zeitraum
SLNArithmetische Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum
SYDJahresabschreibung eines Vermögenswertes über einen bestimmten Zeitraum
zum Anfang

Typ-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:
 

FunktionRückgabetypBereich des Arguments
CBoolBooleanEine gültige Zeichenfolge oder ein gültiger numerischer Ausdruck.
CByteByte0 bis 255.
CCurCurrency-922.337.203.685.477,5808 bis 922.337.203.685.477,5807.
CDateDateEin beliebiger gültiger Datumsausdruck.
CDblDouble-1,79769313486232E308 bis -4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte.
CDecDecimal+/-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
CIntInteger-32.768 bis 32.767; Nachkommastellen werden gerundet.
CLngLong-2.147.483.648 bis 2.147.483.647; Nachkommastellen werden gerundet.
CSngSingle-3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte.
CvarVariantNumerische Werte im Bereich des Typs Double. Nichtnumerische Werte im Bereich des Typs String.
CStrStringRückgabe für CStr hängt vom Argument ab.
zum Anfang

Datums- und Zeitfunktionen

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.

FormatkonstanteAnzeige
General DateZeigt 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 DateZeigt ein Datum im langen Datumsformat (mit Wochentagsangabe) entsprechend den Systemeinstellungen an.
Long TimeZeigt eine Zeit entsprechend der Einstellung für das lange Zeitformat an, einschließlich Stunden, Minuten und Sekunden ( 12:33:11 )
Medium DateZeigt ein Datum im mittleren Datumsformat an, das von der Sprachversion der Host-Anwendung bestimmt wird.
Medium TimeZeigt 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 TimeZeigt 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.
 

FunktionsnameAufrufWirkung
DateDate = datumswert Gibt einen Wert vom Typ Variant (Date) zurück, der das aktuelle Systemdatum enthält oder setzt das Systemdatum.
DateAdddatum = DateAdd( kenn, zahl, datum)Gibt einen Wert vom Typ Variant (Date) zurück, der ein Datum enthält, zu dem ein bestimmtes Zeitintervall zahl mal addiert wurde. Die Art des Intervalls wird durch kenn festgelegt. Zulässige Werte für kenn siehe unter DatePart
DateDiffwert = DateDiff(kenn, datum1, datum2[, erstwochtag, erstwochedesjahres])Gibt einen Wert vom Typ Variant (Long) zurück, der das Zeitintervall zwischen zwei bestimmten Terminen angibt. Dabei bestimmtkenndie Einheit. Die möglichen Werte fürkennsiehe unter DatePart
DatePartwert = DatePart(kenn, datum[, erstwochtag, erstwochedesjahres])Gibt einen Wert vom Typ Variant (Integer) zurück, der eine unter kenn geforderte Angabe, Monatsnummer, Wochennummer, etc. liefert.
kenn kann sein:
yyyyJahr
qQuartal
mMonat
wwWoche
yTag des Jahres
dTag
wWochentag

Die Eingabe der Kennung erfolgt mit Anführungsstrichen.
DateSerialintDatum = DateSerial(jahr, monat, tag)Gibt einen Wert vom Typ Variant (Date) zurück, der die angegebene Jahres-, Monats- und Tageszahl enthält.
Daytag = Day(datum)Gibt einen Wert vom Typ Variant (Integer) zurück, der den Tag des Monats als ganze Zahl im Bereich von 1 bis 31 angibt. datum muß vom Typ Date (interner Datumswert) sein.
DateValuedatum = DateValue(datumsangabe)Gibt einen amtlichen Datumstyp (Variant) zurück, die datumsangabe kann stark variieren
Hourstunde = Hour(datum)Gibt einen Wert vom Typ Variant (Integer) zurück, der die Stunde des Tages als ganze Zahl im Bereich von 0 bis 23 angibt. datum muß vom Typ Date (interner Datumswert) sein.
Minutemin = Minute(datum)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. datum muß vom Typ Date (interner Datumswert) sein.
Monthmon = Month(datum)Gibt einen Wert vom Typ Variant (Integer) zurück, der den Monat im Jahr als ganze Zahl im Bereich von 1 bis 12 angibt. datum muß vom Typ Date (interner Datumswert) sein.
Nowdatumzeitstring = NowGibt 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.
Secondsek = Second(datum)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. datum muß vom Typ Date (interner Datumswert) sein.
Timezeitkonst = Time
Time = neuzeit
Gibt einen Wert vom Typ Variant (Date) zurück, der die aktuelle Systemzeit angibt bzw. es kann die Systemzeit gesetzt werden.
Timerwert = TimerGibt einen Wert vom Typ Single zurück, der die Anzahl der seit Mitternacht vergangenen Sekunden angibt.
TimeSerialzeit = TimeSerial(stunden, minuten, sekunden)Gibt einen Wert vom Typ Variant (Date) zurück, der die Uhrzeit für eine bestimmte Stunde, Minute und Sekunde im internen Format enthält.
TimeValuetime = TimeValue(zeitangabe)Gibt einen amtlichen Zeitwert vom Typ Variant (Date) zurück, der die Uhrzeit gemäß beliebiger zeitangabe enthält.
Weekdaywoche = Weekday(datum[, firstdayofweek])Gibt einen Wert vom Typ Variant (Integer) zurück, der den Wochentag als ganze Zahl angibt. datum muß ein interner Datumswert (Typ Date) sein
Yearjahr = Year(datum)Gibt einen Wert vom Typ Variant (Integer) zurück, der das Jahr als ganze Zahl angibt. datum muß ein interner Datumswert (Typ Date) sein

Zur Anwendung von Datumsfunktionen vergleichen Sie bitte das Beispielprogramm.

zum Anfang

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.

zum Anfang

© R. Hirte * 2000