VBA Syntax und Sprachelemente: Unterschied zwischen den Versionen

Aus VBA-wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Category:vba-wiki]]
== Regeln und Syntax ==
== Regeln und Syntax ==


Zeile 32: Zeile 33:
=====<code>Abs</code>=====
=====<code>Abs</code>=====
| Gibt den absoluten Wert einer Zahl zurück, bei negativen Zahlen also den positiven Wert.
| Gibt den absoluten Wert einer Zahl zurück, bei negativen Zahlen also den positiven Wert.
| Debug<span style="Color:gray">.</span>Print Abs<span style="Color:gray">(3.4)</span> <span style="Color:green">' 3,4</span> Debug<span style="Color:gray">.</span>Print Abs<span style="Color:gray">(-3.4)</span> <span style="Color:green">' Ebenfalls 3,4</span> |
|
Debug<span style="Color:gray">.</span>Print Abs<span style="Color:gray">(3.4)</span>     <span style="Color:green">' 3,4</span>
Debug<span style="Color:gray">.</span>Print Abs<span style="Color:gray">(-3.4)</span>     <span style="Color:green">' Ebenfalls 3,4</span>  
|
|-  
|-  
|  
|
 
=====<code>AppActivate</code>=====
=====<code>AppActivate</code>=====
| Bringt die Anwendung mit dem angegebenen Titel in den Vordergrund. Der Titel muss hierfür bekannt sein.
| Bringt die Anwendung mit dem angegebenen Titel in den Vordergrund. Der Titel muss hierfür bekannt sein.
| <span style="Color:green">' Funktioniert selbstverständlich nur, wenn in Excel eine 'Mappe1' geöffnet ist!</span> AppActivate <span style="Color:gray">"Mappe1 - Excel"</span> |
|
<span style="Color:green">' Funktioniert selbstverständlich nur, wenn in Excel eine 'Mappe1' geöffnet ist!</span>
AppActivate <span style="Color:gray">"Mappe1 - Excel"</span>  
|
|-  
|-  
|  
|
 
