VBA Syntax und Sprachelemente
Regeln und Syntax
- Sämtliche Programmierung findet in Prozeduren statt, welche sich in Modulen befinden müssen.
- Funktionen und Eigenschaften sind spezielle Prozedur-Typen.
- Klassen und UserFormen sind spezielle Formen eines Moduls.
- Außerhalb von Prozeduren ist keine Programmierung möglich. Hier können lediglich Variablen, Konstanten, benutzerdefinierte Typen und Enumeratoren deklariert werden.
- Nur solche Prozeduren können direkt vom VBA-Editor gestartet werden, die keine Übergabeparameter haben (die Klammer hinter dem Prozedurnamen ist leer).
- VBA wird zeilenweise ausgeführt.
- Befehle werden von rechts nach links ausgeführt: Der Name der Anwendung muss ermittelt werden, bevor er in der Messagebox angezeigt werden kann. MsgBox Application.Name
- Werte werden von rechts nach links übergeben. Der Zuweisungsoperator ist '='.
intVariable = 4
- Kommentare
- Kommentare sind Anmerkungen, deaktivierte Befehle oder inzwischen überflüssiger Code, der zwar in der Programmierung enthalten, aber nicht ausgeführt werden soll.
- Kommentare werden mit einem einfachen Anführungszeichen (Hochkomma) angeführt und bis zum Zeilenende weitergeführt.
- Kommentare können nicht unterbrochen werden!
- Wenn ein Kommentar über mehrere Zeilen gehen soll, muss in jeder Zeile ein erneutes Hochkomma vorangestellt werden.
- Klammersetzung: Siehe Klammersetzung
Sprachelemente
Die hier aufgeführten Sprachelemente enthalten die eingebauten Befehle und die Schlüsselwörter, die als Grundlage von VBA dienen. Zusätzlich bietet jede VBA-Anwendung (Excel, Word, PowerPoint etc.) ihr komplettes Objektmodell an, mit dem Sie auf einzelne Elemente einer Arbeitsmappe, eines Dokuments oder einer Präsentation zugreifen oder Befehle in der Anwendung ausführen können.
Eingebaute Befehle
Befehl | Bedeutung | Beispiel | Siehe auch | ||||||
---|---|---|---|---|---|---|---|---|---|
|
Gibt den absoluten Wert einer Zahl zurück, bei negativen Zahlen also den positiven Wert. |
Debug.Print Abs(3.4) ' 3,4 Debug.Print Abs(-3.4) ' Ebenfalls 3,4 |
|||||||
|
Bringt die Anwendung mit dem angegebenen Titel in den Vordergrund. Der Titel muss hierfür bekannt sein. |
' Funktioniert selbstverständlich nur, wenn in Excel eine 'Mappe1' geöffnet ist! AppActivate "Mappe1 - Excel" |
|||||||
|
Die Array-Funktion erzeugt ein Array aus einer Anzahl von Parametern. Der Rückgabewert ist dabei immer ein Variant (der dann ein Array enthält). |
Dim varWeekDays() As Variant varWeekDays = Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So") Dim varFontSizes As Variant varFontSizes = Array(8, 9, 10, 12, 14, 18, 20, 24) Alternative für Zeichenketten: Dim strWeekDays() As String strWeekDays = Split("Mo,Di,Mi,Do,Fr,Sa,So", ",") |
Split | ||||||
|
Ermittelt die Position des angegebenen Buchstaben im Zeichensatz. Wenn mehr als ein Zeichen übergeben wird, gilt ausschließlich das erste Zeichen. |
Debug.Print Asc("~") ' 126 |
Chr() | ||||||
|
Arkustangens-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) | Winkelfunktionen | |||||||
|
Gibt einen kurzen Warnton aus.
Sämtliche Einstellungen (Ton, Lautstärke etc.) werden vom Betriebssystem vorgegeben (bei den Sound-Einstellungen der Eintrag 'Hinweis'). Wenn beim 'Soundschema' die Option 'keine Sounds' aktiv ist, hat 'Beep' ebenfalls keine Auswirkung. Anmerkung: Beim Anzeigen eines Meldungsfensters (MsgBox) wird der Warnton automatisch ausgegeben. |
Beep |
|||||||
|
Kann vor dem Aufruf von Prozeduren angegeben werden, wird jedoch nicht empfohlen. Wenn Call verwendet wird, müssen Parameter in Klammern angegeben werden. Bitte beachten: Beim Aufruf von Funktionen wird der Rückgabewert verworfen! |
Call ProcedureName(3, 5) |
|||||||
|
Erlaubt den Aufruf einer Methode mithilfe von Klartext.
Als Parameter werden das entsprechende Objekt, die Methode (bzw. der Name der Methode) und eventuelle Parameter erwartet. Wie Sie am Beispiel erkennen können, muss das Objekt direkt angegeben werden, wodurch die sinnvollen Einsatzzwecke dieser Funktion stark limitiert sind. Anmerkung: Denkbare Szenarien, in welchen diese Funktion sinnvoll eingesetzt werden könnte, wären solche, in denen die aufgerufene Prozedur als Zeichenkette übergeben würde. Ich muss allerding gestehen, dass mir hierfür kein plausibles Beispiel einfällt ... |
CallByName ActiveDocument, "Close", VbMethod entspricht ActiveDocument.Close |
|||||||
|
Verwandelt einen Wert in ein Datum. Wenn die Variable, die den Wert entgegennimmt, den Datentyp 'Date' hat, wird dies von VBA automatisch vorgenommen. |
Dim dteDate As Date dteDate = CDate("2015-12-09") dteDate = "2015-12-09" |
Date, IsDate | ||||||
|
Ändert das Standardverzeichnis auf den angegebenen Pfad (siehe CurDir). Scheint spätestens seit Windows 8 bzw. Office 2007 keine Auswirkung zu haben, weil Standardverzeichnisse durch Datei-Bibliotheken ersetzt worden sind. | ChDrive, CurDrive | |||||||
|
Ändert das Standardlaufwerk auf das angegebene Laufwerk. Scheint spätestens seit Windows 8 bzw. Office 2007 keine Auswirkung zu haben, weil Standardverzeichnisse durch Datei-Bibliotheken ersetzt worden sind. | ChDir | |||||||
|
Gibt ein bestimmtes Element aus einer beliebig langen Liste von Parametern zurück. Der erste Parameter bestimmt den Index des Elementes. Wenn der Index zu groß oder zu klein (< 1) ist, wird 'Null' zurückgegeben.
In Access kann 'Choose' verwendet werden, um den gewählten Eintrag einer Optionsgruppe zu ermitteln. |
Debug.Print Choose(2, "Eins", "Zwei", "Drei") ' 'Zwei' |
|||||||
|
Gibt das Zeichen an der angegebenen Position aus dem Zeichensatz zurück. Wird insbesondere dann verwendet, wenn ein Zeichen verwendet werden soll, das innerhalb der Programmierung problematisch ist, auf unserer Tastatur nicht zur Verfügung steht oder in VBA nicht eingegeben werden kann. Beispiele: Unlaute, Accents, Anführungszeichen, 'Festes Leerzeichen' (Index 160). |
Debug.Print Chr(34) ' Gibt ein Anführungszeichen aus |
Asc | ||||||
|
Schließt eine zum Einlesen geöffnete Datei und beendet damit den Eingabe- bzw. Ausgabestrom. |
Open "c:\Temp\Hallo.txt" For Output As #1 Print #1, "Huhu!" Close #1 |
Open, Arbeiten mit Dateien | ||||||
|
Ein Relikt aus den VisualBasic-Zeiten: Hiermit könnte man die Parameter, mit denen ein Programm aufgerufen wurde, abfragen. Funktioniert bei VBA nicht! | ||||||||
|
Kosinus-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) | Winkelfunktionen | |||||||
|
Wird verwendet, um eine Verbindung zu einem anderen (Office-)Programm herzustellen. Das Programm wird hierzu, wenn benötigt, gestartet. |
Set pptApp = CreateObject("PowerPoint.Application") |
GetObject, Fernsteuerung | ||||||
|
Liest das aktuelle Standardverzeichnis aus, welches mit ChDir geändert werden kann. Verweist standardmäßig auf das Dokumenten-Verzeichnis von Office. Scheint spätestens seit Windows 8 bzw. Office 2007 keine Auswirkung zu haben, weil Standardverzeichnisse durch Datei-Bibliotheken ersetzt worden sind. | ChDir | |||||||
|
Stellt vor die übergebene Zahl das Wort 'Fehler' in der verwendeten Office-Sprache. Wichtig: Der Fehlercode wird als Variant zurückgeliefert und kann nicht in eine Zeichenkette umgewandelt werden! |
Debug.Print CVErr(12) ' Fehler 12 |
Eigene Fehler erzeugen | ||||||
|
Gibt das aktuelle Datum zurück. |
Debug.Print Date ' 23.7.2015 |
Datum und Uhrzeit | ||||||
|
Berechnet das Ergebnis einer Addition mit Datums- bzw. Zeitwerten. Negative Werte werden abgezogen. Siehe auch DateDiff. |
Debug.Print DateAdd("h", 3, "18:04:56") ' 21:04:56 Debug.Print DateAdd("h", -3, "18:04:56") ' 15:04:56 ' Folgendes erzeugt einen Übertrag auf nächsten Tag ' (Bedenke: Nullter Tag ist der 30.12.1899!): Debug.Print DateAdd("h", 9, "18:04:56") ' 31.12.1899 03:04:56 |
Rechnen mit Datumswerten | ||||||
|
Berechnet den Unterschied zwischen zwei Datums- bzw. Zeitangaben. |
Debug.Print DateDiff("d", "2016-02-25", "2016-03-06") ' 10 Tage |
Rechnen mit Datumswerten | ||||||
|
Gibt einen Anteil einer Datums- bzw. Zeitangabe zurück. |
Debug.Print DatePart("y", "2016-02-16") ' 47. Tag des Jahres Debug.Print DatePart("ww", Date, , vbFirstFourDays) ' Aktuelle Kalenderwoche |
Rechnen mit Datumswerten | ||||||
|
Berechnet das Datum anhand der Werte für Jahr, Monat und Tag. |
Debug.Print DateSerial(2016, 2, 12) ' 12.02.2016 |
Rechnen mit Datumswerten | ||||||
|
Liest aus einer als Text übergebenen Datumseingabe das enthaltene Datum. Wichtig: Diese Funktion ist sehr stark von der Spracheinstellung in Ihrem System abhängig! |
Debug.Print DateValue("15. Februar 2016") ' 15.02.2016 |
Rechnen mit Datumswerten | ||||||
|
Ermittelt den Tag des Monats (1-31), der in einer Datumsangabe steckt. |
Debug.Print Day(Date) ' Gibt den aktuellen Tag zurück |
Rechnen mit Datumswerten | ||||||
|
Gibt die Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum mit Hilfe der geometrisch-degressiven Abschreibungsmethode oder einer anderen angegebenen Methode zurück. | ||||||||
|
Hält die Ausführung des Programms unter bestimmten Bedingungen an (siehe Stop) und gibt einen Warnton ('Beep') aus. Dies ist zum Beispiel dann hilfreich, wenn Sie bei der Fehlersuche in einer bestimmten Situation anhalten und die nächsten Befehle dann schrittweise beobachten möchten. Bitte beachten: Bitte denken Sie daran, die 'Debug.Assert'-Anweisungen nach dem Testen wieder zu entfernen, damit der Programmlauf beim Anwender nicht auch an dieser Stelle unterbrochen wird! |
Dim lngIndex As Long For lngIndex = 1 To 3 Debug.Assert lngIndex <> 3 ' Hält an, wenn der Index den Wert 3 hat Next lngIndex |
Stop | ||||||
|
Gibt den nachfolgenden Text im Direktbereich des VBA-Editors aus. |
Debug.Print ActiveDocument.Name ' Dokument1.docx ' Wenn mehrere Zeichenketten durch Komma getrennt angegeben werden, werden diese tabellarisch im Direktbereich ausgegeben: Debug.Print "Esel", "Hund", "Katze", "Hahn" ' Esel Hund Katze Hahn |
|||||||
|
Löscht eine Einstellung in der Registry. Kann ausschließlich auf den Zweig 'HKEY_CURRENT_USER\Software\VB and VBA Program Settings' zugreifen. |
DeleteSetting "MyApplication", "Section", "Setting" |
Eigene Einstellungen: Registry | ||||||
|
Wird verwendet, um Dateien zu finden. |
If Dir("c:\temp\Test.docx") = "" Then MsgBox "Die Testdatei kann leider nicht gefunden werden!" End If |
Arbeiten mit Dateien | ||||||
|
Wird verwendet, um den aktuellen Programmlauf zu unterbrechen und anderen Prozessen den Vortritt zu lassen.
'DoEvents' wird überwiegend dann eingesetzt, wenn ein lang andauernder Prozess unterbrochen werden können soll: Wenn Sie zum Beispiel mithilfe einer Schleife sehr viele Daten untersuchen, muss im Regelfall der Anwender warten, bis die Schleife komplett durchlaufen wurde. Wenn er diesen Vorgang aus einem Dialog heraus gestartet hat und der Dialog noch angezeigt wird, würde das Betätigen der ESC-Taste erst dann vom System berücksichtigt werden, wenn der aktuelle Arbeitsschritt komplett abgeschlossen wurde, also aus Sicht des Anwenders zu spät. Mit 'DoEvents' können Sie innerhalb dieser Schleife bestimmen, dass bei jedem Durchlauf der Schleife einmal die Möglichkeit gegeben wird, andere Prozesse zuzulassen, wie zum Beispiel die Betätigung der ESC-Taste. Bitte beachten:' Der Anwender wird eine einzelne Unterbrechung durch 'DoEvents' in der Regel nicht wahrnehmen (es kommt nicht zu einem Anhalten wie bei 'Stop' bzw. 'Debug.Assert'). Die Verwendung von 'DoEvents' in einer Schleife kann die Dauer zur Ausführung jedoch deutlich verlängern. |
Für dieses Beispiel benötigen Sie eine UserForm mit einer Befehlsschaltfläche 'cmbCancel'.
Führen Sie den Dialog direkt aus und klicken Sie in den Dialog, um die Schleife zu starten. Drücken Sie dann die 'ESC'-Taste oder den Knopf auf dem Dialog, um die Schleife zu unterbrechen. Wenn Sie die Zeile 'DoEvents' auskommentieren, wird dies nicht gelingen ... Public CancelWasPressed As Boolean Private Sub cmbCancel_Click() CancelWasPressed = True End Sub Private Sub UserForm_Activate() cmbCancel.Cancel = True Me.Caption = "Bitte in den Dialog klicken" End Sub Private Sub UserForm_Click() Dim lngIndex As Long For lngIndex = 1 To 100000 Me.Caption = lngIndex DoEvents If CancelWasPressed = True Then Exit For Next lngIndex If CancelWasPressed = False Then MsgBox "Vorgang abgeschlossen." Else MsgBox "Vorgang nach " & lngIndex & " Durchläufen unterbrochen!" End If End Sub |
Ereignisse: DoEvents | ||||||
|
Erlaubt es, Windows Umgebungsvariablen abzurufen. Bitte beachten Sie, dass die Liste vorhandener Variablen Arbeitsplatz-abhängig ist und somit stark variieren kann. |
Debug.Print Environ("USERNAME") ' Anmeldename des Anwenders |
|||||||
|
End of file: Wird verwendet, um zum Beispiel Textdateien zeilenweise auszulesen. |
Dim strLine As String Open "c:\temp\Lines.txt" For Input As #1 Do Until EOF(1) = True Line Input #1, strLine Debug.Print strLine Loop Close #1 |
Arbeiten mit Dateien, Line Input | ||||||
|
Setzt ein Array zurück. Bei statischen Arrays werden alle Elemente auf den Standardwert gesetzt, bei dynamischen Arrays sämtliche Elemente gelöscht. |
Erase strArray |
Array | ||||||
|
Wird zur Fehlerbehandlung ('On Error'), zur Erzeugung von Fehlermeldungen bzw. zur Abfrage von Fehlernummern verwendet: | Fehlerbehandlung:
On Error Goto 0 On Error Resume Next Fehler erzeugen: Error 11 ' Zeigt diesen Dialog an: Fehlermeldung einer Fehlernummer abfragen: MsgBox Error(11) ' Zeigt 'Division durch Null' an |
Fehlerbehandlung | ||||||
|
Liefert das Ergebnis der natürlichen Exponentialfunktion ex (zur Basis der Eulerschen Zahl). | ||||||||
|
Ermittelt bei einer mit 'Open' geöffneten Datei den Modus, in der sie geöffnet wurde |
Open "c:\Temp\Hallo.txt" For Output As #1 Debug.Print FileAttr(1) ' ergibt 2 für 'Output' Close #1 |
Open, Arbeiten mit Dateien | ||||||
|
Kopiert eine Datei an einen anderen Ort. Beide Angaben müssen Pfad und Verzeichnis enthalten. Wenn das Kopieren fehl schlägt (Datei existiert nicht, ist geöffnet, Zielpfad existiert nicht), tritt ein Fehler auf. |
FileCopy "c:\Pfad\Original.txt", "c:\Pfad\Kopie.txt" |
Arbeiten mit Dateien | ||||||
|
Liefert den Zeitpunkt zurück, an der die angegebene Datei zuletzt gespeichert wurde. |
FileDateTime("c:\Pfad\Datei.txt") ' 15.02.2016 13:16:58 |
Arbeiten mit Dateien | ||||||
|
Ermittelt die Dateigröße in Byte. |
lngFileSize = FileLen("c:\Pfad\Datei.txt") ' bspw. 9277 Byte, rund 10 KB |
Arbeiten mit Dateien | ||||||
|
Schneidet wie die 'Int'-Funktion Nachkommastellen ab, sodass nur der Ganzzahlige Teil zurückbleibt. Bei negativen Werten wird die nächst höhere Ganzzahl gewählt, wodurch alle Werte zwischen -0,9999999999 und +0,9999999999 den Wert 0 ergeben ... |
Debug.Print Fix(1) ' 1 Debug.Print Int(1) ' 1 Debug.Print Fix(1.3) ' 1 Debug.Print Int(1.3) ' 1 Debug.Print Fix(1.999999) ' 1 Debug.Print Int(1.999999) ' 1 Debug.Print Fix(0.3) ' 0 Debug.Print Int(0.3) ' 0 Debug.Print Fix(-0.3) ' -0 Debug.Print Int(-0.3) ' -1 Debug.Print Fix(-1.3) ' -1 Debug.Print Int(-1.3) ' -2 |
Int, Arithmetische Operatoren und Rechenfunktionen | ||||||
|
Eine allgemeine Formatierungs-Funktion, um Zahlen, Datumsangaben etc. in ein gewünschtes Muster zu bringen. |
Debug.Print Format(Date, "d. mmmm yyyy") ' 22. März 2016 |
|||||||
|
Formatiert eine Zahl für die Darstellung als Geldbetrag. |
Debug.Print FormatCurrency(23) ' 23,00 € |
|||||||
|
Formatiert ein Datum im generellen oder in einem der zur Verfügung gestellten Formate. |
Debug.Print FormatDateTime(Date, vbLongDate) ' Dienstag, 22. März 2016 |
|||||||
|
Formatiert eine gewünschte Zahl im Standardformat (mit zwei Nachkommastellen) oder mit den im zweiten Parameter angegebenen Nachkommastellen. Verwendet NICHT das mathematische Runden! |
Debug.Print FormatNumber(23.45, 1) ' 23,5 |
Runden | ||||||
|
Formatiert einen Zahlenwert als Prozentzahl. Hierbei wird arithmetisch gerundet! |
Debug.Print FormatPercent(0.12345) ' 12,35% |
Runden | ||||||
|
Sucht die nächste freie Dateinummer für Datei-Operationen. |
Dim lngFile As Long lngFile = FreeFile Open "c:\Temp\Hallo.txt" For Output As #lngFile Print #lngFile, "Huhu!" Close #lngFile |
Arbeiten mit Dateien | ||||||
|
Errechnet den Endwert (Future Value, FV) einer Annuität. | ||||||||
|
Überträgt alle Registry-Einträge der angegebenen Anwendung und dem angegebenen Pfad in ein zweidimensionales Array, welches alle Namen und Werte der Einstellungen enthält. |
Dim strSettings() As String SaveSetting "myApp", "Global", "Version", "1.0.1.3" SaveSetting "myApp", "Global", "DisplayName", "Meine Anwendung" SaveSetting "myApp", "Global", "LastLogin", Now strSettings = GetAllSettings("myApp", "Global") Das Array 'strSettings' enthält anschließend folgende Einträge:
|
Eigene Einstellungen: Registry | ||||||
|
Liest die Attribute der angegeben Datei aus (verborgen, Archiv, Verzeichnis etc.). Die Abfrage nach den Attributen erfolgt mit einem bitweisen Vergleich mit 'And' (siehe Beispiel!). Wenn der Pfad / die Datei nicht existiert, wird ein Fehler angezeigt. |
Dim lngAttribute As Long lngAttribute = GetAttr("c:\temp") If lngAttribute And vbDirectory Then MsgBox "Dies ist ein Verzeichnis" End If |
|||||||
|
Wird verwendet, um eine Verbindung zu einem anderen (Office-)Programm herzustellen. Voraussetzung: Das Programm läuft schon. |
Set wordApp = GetObject(, "Word.Application") |
CreateObject, Fernsteuerung | ||||||
|
Liest eine Einstellung aus der Registry aus. Kann ausschließlich auf den Zweig 'HKEY_CURRENT_USER\Software\VB and VBA Program Settings' zugreifen. |
Debug.Print GetSetting("MyApplication", "Section", "Setting") |
Eigene Einstellungen: Registry | ||||||
|
Gibt den hexadezimalen Wert einer Zahl zurück. |
Debug.Print Hex(123456) ' Ergibt 1E240 |
Arithmetische Operatoren und Rechenfunktionen | ||||||
|
Ermittelt die Stunden, die in einer Datums-/Zeitangabe stecken. |
Debug.Print Hour(Time) ' Gibt die aktuelle Stunde zurück
|
Rechnen_mit_Datumswerten | ||||||
|
Stellt eine Kurzform der 'IfThenElse'-Abfrage dar. |
Debug.Print IIf(Time < CDate("12:00"), "Vormittag", "Nachmittag") |
If-Abfrage mit Else-Zweig | ||||||
|
Gibt den IME-Modus (Input Method Editor) von Windows zurück. Findet nur in fernöstlichen Versionen von Windows Verwendung. | ||||||||
|
Wird im Zusammenhang mit dem Auslesen von Dateien verwendet. | Open, Arbeiten mit Dateien | |||||||
|
Ruft den Standard-Dialog zur Eingabe eines Textes auf. |
Dim strInput As String strInput = InputBox("Bitte etwas eingeben:", "Meine InputBox", "Test") |
Eingebaute Dialoge: InputBox | ||||||
|
Gibt die Position der angegebenen Zeichenkette in einem Text zurück. |
Debug.Print InStr("Ein Text mit Worten", " ") ' 4 |
Zeichenketten, InStrRev | ||||||
|
Gibt die letzte Position der angegebenen Zeichenkette in einem Text zurück. Die Position wird trotzdem von links nach rechts ermittelt. |
Debug.Print InStrRev("Ein Text mit Worten", " ") ' 13 |
Zeichenketten, InStr | ||||||
|
Schneidet wie die 'Fix'-Funktion Nachkommastellen ab, sodass nur der Ganzzahlige Teil zurückbleibt. Bei negativen Werten wird die nächst niedrige Ganzzahl gewählt, was dazu führt, dass negative Werte ebenso wie Positive Werte der nächst niedrigen Ganzzahl zufallen: |
Debug.Print Fix(1) ' 1 Debug.Print Int(1) ' 1 Debug.Print Fix(1.3) ' 1 Debug.Print Int(1.3) ' 1 Debug.Print Fix(1.999999) ' 1 Debug.Print Int(1.999999) ' 1 Debug.Print Fix(0.3) ' 0 Debug.Print Int(0.3) ' 0 Debug.Print Fix(-0.3) ' -0 Debug.Print Int(-0.3) ' -1 Debug.Print Fix(-1.3) ' -1 Debug.Print Int(-1.3) ' -2 |
Fix, Arithmetische Operatoren und Rechenfunktionen | ||||||
|
Stellt fest, ob eine Variable ein Array ist bzw. enthält. Insbesondere bei Variant-Variablen hilfreich, welche ebenfalls Arrays aufnehmen können, ohne dies bei der Deklaration anzugeben. |
Sub TestIsArray() Dim strString As String Dim strArray() As String Dim varUnknown As Variant Debug.Print IsArray(strString) ' Falsch Debug.Print IsArray(strArray) ' Wahr Debug.Print IsArray(varUnknown) ' Falsch varUnknown = strArray ' Array in Variant übernehmen Debug.Print IsArray(varUnknown) ' Wahr End Sub |
|||||||
|
Prüft, ob der übergebene Wert in ein gültiges Datum umgewandelt werden kann. |
If IsDate(strInput) = True Then dteDate = CDate(strInput) |
CDate | ||||||
|
Wird verwendet, um bei einer Variablen vom Typ Variant zu prüfen, ob sie schon verwendet bzw. zurückgesetzt wurde. Siehe auch Empty! |
Dim varValue As Variant If IsEmpty(varValue) = True Then MsgBox "Variable wurde noch nicht verwendet!" End If varValue = "" ' oder 0 If IsEmpty(varValue) = False Then MsgBox "Variable wurde schon verwendet!" End If varValue = Empty ' Variant zurücksetzen If IsEmpty(varValue) = True Then MsgBox "Variable wurde noch nicht verwendet!" End If |
|||||||
|
Kann einen mit der CVErr-Funktion erzeugten Fehler feststellen. | Eigene Fehler erzeugen, CVErr | |||||||
|
Kann bei optionalen Parametern, die als Variant deklariert sind, feststellen, ob sie beim Aufruf verwendet wurden. | Arbeiten mit Optionalen Parametern | |||||||
|
Wird verwendet, um festzustellen, ob eine Variable vom Typ Variant den Wert Null hat. Der Wert Null zeigt an, dass die Variable keinen gültigen Wert hat und muss explizit zugewiesen werden. Siehe auch Null. |
Dim varVariant As Variant Debug.Print IsNull(varVariant) ' False varVariant = "" Debug.Print IsNull(varVariant) ' False varVariant = 0 Debug.Print IsNull(varVariant) ' False varVariant = Null Debug.Print IsNull(varVariant) ' True | |
|||||||
|
Stellt fest, ob der übergebene Wert in eine Zahl umgewandelt werden kann. |
Debug.Print IsNumeric("Text") ' Falsch Debug.Print IsNumeric("1,234") ' Wahr |
|||||||
|
Stellt fest, ob eine Variable auf ein Objekt verweist. Bei Objektvariablen ist dies immer wahr, bei Variablen vom Datentyp Variant trifft dies zu, wenn sie auf ein Objekt verweist. Wichtig: 'IsObject' prüft nicht, ob das Objekt instanziiert wurde bzw. ob ein Verweis auf ein existierendes Objekt besteht. Siehe dazu IsEmpty! |
Dim varVariant As Variant Dim objObject As Object Debug.Print IsObject(varVariant) ' False Set varVariant = objObject Debug.Print IsObject(varVariant) ' True Set varVariant = ActiveWorkbook Debug.Print IsObject(varVariant) ' True varVariant = 3 Debug.Print IsObject(varVariant) ' False Debug.Print IsObject(objObject) ' immer True |
|||||||
|
Interest Payment: Wird verwendet, um Zinszahlungen zu berechnen. | ||||||||
|
Internal Rate of Return: Gibt den internen Zinssatz für eine Reihe periodischer Eingange und Zahlungen an. | ||||||||
|
Erzeugt aus den Elementen eines eindimensionalen String-Arrays eine Liste (als Zeichenkette). |
Dim strArray() As String ReDim strArray(2) strArray(0) = "Eins" strArray(1) = "Zwei" strArray(2) = "Drei" Debug.Print Join(strArray, ", ") ' Eins, Zwei, Drei |
Array | ||||||
|
Löscht die angegebene Datei. Wenn diese nicht existiert, tritt ein Fehler auf. |
Kill "c:\Temp\Hallo.txt"
|
Arbeiten mit Dateien | ||||||
|
Wird verwendet, um den Index des ersten Elementes eines Arrays zu finden. Mehr hierzu finden Sie unter Array! |
ReDim strArray(2 To 5) Debug.Print LBound(strArray) ' Ergibt 2 |
Array, UBound | ||||||
|
Wandelt alle Buchstaben eines Textes in Kleinbuchstaben um. |
Debug.Print LCase("test") ' test Debug.Print LCase("Test") ' test Debug.Print LCase("TEST") ' test |
Zeichenketten umwandeln | ||||||
|
Gibt die angegebene Anzahl von Buchstaben aus einem Text zurück. |
Debug.Print Left("Länge", 3) ' Län |
Zeichenketten: Aufteilen und kürzen | ||||||
|
Ermittelt die Anzahl der Zeichen in einem Text. |
Debug.Print Len("Länge") ' 5 |
Zeichenketten: Länge ermitteln | ||||||
|
Liest eine einzelne Zeile aus einer zum Lesen geöffneten Textdatei aus. |
Dim strLine As String Open "c:\temp\Lines.txt" For Input As #1 Do Until EOF(1) = True Line Input #1, strLine Debug.Print strLine Loop Close #1 |
Arbeiten mit Dateien, #EOF | ||||||
|
Lädt eine UserForm in den Speicher, ohne diese auch schon anzuzeigen. Somit kann auf die Funktionalität der UserForm zugegriffen werden, ohne dass die Userform sichtbar ist. Sie kann dann jederzeit mit der 'Show'-Methode sichtbar gemacht werden. Siehe auch Unload. | Siehe UserForms | |||||||
|
Gibt die aktuelle Lese- / Schreibe-Position beim Lesen / Schreiben einer Datei an. | Arbeiten mit Dateien | |||||||
|
Sperrt das Lesen / Schreiben der angegebenen Datei, während sie gerade von diesem Prozess betrachtet bzw. bearbeitet wird. Siehe Unlock. | Arbeiten mit Dateien | |||||||
|
Length of File: Ermittelt die Anzahl von Bytes in einer zum Lesen / Schreiben geöffneten Datei. | Arbeiten mit Dateien | |||||||
|
Errechnet den Logarithmus der übergebenen Zahl. | Beispiel: Eine Funktion zur Errechnung des Logarithmus zu einer beliebigen Basis
Public Function Logarithm(ByVal dblValue As Double, ByVal dblBase As Double) If dblValue < 0 Or dblBase < 0 Then MsgBox "Der Logarithmus kann nur über positive Zahlen bestimmt werden!" Exit Function End If Logarithm = Log(dblValue) / Log(dblBase) End Function Private Sub Test() Debug.Print Logarithm(8, 2) ' Ergebnis: 3 denn 2 ^ 3 = 8 End Sub |
Arithmetische Operatoren und Rechenfunktionen | ||||||
|
Wird verwendet, um einen Text in eine feste Breite zu bringen. Dies ist zum Beispiel für Textdateien interessant, in denen eine feste Feldbreite für die einzelnen Einträge vorgegeben ist. Vorgehensweise: Sie benötigen zwei Textvariablen, eine für den Originaltext und eine für den aufgefüllten Text. Die Variable für den aufgefüllten Text füllen Sie mit der gewünschten Anzahl von Zeichen (es müssen keine Leerzeichen sein!). Mit 'LSet' weisen Sie dann den gewünschten Text dem aufgefüllten Text zu. Der Text wird linksbündig eingelesen und die nicht verwendeten Stellen mit Leerzeichen aufgefüllt, sodass das Ergebnis die vorgegebene Anzahl von Zeichen hat. |
Dim strText As String, strField As String strField = String(10, ".") ' Erstellt ein Feld mit 10 Zeichen strText = "Hallo!" LSet strField = strText Debug.Print strField ' 'Hallo! ' Wichtig: Wenn der gewünschte Text mehr Zeichen enthält als die Feldbreite aufnehemen kann, wird ein Leerstring zurückgegeben: strText = "Hallo und herzlich willkommen!" LSet strField = strText Debug.Print strField ' strField enthält nun ein Leerstring Für diesen Fall sollten Sie vorher prüfen, ob der Text die gewünschte Länge überschreitet! |
RSet, Zeichenketten | ||||||
|
|
Debug.Print "'" & LTrim(" Leerzeichen gefällig? ") & "'" 'Leerzeichen gefällig? ' Debug.Print "'" & RTrim(" Leerzeichen gefällig? ") & "'" ' Leerzeichen gefällig?' Debug.Print "'" & Trim(" Leerzeichen gefällig? ") & "'" 'Leerzeichen gefällig?' |
Zeichenketten | ||||||
|
Wird verwendet, um die Dateiendung für die im Dateisystem gesuchten Dateien zu ermitteln. Betrifft ausschließlich Office für MacIntosh. | ||||||||
|
Führt einen AppleScript aus. Betrifft ausschließlich Office für MacIntosh. | ||||||||
|
Schneidet die angegebenen Zeichen aus einer Zeichenkette aus. Wenn Sie nicht angeben, wieviele Zeichen ausgeschnitten werden sollen (dritter Parameter), wird der Rest des Textes vom Anfangspunkt an zurückgegeben. | Zeichenketten | |||||||
|
Ermittelt die Minuten, die in einer Datums-/Zeitangabe stecken. |
Debug.Print Minute(Time) ' Gibt die aktuelle Minute zurück
|
Rechnen mit Datumswerten | ||||||
|
|||||||||
|
Erstellt ein Unterverzeichnis. Bitte beachten Sie, dass sämtliche übergeordnete Verzeichnisse schon existieren müssen. |
' Funktioniert nur, wenn 'C:\temp' schon existiert! MkDir "c:\temp\Unterverzeichnis" |
RmDir, Arbeiten mit Dateien | ||||||
|
Ermittelt den Rest einer ganzzahligen Division. |
Debug.Print 3 Mod 2 ' 3 : 2 ergibt Rest 1 |
Gemischte Brüche | ||||||
|
Ermittelt den Monat (1-12), der in einer Datumsangabe steckt. |
Debug.Print Month(Date) ' Gibt den aktuellen Monat als Zahl zurück
|
Rechnen mit Datumswerten | ||||||
|
Bestimmt den Namen des angegebenen Monats entsprechend der Systemsprache. |
Debug.Print MonthName(3) ' März |
Rechnen mit Datumswerten | ||||||
|
Zeigt ein Meldungsfenster an.
Automatisch wird zusätzlich ein Warntonausgegeben (siehe Beep) |
MsgBox "Hallo!"
|
Eingebaute Dialoge: MsgBox | ||||||
|
Gibt das aktuelle Datum mit Uhrzeit zurück. |
Debug.Print Now ' 31.03.2016 16:24:31 |
Rechnen mit Datumswerten | ||||||
|
Errechnet die Anzahl von Zeiträumen einer Annuität basierend auf regelmäßigen, festen Zahlungen und einem festen Zinssatz. | ||||||||
|
Errechnet den aktuellen Nettowert einer Investition basierend auf regelmäßiger Zahlungsein- und -ausgängen und dem Abzinsungssatz. | ||||||||
|
Wandelt eine Ganzzahl in das Oktalsystem um. |
Debug.Print Oct(0) ' 0 Debug.Print Oct(1) ' 1 Debug.Print Oct(2) ' 2 Debug.Print Oct(7) ' 7 Debug.Print Oct(8) ' 10 Debug.Print Oct(9) ' 11 |
Arithmetische Operatoren und Rechenfunktionen: Oktalsystem, Oktalsystem auf wikipedia | ||||||
|
Öffnet eine Datei zum Lesen bzw. Schreiben. |
Text in eine Datei schreiben: Open "c:\Temp\Hallo.txt" For Output As #1 Print #1, "Huhu!" Close #1 Erste Zeile Text aus einer Datei auslesen: Dim strText As String Open "c:\Temp\Hallo.txt" For Input As #1 Input #1, strText Close #1 Debug.Print strText |
Arbeiten mit Dateien | ||||||
|
Bestimmt den Bereich, in den eine gesuchte Zahl fällt. Der Bereich muss im positiven Zahlenraum liegen, der Startwert muss kleiner als der Endwert sein. Die gesuchte Zahl kann negativ sein und außerhalb des Zahlenbereiches liegen. Siehe Beispiele zur näheren Erklärung. |
' Wo liegt die 12 im Bereich von 0 bis 100, wenn man den Bereich ' in 10-er Schritten aufteilt? ' Zwischen 10 und 19 Debug.Print Partition(12, 0, 100, 10) ' 10: 19 ' Wo liegt die 12 im Bereich von 0 bis 100, wenn man den Bereich ' in 5-er Schritten aufteilt? ' Zwischen 10 und 14 Debug.Print Partition(12, 0, 100, 5) ' 10: 14 ' Wenn die gesuchte Zahl ausserhalb des Bereiches liegt, ' wird das Ergebnis folgendes ergeben: ' Der gesuchte Wert 120 ist größer als der Endwert 100, ' das Ergebnis liegt also außerhalb des Bereichs über 100 Debug.Print Partition(120, 0, 100, 10) ' 101: ' Der gesuchte Wert 120 ist kleiner als der Anfangswert 200, ' das Ergebnis liegt also unterhalb des Bereichs unter 200 Debug.Print Partition(120, 200, 800, 100) ' :199 ' Der gesuchte Wert -12 liegt unter dem Anfangswert 0, ' das Ergebnis liegt also unterhalb des Bereichs unter 0 Debug.Print Partition(-12, 0, 100, 10) ' : -1 |
|||||||
|
Errechnet den Wert der Zahlung für eine Annuität bei regelmäßigen konstanten Zahlungsbeträgen und einem festen Zinssatz. | ||||||||
|
Errechnet die Tilgungszahlung für einen bestimmten Annuitätszeitraum basierend auf regelmäßigen, festen Zahlungen und einem festen Zinssatz. | ||||||||
|
Schreibt den angegebenen Text in eine Datei. Siehe Beispiel bei Open. | Open, Arbeiten mit Dateien | |||||||
|
Wird verwendet, um Daten direkt aus einer Variablen mit einem benutzerdefinierten Datentyp 'Type' in eine Datei zu schreiben. Bitte beachten: Wenn Sie die Reihenfolge der Unterwerte des benutzerdefinierten Datentyps 'Type' ändern oder Werte entfernen oder hinzufügen, können Sie die gespeicherten Werte in einer Datei nicht mehr auslesen. Satt auf diese Weise Daten zu speichern, sollten Sie sich die Möglichkeiten ansehen, die VBA im Zusammenhang mit XML anbietet! | Arbeiten mit Dateien, Eigene Einstellungen#XML | |||||||
|
Errechnet den aktuellen Wert einer Annuität basierend auf regelmäßigen, festen Zahlungen, die künftig zu tätigen sind und auf einem festen Zinssatz beruhen. | ||||||||
|
QuickBasic-Farbe: Gibt den RGB-Farbwert einer der ursprünglich 16 möglichen Farbwerte zurück. | Farben | |||||||
|
'Randomize' wird im Zusammenhang mit 'Rnd' verwendet, um Zufallszahlen zu erzeugen.
Der 'Randomize'-Befehl soll dafür sorgen, dass der Zufallszahlengenerator vor jedem Aufruf zurückgesetzt wird, damit sich keine Wiederholungen in zufällig ermittelten Zahlenketten ergeben. |
Randomize Debug.Print Int(1 + Rnd() * 50) ' gibt eine Zufallszahl zwischen 1 und 49 zurück |
Rechenfunktionen: Zufallszahlen | ||||||
|
Ermittelt den Zinssatz pro Zeitabschnitt einer Annuität. | ||||||||
|
Wird verwendet, um ein dynamisches Array zu dimensionieren. |
Dim strArray() As String ReDim strArray(11) ' reserviert 12 Speicherplätze für Zeichenketten (von 0 bis 11) |
Dynamische Arrays | ||||||
|
Ersetzt innerhalb einer Zeichenkette einen gesuchten Begriff mit einem neuen Text. |
' Das Ergebnis der folgenden Zeile lautet: In diesem Text wird ersetzt! Debug.Print Replace("In diesem Text wird gesucht!", "gesucht", "ersetzt") |
In Zeichenketten ersetzen | ||||||
|
Schließt alle Dateien, die mit dem 'Open'-Befehl geöffnet worden waren. Wenn sie zum Schreiben geöffnet waren, werden alle anstehenden Änderungen in die Datein geschrieben. Bitte beachten: Verwenden Sie 'Close', um eine einzelne mit 'Open' geöffnete Datei zu speichern und zu schließen. | Open, Close, Arbeiten mit Dateien | |||||||
|
Viele Elemente in den Office-Anwendungen lassen sich färben, wie Texte, Formen, Diagramme etc.. Wenn hierfür eine eigene Farbe verwendet werden soll, muss diese als ganzzahliger Wert angegeben werden, welcher die gewünschte Farbe eindeutig bestimmt. Die 'RGB'-Funktion liefert mithilfe der Bestandteile Rot, Grün und Blau den entsprechenden Farbwert. |
' Färbt den Text der markierten Zelle hellblau ActiveCell.Font.Color = RGB(123, 124, 245) ' Färbt ebenfalls den Text der Zelle im gleichen Blauton ActiveCell.Font.Color = 16088187 |
Farben | ||||||
|
Ermittelt den rechten Ausschnitt einer Zeichenkette mit der angegebenen Anzahl von Zeichen. |
Debug.Print Right("Länge", 3) ' nge (die drei letzten Buchstaben) |
Zeichenketten: Aufteilen und kürzen | ||||||
|
Entfernt das angegebene (Unter-)Verzeichnis. Bitte beachten: Das Verzeichnis muss leer sein, sonst tritt ein Fehler auf. Achtung: Der Anwender wird NICHT automatisch darauf hingewiesen, dass jetzt das Verzeichnis gelöscht wird! |
' Löscht das Unterverzeichnis 'test', sofern dieses leer ist: RmDir "c:\temp\test" |
MkDir, Arbeiten mit Dateien | ||||||
|
Die 'Rnd'-Funktion ermittelt einen Zufallswert zwischen 0 und 0,999999999999, also niemals 1. Deshalb muss sie in eine Berechnung eingebettet werden, wenn ein Zufallswert ausserhalb dieses Bereches gewünscht wird. |
' Gibt eine Zufallszahl zwischen 1 und 49 zurück: Randomize Debug.Print Int(1 + Rnd() * 50) |
Rechenfunktionen: Zufallszahlen | ||||||
|
Rundet eine Zahl auf die angegebene Anzahl von Stellen. Bitte beachten Sie hierzu dringend die Angaben unter Arithmetische Operatoren und Rechenfunktionen: Runden! |
Debug.Print Round(1.5) ' 2 Debug.Print Round(2.5) ' 2 Debug.Print Round(2.50000000000001) ' 3 Debug.Print Round(2.6) ' 3 Debug.Print Round(1.49999999999999) ' 1 Debug.Print Round(2.25, 1) ' 2,2 Debug.Print Round(2.253, 2) ' 2,25 |
Arithmetische Operatoren und Rechenfunktionen: Runden | ||||||
|
Richtet einen Text in einer Zeichenkette mit fester Länge rechts aus und füllt die übrigen Plätze mit Leerzeichen auf. Eine ausführlichere Beschreibung finden Sie unter LSet. |
Dim strText As String, strField As String strField = String(10, ".") ' Erstellt ein Feld mit 10 Zeichen strText = "Hallo!" RSet strField = strText Debug.Print strField ' ' Hallo!' |
LSet, Zeichenketten | ||||||
|
Siehe LTrim-, RTrim- und Trim-Funktion. | Zeichenketten | |||||||
|
Speichert eine Einstellung in der Registry. Kann ausschließlich auf den Zweig 'HKEY_CURRENT_USER\Software\VB and VBA Program Settings' zugreifen. |
SaveSetting "MyApplication", "Section", "Setting", "Value" |
Eigene Einstellungen: Registry | ||||||
|
Ermittelt die Sekunden, die in einer Datums-/Zeitangabe stecken. |
Debug.Print Second(Time) ' Gibt die aktuellen Sekunden zurück |
Rechnen mit Datumswerten | ||||||
|
Ermittelt die aktuelle Lese-/Schreibposition in einer mit 'Open' geöffneten Datei. | Arbeiten mit Dateien | |||||||
|
Sendet Tastenschläge an die aktuelle Anwendung, also eventuell auch an eine 'fremde' bzw. unbeabsichtigt im Vordergrund liegende Anwendung. | ||||||||
|
Ändert die Eigenschaften der angegebenen Datei. | FileAttr, GetAttr, Arbeiten mit Dateien | |||||||
|
Liefert das Vorzeichen einer Zahl zurück: '-1' bei negativen Zahlen, '0' bei der Zahl 0 und '1' bei positiven Zahlen. |
Debug.Print Sgn(-123) ' -1 |
Arithmetische Operatoren und Rechenfunktionen | ||||||
|
Wird verwendet, um ein Programm (eine EXE-Datei) auszuführen. Bei Standardprogrammen (siehe Beispiel) muss kein Pfad angegeben werden.
Der Rückgabewert der Funktion liefert die Vorgangsnummer des Programms zurück. Wenn das Programm nicht gestartet werden konnte, wird der Wert '0' zurückgegeben. |
lngResult = Shell "Explorer ""c:\temp""" ' startet den Datei-Explorer im Verzeichnis 'c:\temp' lngResult = Shell "Explorer ""http://vba-wiki.net""" ' Öffnet die Internetseite 'vba-wiki.net' |
|||||||
|
Sinus-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) | Winkelfunktionen | |||||||
|
Wird zur Zinsberechnung verwendet (straight line deprecation). | ||||||||
|
Erstellt eine Zeichenkette mit der gewünschten Anzahl Leerzeichen. Diese Funktion ist insbesondere für den Aufruf von API-Funktionen, welche feste Zeichenketten erwarten, wichtig. |
Debug.Print "$" & Space(5) & "$" ' $ $ |
|||||||
|
Erstellt aus einer Liste, die sich aus einer Zeichenkette ergibt, ein eindimensionales Array. |
Dim strWeekdays() As String strWeekdays = Split("Mo,Di,Mi,Do,Fr,Sa,So", ",") |
Array | ||||||
|
Berechnet die Quadratwurzel der angegebenen Zahl. |
Debug.Print Sqr(16) ' Ergibt 4 Debug.Print 16 ^ (1 / 2) ' Alternative Schreibweise 'sechzehn hoch einhalb' |
Rechnen mit Zahlen | ||||||
|
Hält die Ausführung des Codes an dieser Stelle an. Wird bei der Fehlersuche eingesetzt, um dann die gewünschte Passage der Programmierung schrittweise betrachten zu können. Das Verhalten der 'Stop'-Anweisung entspricht dem eines Haltepunktes. Bitte beachten: Bitte denken Sie daran, die 'Stop'-Anweisungen nach dem Testen wieder zu entfernen, damit der Programmlauf beim Anwender nicht auch an dieser Stelle unterbrochen wird! |
DoSomething Stop ' Die Ausführung wird hier anhalten DoMore |
Debug.Assert | ||||||
|
Wandelt eine Zahl in eine Zeichenkette um:
|
Debug.Print Str(12.34) ' 12.34 Debug.Print Str(-12.34) ' -12.34 |
CStr, Format | ||||||
|
Führt einen Sortierungsvergeleich von zwei Zeichenketten durch. Dabei werden folgende Ergebnisse zurückgegeben:
|
Debug.Print StrComp("Aachen", "Aal") ' -1 Debug.Print StrComp("Abc", "Abc") ' 0 Debug.Print StrComp("Zander", "Xerxes") ' 1 Bitte beachten: Der Vergleich erfolgt standardmäßig mit Berücksichtigung der Groß- bzw. Kleinschreibung, wenn nicht 'vbTextCompare' als Vergleichsmethode angegeben wird: Debug.Print StrComp("ABC", "ABC") ' 0 Debug.Print StrComp("ABC", "abc") ' -1 Debug.Print StrComp("ABC", "abc", vbTextCompare) ' 0 |
|||||||
|
Konvertiert eine Zeichenkette zum Beispiel in Groß- oder Kleinbuchstaben oder in ein anderes Zeichensystem (Katakana, Hiragana, Unicode, ...) |
Debug.Print StrConv("Alle Wörter fangen nun mit Großbuchstaben an!", vbProperCase) ' Ergebnis: 'Alle Wörter Fangen Nun Mit Großbuchstaben An!' |
|||||||
|
Wiederholt ein einzelnes Zeichen so oft wie angegeben wird. |
Debug.Print String(5, ".") ' ..... ' Oder eine Prozedur, welche einen Verlauf in der Statuszeile anzeigt ' (ausschließlich in Word und Excel möglich!): Public Sub ShowProgress(ByVal dblPartsOfOne As Double) Application.StatusBar = String(dblPartsOfOne * 10, "|") End Sub |
|||||||
|
Kehrt die gesamte Zeichenfolge um. |
Debug.Print StrReverse("Hallo!") ' !ollaH |
|||||||
|
Führt einen Vergleich ähnlich einer 'Select-Case'-Anweisung durch: |
In dieser Beispielfunktion wird mithilfe einer 'Select-Case'-Anweisung das Maskottchen eines Sportvereines ermittelt: Function TeamMascotSelect(ByVal strTeam As String) Select Case strTeam Case "BTSC" TeamMascotSelect = "Minion" Case "MTSC" TeamMascotSelect = "Zebra" Case "HHTSC" TeamMascotSelect = "Käpt'n Blaubär" Case "KTSC" TeamMascotSelect = "Eumele" Case "Essen Rotweiss" TeamMascotSelect = "Mick die Pommes" End Select End Function In der folgenden Beispielfunktion wird ebenfalls das Maskottchen ermittelt, aber diesmal mithilfe der 'Switch'-Funktion. Function TeamMascotSwitch(ByVal strTeam As String) TeamMascotSwitch = Switch(strTeam = "BTSC", "Minion", strTeam = "MTSC", "Zebra", _ strTeam = "HHTSC", "Käpt'n Blaubär", strTeam = "KTSC", "Eumele", _ strTeam = "Essen Rotweiss", "Mick die Pommes") End Function |
Siehe Select Case | ||||||
|
Wird zur Berechnung der arithmetisch-degressive Abschreibung verwendet. | ||||||||
|
|||||||||
|
Tangens-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) | Winkelfunktionen | |||||||
|
Gibt die aktuelle Uhrzeit zurück. | Rechnen_mit_Datumswerten | |||||||
|
Gibt die seit Mitternacht verstrichenen Sekunden zurück. Bei Windows als Dezimalzahl, auf dem MacIntosh als ganze Sekunden. | Rechnen_mit_Datumswerten | |||||||
|
Errechnet eine Zeitangabe aus der angegebenen Stunde, Minute und Sekunde. |
Debug.Print TimeSerial(23, 2, 12) ' 23:02:12 |
Rechnen_mit_Datumswerten | ||||||
|
Liest aus einer Datums- und Zeitangabe die Zeit aus. |
Debug.Print TimeValue("2017-03-09 14:40:23") ' 14:40:23 |
Rechnen_mit_Datumswerten | ||||||
|
Löscht eine oder mehrere Leerzeichen sowohl vom Anfang als auch vom Ende einer Zeichenkette. Siehe LTrim-, RTrim- und Trim-Funktion. |
Debug.Print "'" & Trim(" Text ohne Leerzeichen davor oder danach ") & "'" ' Ergebnis: 'Text ohne Leerzeichen davor oder danach' |
Zeichenketten | ||||||
|
Da Variant-Variablen an keinen Datentyp gebunden sind, können beliebige Daten in ihnen untergebracht werden. Die 'TypeName'-Funktion ermittelt, welchen Unter-Datentyp die Variable angenommen hat. |
Dim varValue As Variant Debug.Print TypeName(varValue) ' Empty, Variant-Variable wurde noch nicht verwendet! varValue = "Hallo!" Debug.Print TypeName(varValue) ' String varValue = 2 Debug.Print TypeName(varValue) ' Integer varValue = 2.1 Debug.Print TypeName(varValue) ' Double Set varValue = ActiveWindow.Selection.ShapeRange(1) Debug.Print TypeName(varValue) ' Shape |
Datentyp 'Variant', VarType | ||||||
|
Ermittelt den Index des letzten Elementes eines Arrays. Mehr hierzu finden Sie unter Array! |
ReDim strArray(2 To 5) Debug.Print UBound(strArray) ' 5 |
Array, LBound | ||||||
|
Wandelt alle Buchstaben eines Textes in Großbuchstaben um, sofern dies möglich ist (siehe letztes Beispiel). |
Debug.Print UCase("test") ' TEST Debug.Print UCase("Test") ' TEST Debug.Print UCase("TEST") ' TEST Debug.Print UCase("Spaß") ' SPAß |
Zeichenketten umwandeln | ||||||
|
Gibt einen mit Load geladenen Dialog (UserForm) wieder frei. | UserForms | |||||||
|
Hebt die Sperre für das Lesen / Schreiben der angegebenen Datei, während sie gerade von diesem Prozess betrachtet bzw. bearbeitet wird, auf. Siehe Lock. | Arbeiten mit Dateien | |||||||
|
Wandelt einen Text in eine (Komma)Zahl um. Bitte beachten Sie die Regeln und den Vergleich mit der CDbl-Funktion in den Beispielen: |
Debug.Print Val("2.345,67") ' 2345 bzw. 2,345 denn Val kennt nur Punkt ' als Dezimalzeichen, Komma ist ' Tausendertrennzeichen! Debug.Print CDbl("2.345,67") ' 2345,67 denn CDbl verwendet System- ' Dezimaltrennzeichen Debug.Print Val("Meinestraße 7") ' 7 Debug.Print CDbl("Meinestraße 7") ' Fehler: Typen unverträglich (CDbl) Debug.Print Val("Meinestraße 3-7") ' 0 Debug.Print Val("Meinestraße 7a") ' 0 Debug.Print Val("3-7") ' 3 Debug.Print Val("7a") ' 7 Debug.Print Val("1 5 12 14 33 41") ' 1512143341, denn Leerzeichen werden ' ignoriert! |
CDbl | ||||||
|
Da Variant-Variablen an keinen Datentyp gebunden sind, können beliebige Daten in ihnen untergebracht werden. Die 'TypeName'-Funktion ermittelt, welchen Unter-Datentyp die Variable angenommen hat. Das Ergebnis ist eine Ganzzahl (z. B. '8' für Zeichenkette). Eine komplette Liste der Werte finden Sie in der VBA-Hilfe. Siehe auch TypeName. |
Dim varValue As Variant Debug.Print VarType(varValue) ' 0 (Empty, Variant-Variable wurde noch nicht verwendet) varValue = "Hallo!" Debug.Print VarType(varValue) ' 8 (String) varValue = 2 Debug.Print VarType(varValue) ' 2 (Integer) |
Datentyp 'Variant', TypeName | ||||||
|
Ermittelt den Index des Wochentages, das in einer Datumsangabe steckt. Standardmäßig gilt Sonntag als erster Wochentag (in den U.S.A. ist Sonntag der erste Wochentag, in Deutschland Montag ...).
Achtung: Die WeekdayName-Funktion verwendet die Systemeinstellung als Voreinstellung für den ersten Tag der Woche, deshalb wie im Beispiel dafür sorgen, dass beide Funktionen die gleiche Grundlage verwenden (hier: vbSunday)! |
' Gibt den heutigen Wochentag zurück, z. B. 'Freitag': Debug.Print WeekdayName(Weekday(Date, vbSunday), , vbSunday) |
Rechnen mit Datumswerten, WeekdayName | ||||||
|
Ermittelt den Namen des Wochentages, der in einer Datumsangabe steckt. Der Name wird entsprechend der Systemsprache zurückgegeben.
Achtung: Die WeekdayName-Funktion verwendet die Systemeinstellung als Voreinstellung für den ersten Tag der Woche, deshalb wie im Beispiel dafür sorgen, dass beide Funktionen die gleiche Grundlage verwenden (hier: vbSunday)! |
' Gibt den heutigen Wochentag zurück, z. B. 'Freitag': Debug.Print WeekdayName(Weekday(Date, vbSunday), , vbSunday) |
Rechnen mit Datumswerten, Weekday | ||||||
|
Gibt die Zeilenbreite beim Beschreiben einer Datei an. Hierzu gibt es erst einmal kein Beispiel, weil die angebotenen Beispiele nicht funktionieren. | Arbeiten mit Dateien | |||||||
|
Schreibt eine einzelne Zeile in eine mit 'Open' geöffnete Datei. | Arbeiten mit Dateien, Print | |||||||
|
Ermittelt das Jahr, das in einer Datumsangabe steckt. |
Debug.Print Year(Date) ' Gibt das aktuelle Jahr zurück |
Rechnen mit Datumswerten |
Schlüsselwörter
Schlüsselwort | Bedeutung | Beispiel | Siehe auch |
---|---|---|---|
|
Wird verwendet, um den Datentyp einer Variablen, einer Konstante oder einer Funktion (bzw. Property Get) anzugeben. |
Dim strText As String |
|
|
|||
|
Datentyp für boolesche Werte, welche nur die Werte 'Wahr' oder 'Falsch' ('True' oder 'False') aufnehmen können. |
Dim blnContinue As Boolean blnContinue = True |
|
|
|||
|
Wird bei der Deklaration von Konstanten verwendet. Bei Modulvariablen wird Const zusätzlich angegeben, bei Prozedurvariablen statt dem Dim .
|
Public Const Version As String = "1.02.36" |
|
|
Datentyp für Kommazahlen mit 15 Vorkomma- und 4 Nachkommastellen. |
Dim curValue As Currency curValue = 12345.6789 |
|
|
|||
|
|||
|
Wird bei der Deklaration von Prozedurvariablen verwendet. Außerhalb einer Prozedur darf Dim nicht eingesetzt werden!
|
Dim strVariable As String |
|
|
Wird im Zusammenhang mit der Do-Schleife verwendet. |
Do lngIndex = lngIndex + 1 Loop While lngIndex < 7 |
|
|
Datentyp für Kommazahlen. |
Dim dblValue as Double dblValue = 1.23456 |
|
|
Eine Systemkonstante, die 'leer' repräsentiert ("" oder 0). Sie wird verwendet, um zu prüfen, ob eine Variable vom Datentyp Variant einen Wert enthält, ohne wissen zu müssen, ob die Variable einen Text oder eine Zahl enthält. Siehe auch 'IsEmpty'. |
Dim varValue As Variant varValue = "" ' oder 0 If varValue = Empty Then MsgBox "Variable enthält keinen Wert!" End If |
|
|
Beendet eine If-Abfrage, eine Select-Case-Anweisung, eine Prozedur, einen With-Block oder die Definition eines Type bzw. eines Enumerators. Achtung: Wenn =====End ===== ohne Bezug auf das Element eingesetzt wird, an dessen Ende es steht, wird die weitere Ausführung des Programms komplett abgebrochen!
|
Select Case lngValue Case 2, 5, 8 lngValue = lngValue + 3 End Select |
|
|
|||
|
Wird für die Fehlerbehandlung verwendet. Kann entweder im Zusammenhang mit On Error oder als 'Error'-Funktion verwendet werden.
|
On Error Resume Next Debug.Print Error(4) ' Anwendungs- oder objektdefinierter Fehler Error 4 ' Zeigt die entsprechende Fehlermeldung an |
|
|
| | ||
|
Verlässt unverzüglich die aktuelle Schleife oder Prozedur. |
Exit Do Exit For Exit Function Exit Property Exit Sub |
|
|
|||
|
Leitet eine For-Schleife ein. |
For lngIndex = 1 To 10 Debug.Print lngIndex Next lngIndex |
|
|
Gibt an, dass die hier deklarierte Prozedur eine Funktion ist und somit einen Rückgabewert zurückgeben kann. |
Private Function CurrentDate As Date CurrentDate = Date End Function |
|
|
|||
|
|||
|
|||
|
Leitet eine If-Abfrage ein. |
If varValue = Empty Then MsgBox "Variable enthält keinen Wert!" End If |
|
|
Wird als Vergleichsoperator bei Objekten verwendet (statt '='). Außerdem erscheint 'Is' in 'Select Case'-Anweisungen, wenn dort ein Vergleichsoperator angegeben wird. | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
Wird verwendet, um eine neue Instanz eines eigenen (Klassen-)Objektes zu erzeugen.
Achtung: Anwendungs-Objekte (wie Arbeitsmappen, Formen, Folien etc.) können nicht mit 'New' erstellt werden (siehe Anmerkungen rechts, Anwendungsobjekte und Klassenobjekte)!! |
Set colCollection = New Collection ' Eine neue Auflistung Set myData = New clsData ' Ein neues Klassenobjekt Set dlg = New frmDialog ' Ein neues Formular (Dialog, UserForm) aber nicht: Set wkb = New Workbook ' Laufzeitfehler 429 denn Anwendungs-Objekte können nur referenziert, nicht mit 'New' erzeugt werden (siehe Anwendungsobjekte)! Wenn Sie eine neue Arbeitsmappe benötigen, verwenden Sie daher den vom Anwendungsobjekt bereitgestellten Weg: Set wkb = Workbooks.Add |
Klassenobjekte, Anwendungsobjekte |
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|
| | ||
|