Anhang: Unterschied zwischen den Versionen

Aus VBA-wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== Add-Ins ==
== Add-Ins ==


=== Kurze Beschreibung ===
* Generell: [[Add-Ins]]
* Anwendungsspezifische Informationen:
** [[Word Add-Ins]]
** [[Excel Add-Ins]]
** [[PowerPoint Add-Ins]]


Die Office-Anwendungen Word, Excel und PowerPoint bieten zwei Möglichkeiten, zusätzliche Funktionalitäten mithilfe von VBA bereitzustellen: ;Als Datei (Dokument, Arbeitsmappe, Präsentation)
== Auto-Makros ==
* Bietet speziell auf einen Dokument/Tabellen/Präsentations-Typ zugeschnittene Funktionen an
 
* Diese stehen ausschließlich bei der Arbeit mit dieser Datei zur Verfügung
* [[Ereignisse#Auto-Makros|Ereignisse: Auto-Makros]]
* In Word stehen sie den auf einer Vorlage basierenden Dokumenten zur Verfügung ;Als Add-In
 
* Bietet speziell auf den Kunden zugeschnittene Funktionen an, welche auf eine Vielzahl von Dokument/Tabellen/Präsentations-Typen zutreffen
== Benennung ==
* Bietet erweiterte Funktionen an, welche dem Anwender / dem Kunden nützlich sind
 
* Steht in der Regel während der gesamten Laufzeit der Anwendung zur Verfügung
Die Benennung von VBA-Elementen (Variablen, Prozeduren, Module, Projekte) folgt diesen Regeln:
* Erlaubte Zeichen:
** Beliebige Buchstaben, Ziffern und '_'
** Auch Umlaute und Accents etc. sind erlaubt, werden jedoch nicht empfohlen!
** Name muss mit einem Buchstaben beginnen
* Erlaubte Länge:
** Generell: 255
** Name eines Moduls: 31 Für die Benennung von Variablen empfehlen wir die Leszynski Naming Convention (LNC) (siehe [https://en.wikipedia.org/wiki/Leszynski_naming_convention Wikipedia]). '''Datentypen'''
{| class="wikitable"
|-
! Präfix
! Datentyp
|-
| bln
| Boolescher Wert
|-
| bte
| Binärdaten (Byte)
|-
| col
| Auflistung (Collection)
|-
| cur
| Währung (Currency)
|-
| dbl
| Double
|-
| dte
| Datum
|-
| enm
| Enumerator
|-
| int
| Integer
|-
| obj
| Generisches Objekt
|-
| sng
| Single
|-
| str
| Zeichenkette (String)
|-
| tpe
| Benutzerdefinierter Datentyp (Type)
|}
'''VBA-Objekte'''
{| class="wikitable"
|-
! Präfix
! Objekt
|-
| cls
| Klasse
|-  
| frm
| UserForm (Dialog)
|-
| mod
| Modul
|}
'''Controls der UserForm'''
{| class="wikitable"
|-
! Präfix
! Objekt
|-
| chk
| Kontrollkästchen (Checkbox)
|-
| cbo
| Kombinationsfeld (ComboBox)
|-
| cmb
| Befehlsschaltfläche (CommandButton)
|-
| lbl
| Beschriftungsfeld (Label)
|-
| lst
| Listenfeld (ListBox)
|-
| mpg
| Multiseite (MultiPage)
|-
| opt
| Optionsfeld
|-
| pge
| Seite einer Multiseite (Page)
|-
| scr
| Bildlaufleiste (ScrollBar)
|-
| txt
| Textfeld (TextBox)
|}
'''Anwendungs-Objekte'''
{| class="wikitable"
|-
! Präfix
! Objekt
|-
| bkm
| Textmarke (BookMark)
|-
| doc
| Dokument
|-
| fld
| (Formular-)Feld
|-
| rng
| Bereich (Range)
|-
| shp
| Form (Shape)
|-  
| sld
| Folie (Slide)
|-
| tbl
| Tabelle
|-
| wkb
| Arbeitsmappe (WorkBook)
|-
| wks
| Arbeitsblatt (WorkSheet)
|}
 
 
== Call ==
 
* Das Schlüsselwort <code>Call</code> kann vor Prozeduraufrufen angegeben werden.
* Wenn Sie <code>Call</code> verwenden, müssen Sie Parameter in Klammern angeben!
* Dieses Schlüsselwort kann bei Aufrufen an die API oder an DLLs benötigt werden, bei Aufrufen innerhalb der eigenen Projekte ist es nicht nötig und sollte hier nicht eingesetzt werden. Call SetWindowPos(lnghWnd, HWND_TOPMOST, 0, 0, 0, 0, flags) ' API-Aufruf Call MsgBox("Hallo") ' Überflüssige Verwendung
 
== Ereignisse ==
 
* [[Ereignisse]]
 
=== Auto-Makros ===


=== Weiterführende Informationen ===
* [[Ereignisse#Auto-Makros|Ereignisse: Auto-Makros]]


Die Office Anwendungen unterscheiden sich allerdings in der Art und Weise, wie Add-Ins erstellt, eingebunden, bearbeitet und gespeichert werden:
=== Anwendungsereignisse ===
* [[Word Add-Ins]]
* [[Excel Add-Ins]]
* [[PowerPoint Add-Ins]]


== Auto-Makros ==
Siehe [[Ereignisse#Anwendungsereignisse|Ereignisse]]


Auto-Makros sind eine sehr rudimentärer Weg, auf bestimmte Ereignisse der Office-Anwendung zuzugreifen. Sie stehen in den drei Anwendungen Word, Excel und PowerPoint zur Verfügung, unterscheiden sich jedoch teilweise in Schreibweise und Einsatzgebiet.
== Makro ==


=== Word ===
=== Word ===


{| class="wikitable"
'''Bitte beachten:''' Makros niemals in der globalen Vorlage 'Normal.dot(x)' speichern!
! style="text-align:left;" | Name
 
! style="text-align:left;" | Beschreibung
== Option Explicit ==
! style="text-align:left;" | Anwendungsbereich
 
|- style="vertical-align:top;"
Kompilier-Anweisung, welche dafür sorgt, dass alle verwendeten Variablen ausdrücklich deklariert werden, sonst erscheint die Fehlermeldung: [[Fehlermeldungen#Variable nicht definiert|Fehler beim Kompilieren: Variable nicht definiert]]. Dies führt unter anderem dazu, dass bei der Ausführung des Codes auf Fehlschreibweisen von Variablennamen hingewiesen wird. Wenn Sie diese Einstellung nicht vornehmen, wird folgender Schreibfehler übergangen und ein falscher Wert wird ausgegeben: Sub Test() Dim lngVariable As Long lngVariable
| AutoNew
 
| Wird ausgeführt, wenn
= 3 ' Wert von lngVariable =
* von dieser Vorlage ein neues Dokument erzeugt wird
 
| Vorlagen
3 lngVarable
|- style="vertical-align:top;"
 
| AutoOpen
= lngVariable + 2 ' Wert der falsch geschriebenen Variable lngVarable =
| Wird ausgeführt, wenn
 
* dieses Dokument
5 ' Wert von lngVariable weiterhin 3 MsgbOx lngVariable ' Ausgegeben wird der Wert 3! End Sub Diese Compiler-Anweisung erscheint automatisch an erster Stelle in neu erstellten Modulen, wenn Sie im VBA-Editor unter ''Extras'', ''Optionen...'', ''Editor'' die Option ''Variablendeklaration erforderlich'' gewählt haben. Die Anweisung kann auch nachträglich vorgenommen werden: Option Explicit
* Diese Vorlage geöffnet wird
| Vorlagen<br>Dokumente
|- style="vertical-align:top;"
| AutoClose
| Wird ausgeführt, wenn
* dieses Dokument
* Diese Vorlage geschlossen wird
| Vorlagen<br>Dokumente
|- style="vertical-align:top;"
| AutoExec
| Wird ausgeführt, wenn
* Word gestartet bzw.
* das Add-In geladen wird
| Ausschließlich Add-Ins und Normal.dot(m)
|- style="vertical-align:top;"
| AutoExit
| Wird ausgeführt, wenn
* Word beendet bzw.
* das Add-In entladen wird
| Ausschließlich Add-Ins und Normal.dot(m)
|}


=== Excel ===
== Option Compare ==


{| class="wikitable"
* [[Kontrollstrukturen#Option Compare|Siehe Kontrollstrukturen: Option Compare]]
! style="text-align:left;" | Name
! style="text-align:left;" | Beschreibung
! style="text-align:left;" | Anwendungsbereich
|- style="vertical-align:top;"
| Auto_Open
| Wird ausgeführt, wenn
* Diese Arbeitsmappe / diese Vorlage geöffnet wird
* dieses Add-In geladen bzw. Excel gestartet wird
| Vorlagen<br>Arbeitsmappen<br>Add-Ins
|- style="vertical-align:top;"
| Auto_Close
| Wird ausgeführt, wenn
* Diese Arbeitsmappe / diese Vorlage geschlossen wird
* dieses Add-In entladen bzw. Excel beendet wird
| Vorlagen<br>Arbeitsmappen<br>Add-Ins
|}


=== PowerPoint ===
== Tastenkürzel ==


In PowerPoint stehen die Auto-Makros ausschließlich in Add-Ins zur Verfügung. Wenn Sie auch in einer Präsentation einen Weg benötigen, um beim Starten / Laden etwas auszuführen (um zum Beispiel auf Ereignisse zuzugreifen), können Sie (ab PowerPoint 2007) alternativ ein (leeres) Ribbon erzeugen und dessen 'onLoad'-Callback einsetzen.
{| class="wikitable"
{| class="wikitable"
! style="text-align:left;" | Name
! style="text-align:left;" | Tastenkürzel
! style="text-align:left;" | Beschreibung
! style="text-align:left;" | Arbeitsschritt / Funktion
! style="text-align:left;" | Anwendungsbereich
|-  
|- style="vertical-align:top;"
| F1
| Auto_Open
| Kontextsensitive Hilfe
| Wird ausgeführt, wenn
|-  
* dieses Add-In geladen bzw. PowerPoint gestartet wird
| STRG+Z
| Ausschließlich in Add-Ins
| Letzten Schritt rückgängig machen
|- style="vertical-align:top;"
|-  
| Auto_Close
| STRG+Y
| Wird ausgeführt, wenn
| Letzten Schritt wiederholen
* dieses Add-In entladen bzw. PowerPoint beendet wird
|-  
| Ausschließlich in Add-Ins
| STRG+S
| Projekt speichern (speichert entsprechende Anwendungs-Datei) (außer PowerPoint Add-Ins)
|-  
| STRG+F
| Suchen
|-
| F3
| Weitersuchen (bei geschlossenem Suchen-Dialog)
|-
| SHIFT+F3
| Rückwärts weitersuchen (bei geschlossenem Suchen-Dialog)
|-
| STRG+H
| Suchen und Ersetzen
|-
| TAB
| Markierte Zeile(n) Einzug vergrößern
|-
| SHIFT+TAB
| Markierte Zeile(n) Einzug verkleinern
|-  
| STRG+LEERTASTE<br>oder<br>LEERTASTE
| Befehl vervollständigen, Optionen und Parameter einblenden
|-
| STRG+I
| Quickinfo
|-
| F5
| Code ausführen
|-
| F8
| In Einzelschritt ausführen (springt in Unterprozedur)
|-  
| SHIFT+F8
| In Einzelschritt ausführen (überspringt Unterprozedur)
|-
| STRG+SHIFT+F8
| Ausführen, diese Prozedur verlassen
|-
| SHIFT+F9
| Aktuellen Wert (während der schrittweisen Ausführung) anzeigen
|-
| STRG+L
| Aufrufeliste (während der schrittweisen Ausführung) anzeigen
|-
| F9
| Haltepunkt ein/aus
|-
| STRG+SHIFT+F9
| Alle Haltepunkte ausschalten
|-
| STRG+SHIFT+PAUSE
| Ausführung unterbrechen
|-
| SHIFT+F2
| Definition aufrufen (springt z. B. in Definition der gewählten Variable) (nur bei selbst definierten Elementen möglich)
|-
| STRG+SHIFT+F2
| Zur letzten Stelle im Code zurückspringen
|-
| STRG+R
| Projektexplorer aktivieren
|-
| STRG+G
| Direktfenster anzeigen/aktivieren
|-
| ALT+F11
| VBA-Editor aufrufen/zur Anwendung wechseln
|-
| F7
| Code des Formulars anzeigen
|-
| F4
| Eigenschaftenfenster anzeigen/aktivieren
|-
| F2
| Objektexplorer aufrufen
|-
| STRG+PFEILOBEN
| Zur vorherigen Prozedur im Modul springen
|-
| STRG+PFEILUNTEN
| Zur nächsten Prozedur im Modul springen
|}
|}


== Ereignisse ==
=== Ereignisklasse === 1. Deklarieren Sie eine Objektvariable, welche die Anwendung entgegennehmen soll, deren Ereignisse Sie empfangen möchten. Beachten Sie dabei das Schlüsselwort '''WithEvents''': Private '''WithEvents''' myEvents As Application 2. Initialisieren Sie diese Variable bei der Initialisierung der Klasse. Private Sub Class_Initialize() Set myEvents = Application End Sub 3. Nun steht Ihnen eine Liste der Add-Ins bereit:
* Setzen Sie die Auswahl 'Objekt' auf 'myEvents'
* Wählen Sie in der Liste 'Prozedur' das gewünschte Ereignis '''Bitte beachten:''' Verwenden Sie immer die Prozedur-Liste, um ein neues Ereignis hinzuzufügen, weil viele Ereignisse Übergabeparameter verwenden.


=== Ereignisprozedur ===
== Zeichentabelle ==


1. Deklarieren Sie eine Objektvariable, welche die Ereignisklasse entgegennimmt. Da der Zugriff auf die Ereignisse permanent sein soll, verwenden Sie eine Modulvariable: Private myEvents As clsEvents 2. Erstellen Sie eine Prozedur, welche die Ereignisklasse instanziiert. Hierfür eignet sich das passende [[#Auto-Makros|Auto-Makro]], welches beim Starten bzw. Öffnen ausgeführt wird.
Eine ausführliche Tabelle insbesondere der Sonderzeichen finden Sie [[Zeichentabelle|hier]]

Version vom 23. November 2017, 10:12 Uhr

Add-Ins

Auto-Makros

Benennung

Die Benennung von VBA-Elementen (Variablen, Prozeduren, Module, Projekte) folgt diesen Regeln:

  • Erlaubte Zeichen:
    • Beliebige Buchstaben, Ziffern und '_'
    • Auch Umlaute und Accents etc. sind erlaubt, werden jedoch nicht empfohlen!
    • Name muss mit einem Buchstaben beginnen
  • Erlaubte Länge:
    • Generell: 255
    • Name eines Moduls: 31 Für die Benennung von Variablen empfehlen wir die Leszynski Naming Convention (LNC) (siehe Wikipedia). Datentypen
Präfix Datentyp
bln Boolescher Wert
bte Binärdaten (Byte)
col Auflistung (Collection)
cur Währung (Currency)
dbl Double
dte Datum
enm Enumerator
int Integer
obj Generisches Objekt
sng Single
str Zeichenkette (String)
tpe Benutzerdefinierter Datentyp (Type)
VBA-Objekte
Präfix Objekt
cls Klasse
frm UserForm (Dialog)
mod Modul
Controls der UserForm
Präfix Objekt
chk Kontrollkästchen (Checkbox)
cbo Kombinationsfeld (ComboBox)
cmb Befehlsschaltfläche (CommandButton)
lbl Beschriftungsfeld (Label)
lst Listenfeld (ListBox)
mpg Multiseite (MultiPage)
opt Optionsfeld
pge Seite einer Multiseite (Page)
scr Bildlaufleiste (ScrollBar)
txt Textfeld (TextBox)
Anwendungs-Objekte
Präfix Objekt
bkm Textmarke (BookMark)
doc Dokument
fld (Formular-)Feld
rng Bereich (Range)
shp Form (Shape)
sld Folie (Slide)
tbl Tabelle
wkb Arbeitsmappe (WorkBook)
wks Arbeitsblatt (WorkSheet)


Call

  • Das Schlüsselwort Call kann vor Prozeduraufrufen angegeben werden.
  • Wenn Sie Call verwenden, müssen Sie Parameter in Klammern angeben!
  • Dieses Schlüsselwort kann bei Aufrufen an die API oder an DLLs benötigt werden, bei Aufrufen innerhalb der eigenen Projekte ist es nicht nötig und sollte hier nicht eingesetzt werden. Call SetWindowPos(lnghWnd, HWND_TOPMOST, 0, 0, 0, 0, flags) ' API-Aufruf Call MsgBox("Hallo") ' Überflüssige Verwendung

Ereignisse

Auto-Makros

Anwendungsereignisse

Siehe Ereignisse

Makro

Word

Bitte beachten: Makros niemals in der globalen Vorlage 'Normal.dot(x)' speichern!

Option Explicit

Kompilier-Anweisung, welche dafür sorgt, dass alle verwendeten Variablen ausdrücklich deklariert werden, sonst erscheint die Fehlermeldung: Fehler beim Kompilieren: Variable nicht definiert. Dies führt unter anderem dazu, dass bei der Ausführung des Codes auf Fehlschreibweisen von Variablennamen hingewiesen wird. Wenn Sie diese Einstellung nicht vornehmen, wird folgender Schreibfehler übergangen und ein falscher Wert wird ausgegeben: Sub Test() Dim lngVariable As Long lngVariable

3 ' Wert von lngVariable

3 lngVarable

lngVariable + 2 ' Wert der falsch geschriebenen Variable lngVarable

5 ' Wert von lngVariable weiterhin 3 MsgbOx lngVariable ' Ausgegeben wird der Wert 3! End Sub Diese Compiler-Anweisung erscheint automatisch an erster Stelle in neu erstellten Modulen, wenn Sie im VBA-Editor unter Extras, Optionen..., Editor die Option Variablendeklaration erforderlich gewählt haben. Die Anweisung kann auch nachträglich vorgenommen werden: Option Explicit

Option Compare

Tastenkürzel

Tastenkürzel Arbeitsschritt / Funktion
F1 Kontextsensitive Hilfe
STRG+Z Letzten Schritt rückgängig machen
STRG+Y Letzten Schritt wiederholen
STRG+S Projekt speichern (speichert entsprechende Anwendungs-Datei) (außer PowerPoint Add-Ins)
STRG+F Suchen
F3 Weitersuchen (bei geschlossenem Suchen-Dialog)
SHIFT+F3 Rückwärts weitersuchen (bei geschlossenem Suchen-Dialog)
STRG+H Suchen und Ersetzen
TAB Markierte Zeile(n) Einzug vergrößern
SHIFT+TAB Markierte Zeile(n) Einzug verkleinern
STRG+LEERTASTE
oder
LEERTASTE
Befehl vervollständigen, Optionen und Parameter einblenden
STRG+I Quickinfo
F5 Code ausführen
F8 In Einzelschritt ausführen (springt in Unterprozedur)
SHIFT+F8 In Einzelschritt ausführen (überspringt Unterprozedur)
STRG+SHIFT+F8 Ausführen, diese Prozedur verlassen
SHIFT+F9 Aktuellen Wert (während der schrittweisen Ausführung) anzeigen
STRG+L Aufrufeliste (während der schrittweisen Ausführung) anzeigen
F9 Haltepunkt ein/aus
STRG+SHIFT+F9 Alle Haltepunkte ausschalten
STRG+SHIFT+PAUSE Ausführung unterbrechen
SHIFT+F2 Definition aufrufen (springt z. B. in Definition der gewählten Variable) (nur bei selbst definierten Elementen möglich)
STRG+SHIFT+F2 Zur letzten Stelle im Code zurückspringen
STRG+R Projektexplorer aktivieren
STRG+G Direktfenster anzeigen/aktivieren
ALT+F11 VBA-Editor aufrufen/zur Anwendung wechseln
F7 Code des Formulars anzeigen
F4 Eigenschaftenfenster anzeigen/aktivieren
F2 Objektexplorer aufrufen
STRG+PFEILOBEN Zur vorherigen Prozedur im Modul springen
STRG+PFEILUNTEN Zur nächsten Prozedur im Modul springen


Zeichentabelle

Eine ausführliche Tabelle insbesondere der Sonderzeichen finden Sie hier