=====<code>Array</code>=====
=====<code>Array</code>=====
| 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).
| 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).
Zeile 281: Zeile 290:
=====<code>Debug.Print</code>=====
=====<code>Debug.Print</code>=====
| Gibt den nachfolgenden Text im Direktbereich des VBA-Editors aus.
| Gibt den nachfolgenden Text im Direktbereich des VBA-Editors aus.
| '''Debug.Print''' ActiveDocument.Name ' Wenn mehrere Zeichenketten durch Komma getrennt angegeben werden, werden diese tabellarisch im Direktbereich ausgegeben: Debug.Print "Hund", "Katze", "Maus" ' Hund Katze Maus |
|
'''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
|
|-  
|-  
|  
|
 
=====<code>DeleteSetting</code>=====
=====<code>DeleteSetting</code>=====
| Löscht eine Einstellung in der Registry. Kann ausschließlich auf den Zweig 'HKEY_CURRENT_USER\Software\VB&nbsp;and&nbsp;VBA&nbsp;Program&nbsp;Settings' zugreifen.
| Löscht eine Einstellung in der Registry. Kann ausschließlich auf den Zweig 'HKEY_CURRENT_USER\Software\VB&nbsp;and&nbsp;VBA&nbsp;Program&nbsp;Settings' zugreifen.
Zeile 348: Zeile 362:


=====<code>Environ</code>=====
=====<code>Environ</code>=====
| Erlaubt es, Windows Umgebungsvariablen abzurufen. Bitte beachten Sie, dass die Liste vorhandener Variablen Arbeitsplatz-abhängig ist und somit stark variieren kann.
| Erlaubt es, Windows Umgebungsvariablen abzurufen. Bitte beachten Sie, dass die Liste vorhandener Variablen eventuell Arbeitsplatz-abhängig ist und somit stark variieren kann.
|
|
  Debug.Print Environ("USERNAME")      ' Anmeldename des Anwenders  
  Debug<span style="Color:gray">.</span>Print Environ<span style="Color:gray">("USERNAME")</span>       <span style="Color:green">' Anmeldename des Anwenders</span>
|
|
|-  
|-  
Zeile 397: Zeile 411:
=====<code>Exp</code>=====
=====<code>Exp</code>=====
| Liefert das Ergebnis der natürlichen Exponentialfunktion e<sup>x</sup> (zur Basis der Eulerschen Zahl).
| Liefert das Ergebnis der natürlichen Exponentialfunktion e<sup>x</sup> (zur Basis der Eulerschen Zahl).
| dblResult = Exp(2) ' e<sup>2</sup> |
|
dblResult = Exp(2)       ' e<sup>2</sup> =  7,38905609893065
|
|-  
|-  
|  
|
 
=====<code>FileAttr</code>=====
=====<code>FileAttr</code>=====
| Ermittelt bei einer mit 'Open' geöffneten Datei den Modus, in der sie geöffnet wurde
| Ermittelt bei einer mit 'Open' geöffneten Datei den Modus, in der sie geöffnet wurde
Zeile 456: Zeile 473:
| Eine allgemeine Formatierungs-Funktion, um Zahlen, Datumsangaben etc. in ein gewünschtes Muster zu bringen.
| 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  
  Debug<span style="Color:gray">.</span>Print Format<span style="Color:gray">(</span>Date<span style="Color:gray">,</span> <span style="Color:gray">"d. mmmm yyyy")</span>     <span style="Color:green">' 22. März 2016</span>
|
|
|-  
|-  
Zeile 464: Zeile 481:
| Formatiert eine Zahl für die Darstellung als Geldbetrag.
| Formatiert eine Zahl für die Darstellung als Geldbetrag.
|
|
  Debug.Print FormatCurrency(23)      ' 23,00 €  
  Debug<span style="Color:gray">.</span>Print FormatCurrency<span style="Color:gray">(23)</span>     <span style="Color:green">' 23,00 €</span>
|
|
|-  
|-  
Zeile 472: Zeile 489:
| Formatiert ein Datum im generellen oder in einem der zur Verfügung gestellten Formate.
| Formatiert ein Datum im generellen oder in einem der zur Verfügung gestellten Formate.
|
|
  Debug.Print FormatDateTime(Date, vbLongDate)      ' Dienstag, 22. März 2016  
  Debug<span style="Color:gray">.</span>Print FormatDateTime<span style="Color:gray">(</span>Date<span style="Color:gray">,</span> vbLongDate<span style="Color:gray">)</span>       <span style="Color:green">' Dienstag, 22. März 2016</span>
|
|
|-  
|-  
Zeile 541: Zeile 558:
| 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.
| 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
  <span style="Color:blue"> Dim </span>lngAttribute<span style="Color:blue"> As Long</span>
 
lngAttribute = GetAttr("c:\temp")
  lngAttribute <span style="Color:gray">=</span> GetAttr<span style="Color:gray">("c:\temp")</span>
  If lngAttribute And vbDirectory Then
  <span style="Color:blue"> If </span>lngAttribute<span style="Color:blue"> And </span>vbDirectory<span style="Color:blue"> Then</span>
    MsgBox "Dies ist ein Verzeichnis"
      MsgBox <span style="Color:gray">"Dies ist ein Verzeichnis"</span>
  End If  
  <span style="Color:blue"> End If </span>
|
|
|-  
|-  
Zeile 653: Zeile 670:
=====<code>IsArray</code>=====
=====<code>IsArray</code>=====
| 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.
| 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 |
|
<span style="Color:blue"> Sub </span>TestIsArray<span style="Color:gray">()</span>
 
    <span style="Color:blue"> Dim </span>strString<span style="Color:blue"> As String</span>
    <span style="Color:blue"> Dim </span>strArray<span style="Color:gray">()</span><span style="Color:blue"> As String</span>
    <span style="Color:blue"> Dim </span>varUnknown<span style="Color:blue"> As Variant</span>
 
      Debug<span style="Color:gray">.</span>Print IsArray<span style="Color:gray">(</span>strString<span style="Color:gray">)</span>  <span style="Color:green">' Falsch</span>
      Debug<span style="Color:gray">.</span>Print IsArray<span style="Color:gray">(</span>strArray<span style="Color:gray">)</span>    <span style="Color:green">' Wahr</span>
      Debug<span style="Color:gray">.</span>Print IsArray<span style="Color:gray">(</span>varUnknown<span style="Color:gray">)</span>  <span style="Color:green">' Falsch</span>
      varUnknown <span style="Color:gray">=</span> strArray           <span style="Color:green">' Array in Variant übernehmen</span>
      Debug<span style="Color:gray">.</span>Print IsArray<span style="Color:gray">(</span>varUnknown<span style="Color:gray">)</span>  <span style="Color:green">' Wahr</span>
<span style="Color:blue"> End Sub </span>
|
|-  
|-  
|  
|
 
=====<code>IsDate</code>=====
=====<code>IsDate</code>=====
| Prüft, ob der übergebene Wert in ein gültiges Datum umgewandelt werden kann.
| Prüft, ob der übergebene Wert in ein gültiges Datum umgewandelt werden kann.
Zeile 902: Zeile 933:
=====<code>MacScript</code>=====
=====<code>MacScript</code>=====
| Führt einen AppleScript aus. Betrifft ausschließlich Office für MacIntosh.
| Führt einen AppleScript aus. Betrifft ausschließlich Office für MacIntosh.
| |
|  
|
|-  
|-  
|  
|
 
=====<code>Mid</code>=====
=====<code>Mid</code>=====
| 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.
| 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.
Zeile 1.243: Zeile 1.276:


=====<code>Shell</code>=====
=====<code>Shell</code>=====
| 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.
| Wird verwendet, um ein Programm (eine EXE-Datei) auszuführen. Bei Standardprogrammen (siehe Beispiel) muss kein Pfad angegeben werden.  
| 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' |
 
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'  
|
|-  
|-  
|  
|
 
=====<code>Sin</code>=====
=====<code>Sin</code>=====
| Sinus-Funktion (erwartet Angabe des Winkels in Radianten, siehe [[Arithmetische_Operatoren_und_Rechenfunktionen#Winkelfunktionen|Winkelfunktionen]])
| Sinus-Funktion (erwartet Angabe des Winkels in Radianten, siehe [[Arithmetische_Operatoren_und_Rechenfunktionen#Winkelfunktionen|Winkelfunktionen]])
Zeile 1.587: Zeile 1.626:
=====<code>As</code>=====
=====<code>As</code>=====
| Wird verwendet, um den Datentyp einer Variablen, einer Konstante oder einer Funktion (bzw. Property Get) anzugeben.
| Wird verwendet, um den Datentyp einer Variablen, einer Konstante oder einer Funktion (bzw. Property Get) anzugeben.
| Dim strText '''As''' String |
|
<span style="Color:blue">Dim </span>strText <span style="Color:blue">As</span> String  
|
|-  
|-  
|
=====<code>Base</code>=====
|
|  
|  
=====<code>Base</code>=====
|
| | |
|-  
|-  
|  
|
 
=====<code>Boolean</code>=====
=====<code>Boolean</code>=====
| Datentyp für boolesche Werte, welche nur die Werte 'Wahr' oder 'Falsch' ('True' oder 'False') aufnehmen können.
| Datentyp für boolesche Werte, welche nur die Werte 'Wahr' oder 'Falsch' ('True' oder 'False') aufnehmen können.
| Dim blnContinue As '''Boolean''' blnContinue = True |
|
<span style="Color:blue"> Dim </span>blnContinue<span style="Color:blue"> As Boolean</span>
  blnContinue <span style="Color:gray">=</span><span style="Color:blue"> True</span>
|
|-  
|-  
|  
|  
=====<code>Case</code>=====
=====<code>Case</code>=====
| | |
|-
|  
|  
=====<code>Const</code>=====
|
| Wird bei der Deklaration von Konstanten verwendet. Bei Modulvariablen wird <code>Const</code> zusätzlich angegeben, bei Prozedurvariablen statt dem <code>Dim</code>.
|
| Public '''Const''' Version As String = "1.02.36" |
|-
|-  
|
 
=====<code>Const</code>=====
| Wird bei der Deklaration von Konstanten verwendet. Bei Modulvariablen wird <code>Const</code> zusätzlich angegeben, bei Prozedurvariablen statt dem <code>Dim</code>.
|
<span style="Color:blue"> Public Const </span>Version<span style="Color:blue"> As String </span><span style="Color:gray">=</span> <span style="Color:gray">"1.02.36"</span>
|
|-  
|  
|  
=====<code>Currency</code>=====
=====<code>Currency</code>=====
| Datentyp für Kommazahlen mit 15 Vorkomma- und 4 Nachkommastellen.
| Datentyp für Kommazahlen mit 15 Vorkomma- und 4 Nachkommastellen.
| Dim curValue As '''Currency''' curValue = 12345.6789 |
|
<span style="Color:blue">Dim </span>curValue<span style="Color:blue"> As </span><span style="Color:green">'''Currency'''</span>
curValue <span style="Color:gray">=</span> <span style="Color:gray">12345.6789</span>
 
|
|-  
|-  
|  
|  
=====<code>Declare</code>=====
=====<code>Declare</code>=====
| | |
|  
|  
|
|-  
|-  
|  
|  
=====<code>Deftype</code>=====
=====<code>Deftype</code>=====
| | |
|  
|  
|
|-  
|-  
|  
|  
=====<code>Dim</code>=====
=====<code>Dim</code>=====
| Wird bei der Deklaration von Prozedurvariablen verwendet. Außerhalb einer Prozedur darf <code>Dim</code> nicht eingesetzt werden!
| Wird bei der Deklaration von Prozedurvariablen verwendet. Außerhalb einer Prozedur darf <code>Dim</code> nicht eingesetzt werden!
| '''Dim''' strVariable As String |
|
<span style="Color:blue">Dim </span>strVariable<span style="Color:blue"> As String</span>
|
|-  
|-  
|  
|  
=====<code>Do</code>=====
=====<code>Do</code>=====
| Wird im Zusammenhang mit der [[Do-Schleifen|Do-Schleife]] verwendet.
| Wird im Zusammenhang mit der [[Do-Schleifen|Do-Schleife]] verwendet.
| '''Do''' lngIndex = lngIndex + 1 Loop While lngIndex < 7 |
|
<span style="Color:blue">Do</span>
    lngIndex <span style="Color:gray">=</span> lngIndex <span style="Color:gray">+</span> <span style="Color:gray">1</span><span style="Color:blue">
Loop While </span>lngIndex <span style="Color:gray"><</span> <span style="Color:gray">7</span>
|
|-  
|-  
|  
|  
=====<code>Double</code>=====
=====<code>Double</code>=====
| Datentyp für Kommazahlen.
| Datentyp für Kommazahlen.
| Dim dblValue as '''Double''' dblValue = 1.23456 |
|
<span style="Color:blue">Dim </span>dblValue<span style="Color:blue"> as </span><span style="Color:green">'''Double'''</span>
dblValue <span style="Color:gray">=</span> <span style="Color:gray">1.23456</span>
|
|-  
|-  
|  
|  
=====<code>Empty</code>=====
=====<code>Empty</code>=====
| 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'.
| 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 |
|
<span style="Color:blue">Dim </span>varValue<span style="Color:blue"> As Variant</span>
varValue <span style="Color:gray">=</span> <span style="Color:gray">""</span> <span style="Color:green">' oder 0</span>
<span style="Color:blue">If </span>varValue <span style="Color:gray">=</span> <span style="Color:green">'''Empty''' Then</span>
    MsgBox <span style="Color:gray">"Variable enthält keinen Wert!"</span><span style="Color:blue">
End If</span>
|
|-  
|-  
|  
|  
=====<code>End</code>=====
=====<code>End</code>=====
| Beendet eine If-Abfrage, eine Select-Case-Anweisung, eine Prozedur, einen With-Block oder die Definition eines Type bzw. eines Enumerators. '''Achtung:''' Wenn =====<code>End</code>===== ohne Bezug auf das Element eingesetzt wird, an dessen Ende es steht, wird die weitere Ausführung des Programms komplett abgebrochen!
| Beendet eine If-Abfrage, eine Select-Case-Anweisung, eine Prozedur, einen With-Block oder die Definition eines Type bzw. eines Enumerators.  
| Select Case lngValue Case 2, 5, 8 lngValue = lngValue + 3 '''End''' Select |
 
|-  
'''Achtung:''' Wenn <code>End</code> ohne Bezug auf das Element eingesetzt wird, an dessen Ende es steht, wird die weitere Ausführung des Programmlaufs komplett abgebrochen! Dies bedeutet, dass wenn diese Prozedur von einer anderen Prozedur aufgerufen wurde, diese nicht wie bei '[[Exit]] Sub' direkt zur aufrufenden Prozedur zurückkehrt, sondern alle Programmierung komplett und sofort beendet.
|
<span style="Color:blue">If </span>lngValue <span style="Color:gray">=</span> <span style="Color:gray">0</span><span style="Color:blue"> Then</span>
    lngValue <span style="Color:gray">=</span> <span style="Color:gray">3</span><span style="Color:blue">
End If
Select Case </span>lngValue
    <span style="Color:blue"> Case </span><span style="Color:gray">2,</span> <span style="Color:gray">5,</span> <span style="Color:gray">8</span>
        lngValue <span style="Color:gray">=</span> lngValue <span style="Color:gray">+</span> <span style="Color:gray">3</span>
    <span style="Color:blue"> Case </span><span style="Color:gray">3</span>
        <span style="Color:blue"> End </span>    <span style="Color:green">' Beendet diesen gesamten Programmlauf sofort</span>
<span style="Color:blue">End Select</span>
| Siehe [[Exit]]
|-  
|  
|  
=====<code>Enum</code>=====
=====<code>Enum</code>=====
| | |
|  
|  
|
|-  
|-  
|  
|  
=====<code>Error</code>=====
=====<code>Error</code>=====
| Wird für die Fehlerbehandlung verwendet. Kann entweder im Zusammenhang mit <code>On Error</code> oder als 'Error'-Funktion verwendet werden.
| Wird für die Fehlerbehandlung verwendet. Kann entweder im Zusammenhang mit <code>On Error</code> 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 |
|
<span style="Color:blue">On Error Resume Next</span>
Debug<span style="Color:gray">.</span>Print Error<span style="Color:gray">(4)</span>  <span style="Color:green">' Anwendungs- oder objektdefinierter Fehler</span>
<span style="Color:blue">Error </span><span style="Color:gray">4</span>        <span style="Color:green">' Zeigt die entsprechende Fehlermeldung an</span>
|
|-  
|-  
|  
|
 
=====<code>Event</code>=====
=====<code>Event</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Exit</code>=====
=====<code>Exit</code>=====
| Verlässt unverzüglich die aktuelle Schleife oder Prozedur.
| Verlässt unverzüglich die aktuelle Schleife oder Prozedur.
| '''Exit''' Do '''Exit''' For '''Exit''' Function '''Exit''' Property '''Exit''' Sub |
|
<span style="Color:blue">Exit Do
Exit For
Exit Function
Exit Property
Exit Sub</span>
|
|-  
|-  
|  
|  
=====<code>Explicit</code>=====
=====<code>Explicit</code>=====
| | |
|  
|  
|
|-  
|-  
|  
|  
=====<code>For</code>=====
=====<code>For</code>=====
| Leitet eine [[For-Schleifen|For-Schleife]] ein.
| Leitet eine [[For-Schleifen|For-Schleife]] ein.
| '''For''' lngIndex = 1 To 10 Debug.Print lngIndex Next lngIndex |
|
<span style="Color:blue">For </span>lngIndex <span style="Color:gray">=</span> <span style="Color:gray">1</span><span style="Color:blue"> To </span><span style="Color:gray">10</span>
    Debug<span style="Color:gray">.</span>Print lngIndex<span style="Color:blue">
Next </span>lngIndex
|
|-  
|-  
|  
|  
=====<code>Function</code>=====
=====<code>Function</code>=====
| Gibt an, dass die hier deklarierte Prozedur eine Funktion ist und somit einen Rückgabewert zurückgeben kann.
| 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 |
|
<span style="Color:blue">Private Function </span>CurrentDate<span style="Color:blue"> As Date</span>
   
    CurrentDate <span style="Color:gray">=</span><span style="Color:blue"> Date
End Function</span>
|
|-  
|-  
|  
|  
=====<code>Get</code>=====
=====<code>Get</code>=====
| | |
|  
|  
|
|-  
|-  
|  
|  
=====<code>GoSub</code>=====
=====<code>GoSub</code>=====
| | |
|  
|-  
|  
|
|-  
|  
|  
=====<code>Goto</code>=====
=====<code>Goto</code>=====
| | |
|  
|  
|
|-  
|-  
|  
|  
=====<code>If</code>=====
=====<code>If</code>=====
| Leitet eine [[Abfragen|If-Abfrage]] ein.
| Leitet eine [[Abfragen|If-Abfrage]] ein.
| If varValue = Empty Then MsgBox "Variable enthält keinen Wert!" End If |
|
<span style="Color:blue"> If </span>varValue <span style="Color:gray">=</span> Empty<span style="Color:blue"> Then</span>
      MsgBox <span style="Color:gray">"Variable enthält keinen Wert!"</span>
<span style="Color:blue"> End If</span>
|
|-  
|-  
|  
|  
=====<code>Is</code>=====
=====<code>Is</code>=====
| Wird als Vergleichsoperator bei Objekten verwendet (statt '='). Außerdem erscheint 'Is' in 'Select Case'-Anweisungen, wenn dort ein Vergleichsoperator angegeben wird.
| Wird als Vergleichsoperator bei Objekten verwendet (statt '='). Außerdem erscheint 'Is' in 'Select Case'-Anweisungen, wenn dort ein Vergleichsoperator angegeben wird.
| 'Is' als Vergleichsoperator bei Objekten: <span style="Color:blue">If </span>myObject <span style="Color:blue">Is</span> Nothing<span style="Color:blue"> Then </span> MsgBox <span style="Color:gray">"Objekt konnte nicht erzeugt werden!"</span> <span style="Color:blue">End If</span> <span style="Color:green">' If myObject = Nothing Then ... würde den Fehler 'Unzulässige Verwendung eines Objekts' erzeugen!</span> 'Is' in Select-Case-Anweisung: <span style="Color:blue"> Select Case </span><span style="Color:gray">3</span> <span style="Color:blue"> Case </span><span style="Color:gray">2</span> <span style="Color:green">' Kein Operator, also kein 'Is'</span> <span style="Color:blue"> Case Is</span> <span style="Color:gray">=</span> <span style="Color:gray">2</span> <span style="Color:green">' Operator '=', also wird 'Is' verwendet</span> <span style="Color:blue"> Case Is</span> <span style="Color:gray"><</span> <span style="Color:gray">2</span> <span style="Color:green">' Operator '<', also wird 'Is' verwendet</span> <span style="Color:blue"> End Select</span> '''Anmerkung:''' In Select-Case-Anweisungen wird das 'Is' automatisch vom VBA-Editor eingesetzt, wenn dieser es für nötig befindet. |
|
'Is' als Vergleichsoperator bei Objekten:
<span style="Color:blue">If </span>myObject <span style="Color:blue">Is</span> Nothing<span style="Color:blue"> Then </span> MsgBox <span style="Color:gray">"Objekt konnte nicht erzeugt werden!"</span>
<span style="Color:blue">End If</span>
<span style="Color:green">' If myObject = Nothing Then ... würde den Fehler 'Unzulässige Verwendung eines Objekts' erzeugen!</span>
 
'Is' in Select-Case-Anweisung:
<span style="Color:blue"> Select Case </span><span style="Color:gray">3</span>
<span style="Color:blue"> Case </span><span style="Color:gray">2</span>
<span style="Color:green">' Kein Operator, also kein 'Is'</span>
<span style="Color:blue"> Case Is</span> <span style="Color:gray">=</span> <span style="Color:gray">2</span>
<span style="Color:green">' Operator '=', also wird 'Is' verwendet</span>
<span style="Color:blue"> Case Is</span> <span style="Color:gray"><</span> <span style="Color:gray">2</span>
<span style="Color:green">' Operator '<', also wird 'Is' verwendet</span>
<span style="Color:blue"> End Select</span>
 
'''Anmerkung:''' In Select-Case-Anweisungen wird das 'Is' automatisch vom VBA-Editor eingesetzt, wenn dieser es für nötig befindet.  
|
|-  
|-  
|  
|
 
=====<code>Implements</code>=====
=====<code>Implements</code>=====
| | |
|-
|  
|  
=====<code>Integer</code>=====
| | |
|-
|  
|  
=====<code>Let</code>=====
|
| | |
|-  
|-  
|
=====<code>Integer</code>=====
|  
|  
=====<code>Long</code>=====
| | |
|-
|  
|  
=====<code>Me</code>=====
|
| | |
|-
|
 
=====<code>Let</code>=====
|
|
|
|-
|
=====<code>Long</code>=====
|
|
|
|-
|
=====<code>Me</code>=====
|
|
|
|-  
|-  
|  
|  
Zeile 1.739: Zeile 1.896:


=====<code>Nothing</code>=====
=====<code>Nothing</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Null</code>=====
=====<code>Null</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>On</code>=====
=====<code>On</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Option</code>=====
=====<code>Option</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Private</code>=====
=====<code>Private</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Property</code>=====
=====<code>Property</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Public</code>=====
=====<code>Public</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>RaiseEvent</code>=====
=====<code>RaiseEvent</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Rem</code>=====
=====<code>Rem</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Resume</code>=====
=====<code>Resume</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Select</code>=====
=====<code>Select</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Set</code>=====
=====<code>Set</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Single</code>=====
=====<code>Single</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Static</code>=====
=====<code>Static</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>String</code>=====
=====<code>String</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Sub</code>=====
=====<code>Sub</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>Type</code>=====
=====<code>Type</code>=====
| | |
|
|
|
|-  
|-  
|  
|  
=====<code>While</code>=====
=====<code>While</code>=====
| | |
|
|
|
|-
|-
|  
|  
=====<code>With</code>=====
=====<code>With</code>=====
| |
|  
|
|  
|  
|}
|}

Aktuelle Version vom 28. Januar 2023, 00:40 Uhr

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
Abs
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 
AppActivate
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" 
Array
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
Asc
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()
Atn
Arkustangens-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) Winkelfunktionen
Beep
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
Call
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) 
CallByName
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 
CDate
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
ChDir
Ä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
ChDrive
Ä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
Choose
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' 
Chr
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
Close
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
Command
Ein Relikt aus den VisualBasic-Zeiten: Hiermit könnte man die Parameter, mit denen ein Programm aufgerufen wurde, abfragen. Funktioniert bei VBA nicht!
Cos
Kosinus-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) Winkelfunktionen
CreateObject
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
CurDir
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
CVErr
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
Date
Gibt das aktuelle Datum zurück.
Debug.Print Date      ' 23.7.2015
Datum und Uhrzeit
DateAdd
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
DateDiff
Berechnet den Unterschied zwischen zwei Datums- bzw. Zeitangaben.
Debug.Print DateDiff("d", "2016-02-25", "2016-03-06") ' 10 Tage
Rechnen mit Datumswerten
DatePart
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
DateSerial
Berechnet das Datum anhand der Werte für Jahr, Monat und Tag.
Debug.Print DateSerial(2016, 2, 12) ' 12.02.2016
Rechnen mit Datumswerten
DateValue
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
Day
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
DDB
Gibt die Abschreibung eines Vermögenswertes über einen bestimmten Zeitraum mit Hilfe der geometrisch-degressiven Abschreibungsmethode oder einer anderen angegebenen Methode zurück.
Debug.Assert
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
Debug.Print
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
DeleteSetting
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
Dir
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
DoEvents
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
Environ
Erlaubt es, Windows Umgebungsvariablen abzurufen. Bitte beachten Sie, dass die Liste vorhandener Variablen eventuell Arbeitsplatz-abhängig ist und somit stark variieren kann.
Debug.Print Environ("USERNAME")       ' Anmeldename des Anwenders
EOF
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
Erase
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
Error
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:

Laufzeitfehler 11 - Division durch Null.png 

Fehlermeldung einer Fehlernummer abfragen:

MsgBox Error(11)           ' Zeigt 'Division durch Null' an
Fehlerbehandlung
Exp
Liefert das Ergebnis der natürlichen Exponentialfunktion ex (zur Basis der Eulerschen Zahl).
dblResult = Exp(2)        ' e2 =  7,38905609893065 
FileAttr
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
FileCopy
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
FileDateTime
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
FileLen
Ermittelt die Dateigröße in Byte.
lngFileSize = FileLen("c:\Pfad\Datei.txt") ' bspw. 9277 Byte, rund 10 KB
Arbeiten mit Dateien
Fix
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
Format
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
FormatCurrency
Formatiert eine Zahl für die Darstellung als Geldbetrag.
Debug.Print FormatCurrency(23)      ' 23,00 € 
FormatDateTime
Formatiert ein Datum im generellen oder in einem der zur Verfügung gestellten Formate.
Debug.Print FormatDateTime(Date, vbLongDate)       ' Dienstag, 22. März 2016
FormatNumber
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
FormatPercent
Formatiert einen Zahlenwert als Prozentzahl. Hierbei wird arithmetisch gerundet!
Debug.Print FormatPercent(0.12345)     ' 12,35%
Runden
FreeFile
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
FV
Errechnet den Endwert (Future Value, FV) einer Annuität.
GetAllSettings
Ü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:

Version 1.0.1.3
DisplayName Meine Anwendung
LastLogin 13.12.2017
Eigene Einstellungen: Registry
GetAttr
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 
GetObject
Wird verwendet, um eine Verbindung zu einem anderen (Office-)Programm herzustellen. Voraussetzung: Das Programm läuft schon.
Set wordApp = GetObject(, "Word.Application")
CreateObject, Fernsteuerung
GetSetting
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
Hex
Gibt den hexadezimalen Wert einer Zahl zurück.
Debug.Print Hex(123456)     ' Ergibt 1E240
Arithmetische Operatoren und Rechenfunktionen
Hour
Ermittelt die Stunden, die in einer Datums-/Zeitangabe stecken.
Debug.Print Hour(Time) ' Gibt die aktuelle Stunde zurück
Rechnen_mit_Datumswerten
IIf
Stellt eine Kurzform der 'IfThenElse'-Abfrage dar.
Debug.Print IIf(Time < CDate("12:00"), "Vormittag", "Nachmittag")
If-Abfrage mit Else-Zweig
IMEStatus
Gibt den IME-Modus (Input Method Editor) von Windows zurück. Findet nur in fernöstlichen Versionen von Windows Verwendung.
Input
Wird im Zusammenhang mit dem Auslesen von Dateien verwendet. Open, Arbeiten mit Dateien
InputBox
Ruft den Standard-Dialog zur Eingabe eines Textes auf.
Dim strInput As String 

strInput = InputBox("Bitte etwas eingeben:", "Meine InputBox", "Test") 

InputBox 02.png

Eingebaute Dialoge: InputBox
InStr
Gibt die Position der angegebenen Zeichenkette in einem Text zurück.
Debug.Print InStr("Ein Text mit Worten", " ")     ' 4
Zeichenketten, InStrRev
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
Int
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
IsArray
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 
IsDate
Prüft, ob der übergebene Wert in ein gültiges Datum umgewandelt werden kann.
If IsDate(strInput) = True Then dteDate = CDate(strInput)
CDate
IsEmpty
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 
IsError
Kann einen mit der CVErr-Funktion erzeugten Fehler feststellen. Eigene Fehler erzeugen, CVErr
IsMissing
Kann bei optionalen Parametern, die als Variant deklariert sind, feststellen, ob sie beim Aufruf verwendet wurden. Arbeiten mit Optionalen Parametern
IsNull
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 |
IsNumeric
Stellt fest, ob der übergebene Wert in eine Zahl umgewandelt werden kann.
Debug.Print IsNumeric("Text") ' Falsch 
Debug.Print IsNumeric("1,234") ' Wahr 
IsObject
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 
IPmt
Interest Payment: Wird verwendet, um Zinszahlungen zu berechnen.
IRR
Internal Rate of Return: Gibt den internen Zinssatz für eine Reihe periodischer Eingange und Zahlungen an.
Join
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
Kill
Löscht die angegebene Datei. Wenn diese nicht existiert, tritt ein Fehler auf.
Kill "c:\Temp\Hallo.txt"
Arbeiten mit Dateien
LBound
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
LCase
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
Left
Gibt die angegebene Anzahl von Buchstaben aus einem Text zurück.
Debug.Print Left("Länge", 3)     ' Län
Zeichenketten: Aufteilen und kürzen
Len
Ermittelt die Anzahl der Zeichen in einem Text.
Debug.Print Len("Länge")     ' 5
Zeichenketten: Länge ermitteln
Line Input
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
Load
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
Loc
Gibt die aktuelle Lese- / Schreibe-Position beim Lesen / Schreiben einer Datei an. Arbeiten mit Dateien
Lock
Sperrt das Lesen / Schreiben der angegebenen Datei, während sie gerade von diesem Prozess betrachtet bzw. bearbeitet wird. Siehe Unlock. Arbeiten mit Dateien
LOF
Length of File: Ermittelt die Anzahl von Bytes in einer zum Lesen / Schreiben geöffneten Datei. Arbeiten mit Dateien
Log
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
LSet
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
LTrim-, RTrim- und Trim-Funktion
  • Entfernt vorangestellte und / oder angehängte Leerzeichen.
  • Gilt nur für das Leerzeichen Chr(32), nicht für feste Leerzeichen (Chr(160)).
  • Betrifft nicht Leerzeichen, die im Text eingeschlossen sind.
 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
MacID
Wird verwendet, um die Dateiendung für die im Dateisystem gesuchten Dateien zu ermitteln. Betrifft ausschließlich Office für MacIntosh.
MacScript
Führt einen AppleScript aus. Betrifft ausschließlich Office für MacIntosh.
Mid
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
Minute
Ermittelt die Minuten, die in einer Datums-/Zeitangabe stecken.
Debug.Print Minute(Time)      ' Gibt die aktuelle Minute zurück
Rechnen mit Datumswerten
MIRR
MkDir
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
Mod
Ermittelt den Rest einer ganzzahligen Division.
Debug.Print 3 Mod 2      ' 3 : 2 ergibt Rest 1
Gemischte Brüche
Month
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
MonthName
Bestimmt den Namen des angegebenen Monats entsprechend der Systemsprache.
Debug.Print MonthName(3)      ' März
Rechnen mit Datumswerten
MsgBox
Zeigt ein Meldungsfenster an.

Automatisch wird zusätzlich ein Warntonausgegeben (siehe Beep)

MsgBox "Hallo!"
Eingebaute Dialoge: MsgBox
Now
Gibt das aktuelle Datum mit Uhrzeit zurück.
Debug.Print Now              ' 31.03.2016 16:24:31
Rechnen mit Datumswerten
NPer
Errechnet die Anzahl von Zeiträumen einer Annuität basierend auf regelmäßigen, festen Zahlungen und einem festen Zinssatz.
NPV
Errechnet den aktuellen Nettowert einer Investition basierend auf regelmäßiger Zahlungsein- und -ausgängen und dem Abzinsungssatz.
Oct
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
Open
Ö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
Partition
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 
Pmt
Errechnet den Wert der Zahlung für eine Annuität bei regelmäßigen konstanten Zahlungsbeträgen und einem festen Zinssatz.
PPmt
Errechnet die Tilgungszahlung für einen bestimmten Annuitätszeitraum basierend auf regelmäßigen, festen Zahlungen und einem festen Zinssatz.
Print
Schreibt den angegebenen Text in eine Datei. Siehe Beispiel bei Open. Open, Arbeiten mit Dateien
Put
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
PV
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.
QBColor
QuickBasic-Farbe: Gibt den RGB-Farbwert einer der ursprünglich 16 möglichen Farbwerte zurück. Farben
Randomize
'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
Rate
Ermittelt den Zinssatz pro Zeitabschnitt einer Annuität.
ReDim
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
Replace
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
Reset
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
RGB
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
Right
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
RmDir
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
Rnd
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
Round
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
RSet
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
RTrim
Siehe LTrim-, RTrim- und Trim-Funktion. Zeichenketten
SaveSetting
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
Second
Ermittelt die Sekunden, die in einer Datums-/Zeitangabe stecken.
Debug.Print Second(Time)      ' Gibt die aktuellen Sekunden zurück
Rechnen mit Datumswerten
Seek
Ermittelt die aktuelle Lese-/Schreibposition in einer mit 'Open' geöffneten Datei. Arbeiten mit Dateien
SendKeys
Sendet Tastenschläge an die aktuelle Anwendung, also eventuell auch an eine 'fremde' bzw. unbeabsichtigt im Vordergrund liegende Anwendung.
SetAttr
Ändert die Eigenschaften der angegebenen Datei. FileAttr, GetAttr, Arbeiten mit Dateien
Sgn
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
Shell
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' 
Sin
Sinus-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) Winkelfunktionen
SLN
Wird zur Zinsberechnung verwendet (straight line deprecation).
Space
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) & "$"      ' $     $ 
Split
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
Sqr
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
Stop
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
Str
Wandelt eine Zahl in eine Zeichenkette um:
  • Als Dezimaltrennzeichen darf ausschließlich der Punkt verwendet werden (2.7)
  • Die Str-Funktion liefert immer den Punkt als Dezimaltrennzeichen zurück, unabhängig von dem Gebietsschema
  • Positiven Zahlen werden mit einem führenden Leerzeichen versehen, welches bei negativen Zahlen das Minus-Zeichen aufnimmt
Debug.Print Str(12.34)      '  12.34 
Debug.Print Str(-12.34)     ' -12.34
CStr, Format
StrComp
Führt einen Sortierungsvergeleich von zwei Zeichenketten durch. Dabei werden folgende Ergebnisse zurückgegeben:
  • -1 wenn die erste Zeichenkette vor der zweiten einsortiert würde (Aachen vor Aal)
  • 0 wenn die Zeichenketten übereinstimmen
  • 1 wenn die erste Zeichenkette nach der zweiten einsortiert würde (Zander nach Xerxes) Zum Vergleich:
  • Großbuchstaben werden VOR Kleinbuchstaben einsortiert
  • Die Sortierung von Umlauten etc. erfolgt je nach Spracheinstellungen im Betriebssystem unterschiedlich
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 
StrConv
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!'
String()
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 
StrReverse
Kehrt die gesamte Zeichenfolge um.
Debug.Print StrReverse("Hallo!")     ' !ollaH 
Switch
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.
Bitte beachten: Damit der Aufruf der 'Switch'-Funktion besser lesbar ist, wurde dieser mithilfe des '_' auf mehrere Zeilen verteilt!

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
SYD
Wird zur Berechnung der arithmetisch-degressive Abschreibung verwendet.
Tab
Tan
Tangens-Funktion (erwartet Angabe des Winkels in Radianten, siehe Winkelfunktionen) Winkelfunktionen
Time
Gibt die aktuelle Uhrzeit zurück. Rechnen_mit_Datumswerten
Timer
Gibt die seit Mitternacht verstrichenen Sekunden zurück. Bei Windows als Dezimalzahl, auf dem MacIntosh als ganze Sekunden. Rechnen_mit_Datumswerten
TimeSerial
Errechnet eine Zeitangabe aus der angegebenen Stunde, Minute und Sekunde.
Debug.Print TimeSerial(23, 2, 12)        ' 23:02:12
Rechnen_mit_Datumswerten
TimeValue
Liest aus einer Datums- und Zeitangabe die Zeit aus.
Debug.Print TimeValue("2017-03-09 14:40:23")        ' 14:40:23
Rechnen_mit_Datumswerten
Trim
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
TypeName
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
UBound
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
UCase
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
Unload
Gibt einen mit Load geladenen Dialog (UserForm) wieder frei. UserForms
Unlock
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
Val
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
VarType
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
Weekday
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
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
Width
Gibt die Zeilenbreite beim Beschreiben einer Datei an. Hierzu gibt es erst einmal kein Beispiel, weil die angebotenen Beispiele nicht funktionieren. Arbeiten mit Dateien
Write
Schreibt eine einzelne Zeile in eine mit 'Open' geöffnete Datei. Arbeiten mit Dateien, Print
Year
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
As
Wird verwendet, um den Datentyp einer Variablen, einer Konstante oder einer Funktion (bzw. Property Get) anzugeben.
Dim strText As String 
Base
Boolean
Datentyp für boolesche Werte, welche nur die Werte 'Wahr' oder 'Falsch' ('True' oder 'False') aufnehmen können.
 Dim blnContinue As Boolean
 blnContinue = True 
Case
Const
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" 
Currency
Datentyp für Kommazahlen mit 15 Vorkomma- und 4 Nachkommastellen.
Dim curValue As Currency
curValue = 12345.6789
 
Declare
Deftype
Dim
Wird bei der Deklaration von Prozedurvariablen verwendet. Außerhalb einer Prozedur darf Dim nicht eingesetzt werden!
Dim strVariable As String 
Do
Wird im Zusammenhang mit der Do-Schleife verwendet.
Do
    lngIndex = lngIndex + 1
Loop While lngIndex < 7
Double
Datentyp für Kommazahlen.
Dim dblValue as Double
dblValue = 1.23456
Empty
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
End
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 Programmlaufs komplett abgebrochen! Dies bedeutet, dass wenn diese Prozedur von einer anderen Prozedur aufgerufen wurde, diese nicht wie bei 'Exit Sub' direkt zur aufrufenden Prozedur zurückkehrt, sondern alle Programmierung komplett und sofort beendet.

If lngValue = 0 Then
    lngValue = 3
End If

Select Case lngValue
    Case 2, 5, 8
        lngValue = lngValue + 3
    Case 3
        End     ' Beendet diesen gesamten Programmlauf sofort
End Select
Siehe Exit
Enum
Error
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 
Event
Exit
Verlässt unverzüglich die aktuelle Schleife oder Prozedur.
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub

Explicit
For
Leitet eine For-Schleife ein.
For lngIndex = 1 To 10
    Debug.Print lngIndex
Next lngIndex
Function
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
Get
GoSub
Goto
If
Leitet eine If-Abfrage ein.
 If varValue = Empty Then
     MsgBox "Variable enthält keinen Wert!"
 End If 
Is
Wird als Vergleichsoperator bei Objekten verwendet (statt '='). Außerdem erscheint 'Is' in 'Select Case'-Anweisungen, wenn dort ein Vergleichsoperator angegeben wird.
'Is' als Vergleichsoperator bei Objekten:
If myObject Is Nothing Then  MsgBox "Objekt konnte nicht erzeugt werden!"
End If
' If myObject = Nothing Then ... würde den Fehler 'Unzulässige Verwendung eines Objekts' erzeugen!
'Is' in Select-Case-Anweisung:
 Select Case 3
 Case 2
' Kein Operator, also kein 'Is'
 Case Is = 2
' Operator '=', also wird 'Is' verwendet
 Case Is < 2
' Operator '<', also wird 'Is' verwendet
 End Select

Anmerkung: In Select-Case-Anweisungen wird das 'Is' automatisch vom VBA-Editor eingesetzt, wenn dieser es für nötig befindet.

Implements
Integer
Let
Long
Me
New
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
Nothing
Null
On
Option
Private
Property
Public
RaiseEvent
Rem
Resume
Select
Set
Single
Static
String
Sub
Type
While
With