63
Leseprobe Thomas Theis bringt Ihnen anschaulich VBA für Excel bei. Über- zeugen Sie sich selbst mit der Einführung und den ersten Schritten der VBA-Programmierung. Außerdem erhalten Sie das vollständige Inhalts- und Stichwortverzeichnis des Buchs. Thomas Theis Einstieg in VBA mit Excel 455 Seiten, broschiert, 4. Auflage 2015 19,90 Euro, ISBN 978-3-8362-3962-2 www.rheinwerk-verlag.de/4015 »Einführung« »Grundlagen von Objekten und Ereignissen« Inhaltsverzeichnis Index Der Autor Leseprobe weiterempfehlen Wissen, wie’s geht.

Einstieg in VBA mit Excel - s3-eu-west-1.amazonaws.com · Leseprobe Thomas Theis bringt Ihnen anschaulich VBA für Excel bei. Über-zeugen Sie sich selbst mit der Einführung und

Embed Size (px)

Citation preview

LeseprobeThomas Theis bringt Ihnen anschaulich VBA für Excel bei. Über-zeugen Sie sich selbst mit der Einführung und den ersten Schritten der VBA-Programmierung. Außerdem erhalten Sie das vollständige Inhalts- und Stichwortverzeichnis des Buchs.

Thomas Theis

Einstieg in VBA mit Excel455 Seiten, broschiert, 4. Auflage 2015 19,90 Euro, ISBN 978-3-8362-3962-2

www.rheinwerk-verlag.de/4015

»Einführung« »Grundlagen von Objekten und Ereignissen«

Inhaltsverzeichnis

Index

Der Autor

Leseprobe weiterempfehlen

Wissen, wie’s geht.

17

1Kapitel 1

Einführung

In diesem Kapitel lernen Sie erste VBA-Makros kennen. Sie erfahren, wie sie

aufgebaut sind und wie Sie sie verändern können. Außerdem wird die VBA-

Entwicklungsumgebung erläutert.

VBADie Abkürzung VBA steht für Visual Basic for Applications. Es handelt sich

dabei um die Programmiersprache Visual Basic, mit speziellen Ergänzun-

gen für die verschiedenen Anwendungen in Microsoft Office.

Mit Microsoft Excel können sehr viele alltägliche Aufgaben im beruflichen

und privaten Bereich bereits gut bewältigt werden. Es gibt jedoch:

� Aufgaben, die Sie nur durch zusätzliche Programmierung mit VBA lösen

können

� Probleme, die durch zusätzliche Programmierung mit VBA schneller

gelöst werden können

In diesem Buch werden Sie anhand von leicht verständlichen Beispielen

erlernen, wie Sie VBA als Ergänzung zu Excel sinnvoll einsetzen. Eigene

Übungen (mit Lösungen im Anhang) dienen dazu, Ihren Wissensstand zu

testen.

Für die Hilfe bei der Erstellung dieses Buches bedanke ich mich beim gan-

zen Team vom Rheinwerk Verlag, ganz besonders bei Anne Scheibe.

1.1 Was wird besser durch Makros und VBA?

MakroEin einfaches Makro ist nur eine Reihe von Anweisungen, die nacheinan-

der ausgeführt werden. Durch eine solche Anweisung wird in Excel ein

bestimmter Vorgang ausgeführt, z. B. eine Zahl in eine Tabellenzelle

geschrieben. Die Anweisungen sind in der Sprache VBA geschrieben. VBA-

Programme können über einfache Makros weit hinausgehen und kom-

plexe Abläufe steuern.

3962.book Seite 17 Dienstag, 24. November 2015 3:53 15

1 Einführung

18

In der Praxis sieht es häufig so aus, dass es zwei Gruppen von Anwendern

gibt:

Entwickler � Entwickler, also erfahrene Excel-Anwender, die sich mit der Entwicklung

von komplexen Excel-Anwendungen befassen

Benutzer � Benutzer, also Einsteiger in Excel, die sich nur mit einfachen Themen, z. B.

der Dateneingabe und dem Aufruf der Excel-Anwendungen, befassen

Die Entwickler sind im Auftrag der Benutzer tätig. Die Entwicklung kann in

einer anderen Abteilung desselben Unternehmens stattfinden. Es kann

sich aber auch um extern entwickelte, d. h. eingekaufte Excel-Anwendun-

gen handeln.

Schneller Eine schnellere Problemlösung durch VBA ergibt sich:

� weil der Entwickler durch die Programmierung mit VBA schneller mit

der Entwicklung seiner Excel-Anwendung fertig sein kann

� weil die Ergebnisse für den Benutzer schneller berechnet werden können

Es folgen einige typische Szenarien, die Ihnen zeigen sollen, wozu Sie VBA

nutzen können und welche Vorteile sich daraus ergeben:

Große

Datenmengen

� Es sollen große Mengen an Daten aus einer Textdatei eingelesen werden.

Nur der Aufbau der Daten ist bekannt, nicht aber die Menge. Außerdem

sollen, abhängig vom aktuellen Inhalt der Textdatei, nur bestimmte

Daten gelesen werden. Nach dem Einlesen sollen die Daten verarbeitet,

formatiert, zusammengefasst und zur Verdeutlichung grafisch darge-

stellt werden.

Diagramme � Es soll ein Diagramm aus einer Tabelle erstellt werden. Die aktuelle

Größe und der Inhalt der Tabelle sollen die Art des Diagramms und

seine Darstellung bestimmen.

Dialogfelder � Benutzer sollen nach dem Aufrufen der Excel-Anwendung ein Dialog-

feld vor sich haben. Darin nehmen sie, abhängig von der aktuellen Situ-

ation, bestimmte Einstellungen vor, treffen die gewünschte Auswahl der

Daten und starten dann deren weitere Verarbeitung.

Wiederkehrende

Daten

� Es ergeben sich regelmäßig (z. B. jede Woche oder jeden Monat) Daten,

die auf ähnliche (nicht identische) Art und Weise weiterverarbeitet wer-

den müssen.

Schrittweise

Bearbeitung

� Die Verarbeitung bestimmter Daten ist komplex und muss in mehreren

Schritten erfolgen. Mit VBA können Sie die Koordination und die Durch-

führung der einzelnen Schritte vereinfachen.

3962.book Seite 18 Dienstag, 24. November 2015 3:53 15

1.2 MS Office 2016

19

1Excel anpassen� Benutzern sollen nach dem Aufrufen von Excel nur bestimmte Funktio-

nalitäten zur Verfügung stehen. Ihr Excel kann durch VBA gleichzeitig:

– eingeschränkt werden, wodurch es im Idealfall zu weniger Fehlbedie-

nungen kommt

– erweitert werden, wodurch ihnen spezielle Funktionen und Abläufe

zur Verfügung stehen, die über Excel hinausgehen

Anwendungen

erweitern

� Es sollen vorhandene (von anderen Entwicklern im Unternehmen

erstellte oder eingekaufte) Excel-Anwendungen geändert werden. Diese

werden zur Bewältigung der laufenden Geschäftsprozesse bereits regel-

mäßig eingesetzt. Da sich diese Prozesse geändert haben, müssen die

Excel-Anwendungen ebensfalls erweitert und angepasst werden.

In diesem Buch sollen verschiedene Möglichkeiten zur Problemlösung mit

VBA anhand von Beispielen aus der Praxis gezeigt werden. Es erhebt nicht

den Anspruch, alle Bestandteile von VBA (also alle Objekte der Objektbib-

liothek mit all ihren Eigenschaften und Methoden) aufzulisten und zu

erläutern. Dazu gibt es zu viele, und Sie würden schnell den Überblick ver-

lieren. Es wird jedoch eine umfangreiche Auswahl getroffen, die es Ihnen

ermöglicht, selbstständig mit VBA zu arbeiten.

Verständliche

Beispiele

Bei den Beispielen im Buch wird eher Wert auf Verständlichkeit als auf

Komplexität gelegt. Sie sollen schnell den aktuell neuen Aspekt der Pro-

grammierung verstehen und nicht durch umfangreiche, komplizierte Bei-

spiele verwirrt werden, in denen sich nur wenig Neues für Sie verbirgt.

1.2 MS Office 2016

Das Paket MS Office 2016 setzt als Betriebssystem mindestens Windows 7

voraus. Für dieses Buch und die darin gezeigten Abbildungen wurde

MS Office 2016 unter Windows 10 eingesetzt.

MS Office 2016-Dateien können mit Web-Apps aus dem Office Store erwei-

tert werden. Diese Web-Apps haben Zugriff auf die Daten innerhalb einer

Office-Datei. Entwickler können diese Web-Apps mithilfe von Webtechni-

ken (HTML, JavaScript, jQuery, CSS …) programmieren und im Office Store

anbieten. In diesem Buch wird nur die Entwicklung von Anwendungen

mithilfe von VBA beschrieben.

3962.book Seite 19 Dienstag, 24. November 2015 3:53 15

1 Einführung

20

1.3 Mit Makros arbeiten

Zu Beginn erstellen wir ein einfaches Makro. Dieses Makro soll anschlie-

ßend ausgeführt werden. Hinterher betrachten wir den Code, um einen

ersten Blick auf VBA werfen zu können.

Schädliche Makros Das Thema Makrosicherheit, also die Sicherheit vor fremden Makros, die

schädlichen Code enthalten können, spielt eine große Rolle. Diese Thema-

tik wird in Abschnitt 1.3.5, »Makrosicherheit ändern«, erläutert.

Excel-Dateien können seit Excel 2007 sowohl mit als auch ohne Makros

gespeichert werden. Darauf wird in Abschnitt 1.3.4, »Makro speichern«, ein-

gegangen.

Die in diesem Kapitel erläuterte Bedienung gilt für Excel 2016. Unter Excel

2013, Excel 2010 bzw. Excel 2007 gibt es jeweils leichte Abweichungen in

der Bedienung, darauf wird an den entsprechenden Stellen jeweils geson-

dert hingewiesen. In den Programmversionen vor Excel 2007 gibt es grö-

ßere Abweichungen in der Bedienung, die in einem eigenen Abschnitt

erläutert werden, nämlich in Abschnitt 1.10, »Mit Versionen vor Excel 2007

arbeiten«.

Die meisten Beispiele in diesem Buch laufen auch unter den älteren Excel-

Versionen. Falls einzelne Beispiele anders oder gar nicht funktionieren,

wird dies an der betreffenden Stelle erläutert. Sämtliche Beispiele finden

Sie – getrennt für die Versionen vor und ab Excel 2007 – auch im Down-

loadpaket zum Buch, das Sie über www.rheinwerk-verlag.de/4015 erreichen.

1.3.1 Makro aufzeichnen

Mithilfe der folgenden Beschreibung erstellen Sie ein Makro, um den Inhalt

von Zelle A1 nach Zelle C1 zu verschieben. Dazu benötigen Sie natürlich

kein VBA. Es dient aber der ersten Verdeutlichung der Abläufe:

Makro erstellen 1. Starten Sie Excel 2016.

2. Sie haben eine leere Arbeitsmappe (Mappe1) vor sich. Tragen Sie in Zelle

A1 einen beliebigen Inhalt (Zahl oder Text) ein (siehe Abbildung 1.1).

3. Betätigen Sie auf der Registerkarte Ansicht den unteren Teil der Schalt-

fläche Makros, der mit einem Pfeil gekennzeichnet ist. Es klappt ein

kleines Untermenü auf.

3962.book Seite 20 Dienstag, 24. November 2015 3:53 15

1.3 Mit Makros arbeiten

21

1

Abbildung 1.1 Zelle, deren Inhalt verschoben werden soll

4. Wählen Sie den Menüpunkt Makro aufzeichnen. Es erscheint das

Dialogfeld Makro aufzeichnen (siehe Abbildung 1.2).

Abbildung 1.2 Makro mit dem Namen »Makro1«

5. Der vorgeschlagene Makroname lautet Makro1. Diesen können Sie bei-

behalten.

6. Betätigen Sie die Schaltfläche OK. Ab jetzt werden alle Aktionen, die Sie

ausführen, aufgezeichnet.

7. Wählen Sie Zelle A1 aus.

8. Schneiden Sie den Inhalt von Zelle A1 aus.

9. Wählen Sie die Zelle C1 aus.

10. Fügen Sie den Inhalt von Zelle A1 ein.

3962.book Seite 21 Dienstag, 24. November 2015 3:53 15

1 Einführung

22

Aufzeichnung

beginnt

11. Der Inhalt von Zelle A1 wurde nach Zelle C1 verschoben (siehe Abbil-

dung 1.3).

12. Klappen Sie in der Registerkarte Ansicht wiederum über den Pfeil auf

der Schaltfläche Makros das Menü auf.

13. Wählen Sie den Menüpunkt Aufzeichnung beenden. Damit wird die

Aufzeichnung Ihrer Aktionen beendet.

14. Hinweis: Speichern Sie die Datei an dieser Stelle noch nicht.

Sie haben damit soeben Ihr erstes Makro erfolgreich erstellt.

Abbildung 1.3 Zellen nach der Verschiebung

Symbol zum

Aufzeichnen

Das Aufzeichnen geht etwas schneller, wenn Sie in der Excel-Oberfläche das

entsprechende Symbol in der Statusleiste betätigen (siehe Abbildung 1.4).

Abbildung 1.4 Symbol zum Starten einer Makro-Aufzeichnung

Nach Beginn der Aufzeichnung erscheint an der gleichen Stelle das Symbol

zum Beenden der Aufzeichnung in der Statusleiste (siehe Abbildung 1.5).

Abbildung 1.5 Symbol zum Beenden einer Makro-Aufzeichnung

3962.book Seite 22 Dienstag, 24. November 2015 3:53 15

1.3 Mit Makros arbeiten

23

1Übung 1 A

Tragen Sie eine Zahl oder einen Text in Zelle E3 ein. Zeichnen Sie ein Makro

auf, das den Inhalt der Zelle E3 nach Zelle E5 kopiert. Nennen Sie das

Makro KopieE3E5.

1.3.2 Makro ausführen

Makro startenDas soeben erstellte Makro soll nun ausgeführt werden. Gehen Sie dazu wie

folgt vor:

1. Tragen Sie in Zelle A1 einen beliebigen Inhalt ein (Zahl oder Text).

2. Klappen Sie auf der Registerkarte Ansicht über den Pfeil unten auf der

Schaltfläche Makros das Menü auf.

3. Wählen Sie den Menüpunkt Makros anzeigen.

4. Es erscheint das Dialogfeld Makro mit einer Liste der bisher erstellten

Makros. Wählen Sie in der Liste das Makro Makro1 aus.

5. Betätigen Sie die Schaltfläche Ausführen.

6. Der Inhalt der Zelle A1 wurde wiederum nach C1 verschoben.

Damit haben Sie Ihr erstes Makro erfolgreich ausgeführt.

Übung 1 B

Tragen Sie einen neuen Inhalt in Zelle E3 ein. Führen Sie das Makro

KopieE3E5 aus, und überprüfen Sie anhand des Ergebnisses die korrekte

Umsetzung.

Hinweis

Name des MakrosEin Makro sollte einen möglichst sprechenden Namen haben, der etwas

über seine Arbeitsweise aussagt. Es kann dann leichter in der Liste der

Makros gefunden und ausgewählt werden.

1.3.3 Makro ansehen

VBA-CodeSie können sich den VBA-Code des soeben erstellten Makros ansehen, um

einen ersten Eindruck von typischem VBA zu erhalten. Gehen Sie dazu wie

folgt vor:

3962.book Seite 23 Dienstag, 24. November 2015 3:53 15

1 Einführung

24

1. Klappen Sie in der Registerkarte Ansicht über den Pfeil auf der Schalt-

fläche Makros das Menü auf.

2. Wählen Sie den Menüpunkt Makros anzeigen.

3. Es erscheint das Dialogfeld Makro mit einer Liste der bisher erstellten

Makros. Wählen Sie in der Liste das Makro Makro1 aus.

4. Betätigen Sie die Schaltfläche Bearbeiten.

Visual Basic Editor Es erscheint der Visual Basic Editor (kurz: VBE), die eigentliche Entwick-

lungsumgebung. Auf seine einzelnen Elemente wird in Abschnitt 1.4,

»Visual Basic Editor (VBE) als Entwicklungsumgebung«, eingegangen.

Zunächst ist im rechten Fenster der Code des Makros zu sehen (siehe Abbil-

dung 1.6).

Abbildung 1.6 VBA-Code des Makros »Makro1«

Es folgt eine kurze Erläuterung der einzelnen Zeilen. Es macht nichts, wenn

Sie noch nicht alles genau verstehen. Die einzelnen Code-Elemente werden

später ausführlicher erläutert:

Sub … End Sub � Der Code des Makros Makro1 ist innerhalb einer Sub-Prozedur zwischen

Sub und End Sub notiert. Nach dem Namen eines Makros bzw. einer Sub-

Prozedur werden Klammern notiert, die zunächst leer sind. Ihre Bedeu-

tung wird später erläutert.

Kommentar � Ein Apostroph dient dazu, eine ganze Zeile bzw. den Rest einer Zeile zu

einem Kommentar zu machen. Der Text hinter einem Apostroph dient

nur der Erläuterung des VBA-Codes. Er wird nicht ausgeführt.

� Range("A1").Select bedeutet: Es wird die Zelle A1 ausgewählt.

3962.book Seite 24 Dienstag, 24. November 2015 3:53 15

1.3 Mit Makros arbeiten

25

1Cut� Selection.Cut bedeutet: Der Inhalt der aktuellen Auswahl, also der

Inhalt der Zelle A1, wird ausgeschnitten und befindet sich anschließend

in der Zwischenablage.

� Range("C1").Select bedeutet: Die Zelle C1 wird ausgewählt, siehe oben.

Paste� ActiveSheet.Paste bedeutet: Der Inhalt der Zwischenablage wird in das

aktuell aktive Tabellenblatt eingefügt.

Der Inhalt der Zelle A1 wurde nach C1 verschoben.

Übung 1 C

Interpretieren Sie den VBA-Code des Makros KopieE3E5():

Sub KopieE3E5()Range("E3").SelectSelection.CopyRange("E5").SelectActiveSheet.Paste

End Sub

Dieses Makro finden Sie in Mappe1.xlsm, Modul 2.

Schließen Sie den VBE über das Menü Datei • Schliessen und zurück zu

Microsoft Excel. Es erscheint die Excel-Oberfläche.

1.3.4 Makro speichern

Excel-Dateien können seit Excel 2007 sowohl mit Makros als auch ohne

Makros gespeichert werden.

Dateiendung

».xlsx«

Rufen Sie in Excel 2016 das Menü Datei auf und darin den Menüpunkt

Speichern. Auf der rechten Seite wählen Sie die Schaltfläche Durchsu-

chen. Es erscheint das Dialogfeld Speichern unter.

In Excel 2013 wählen Sie dazu auf der rechten Seite nacheinander die

Schaltflächen Computer und Durchsuchen. In Excel 2010 erscheint das

Dialogfeld Speichern unter direkt nach Auswahl des Menüpunktes Spei-

chern im Menü Datei. In Excel 2007 erscheint das Dialogfeld Speichern

unter nach Auswahl der Schaltfläche Office und des Menüpunktes Spei-

chern.

Als Dateityp ist im Dialogfeld Speichern unter angegeben: Excel-

Arbeitsmappe mit der Dateiendung .xlsx (siehe Abbildung 1.7).

3962.book Seite 25 Dienstag, 24. November 2015 3:53 15

1 Einführung

26

Abbildung 1.7 Als Arbeitsmappe ohne Makros speichern

Falls Sie nun die Schaltfläche Speichern betätigen, erscheint der Hinweis,

dass die in dieser Datei enthaltenen Makros bei diesem Dateityp nicht mit-

gespeichert werden (siehe Abbildung 1.8), also verloren gehen.

Abbildung 1.8 Warnung, dass Makros nicht mitgespeichert werden

Dateiendung

».xlsm«

Zur Speicherung mit Makros sollten Sie daher zunächst die Schaltfläche

Nein betätigen. Wählen Sie dann im Dialogfeld Speichern unter als

Dateityp die Option Excel-Arbeitsmappe mit Makros (mit der Datei-

endung .xlsm) aus und speichern Sie anschließend unter dem gewünsch-

ten Namen im gewünschten Verzeichnis, z. B. C:\Temp\Mappe1.xlsm (siehe

Abbildung 1.9).

Abbildung 1.9 Als Arbeitsmappe mit Makros speichern

Nachdem die Datei erfolgreich mit Makros gespeichert wurde, können Sie

Excel schließen.

1.3.5 Makrosicherheit ändern

Starten Sie Excel erneut. Falls Sie nun die soeben gespeicherte Datei öffnen,

stoßen Sie unweigerlich auf das Thema Makrosicherheit. Was bedeutet das?

3962.book Seite 26 Dienstag, 24. November 2015 3:53 15

1.3 Mit Makros arbeiten

27

1SicherheitswarnungExcel 2016 (ebenso wie die Vorgängerversionen) möchte Sie davor bewah-

ren, möglicherweise schädlichen VBA-Code auszuführen. Unterhalb der

Multifunktionsleiste erscheint daher eine Sicherheitswarnung mit dem

Hinweis, dass die in dieser Datei enthaltenen Makros deaktiviert wurden

(siehe Abbildung 1.10).

Abbildung 1.10 Sicherheitswarnung »Makros wurden deaktiviert.«

Makros deaktiviertDiese Reaktion erfolgt aufgrund der folgenden Standardeinstellung für die

Makrosicherheit in Excel: Alle Makros mit Benachrichtigung deak-

tivieren. Falls Sie versuchen, ein Makro auszuführen, erscheint die Infor-

mation, dass dies nicht möglich ist (siehe Abbildung 1.11).

Abbildung 1.11 Hinweis, dass Makro-Ausführung nicht möglich ist

Makros aktivierenSie haben die Möglichkeit, die in dieser Datei enthaltenen Makros zu akti-

vieren. Damit wird seit Excel 2010 die Datei in die Liste der vertrauenswür-

digen Dokumente aufgenommen. Unter Excel 2007 werden die Makros in

dieser Datei damit einmalig aktiviert. Dazu führen Sie Folgendes durch:

1. Schließen Sie die Datei.

2. Öffnen Sie sie erneut.

3. Unter Excel 2016 bis Excel 2010 betätigen Sie die Schaltfläche Inhalt

aktivieren neben der Sicherheitswarnung (siehe Abbildung 1.10).

4. Unter Excel 2007 betätigen Sie die Schaltfläche Optionen und wählen

die Option Diesen Inhalt aktivieren.

3962.book Seite 27 Dienstag, 24. November 2015 3:53 15

1 Einführung

28

Anschließend verschwindet die Sicherheitswarnung, und Sie können Mak-

ros ausführen. Unter Excel 2007 erscheint die Sicherheitswarnung aller-

dings beim nächsten Öffnen der Datei wieder. Sie können aber auch alle

Excel-Dateien in einem Verzeichnis für dauerhaft vertrauenswürdig erklä-

ren, siehe Abschnitt 1.3.7, »Makrosicherheit dauerhaft ändern«.

1.3.6 Registerkarte »Entwicklertools«

Excel-Optionen Die Registerkarte Entwicklertools bietet weiter gehende Möglichkeiten

zur Erstellung und Verwaltung von Makros. Daher sollten Sie sie dauerhaft

in Excel einblenden.

Unter Excel 2016 bis Excel 2010 rufen Sie dazu das Menü Datei auf und

betätigen die Schaltfläche Optionen. Im Dialogfeld Excel-Optionen betä-

tigen Sie die Schaltfläche Menüband anpassen. Auf der rechten Seite mar-

kieren Sie die Hauptregisterkarte Entwicklertools (siehe Abbildung 1.12).

Abbildung 1.12 Registerkarte »Entwicklertools« einblenden

Unter Excel 2007 betätigen Sie die Schaltfläche Office und dort die

Schaltfläche Excel-Optionen. In der Kategorie Häufig verwendet akti-

vieren Sie Entwicklerregisterkarte in der Multifunktionsleiste

anzeigen.

Entwicklertools Anschließend ist die Registerkarte dauerhaft aktiviert (siehe Abbildung

1.13).

3962.book Seite 28 Dienstag, 24. November 2015 3:53 15

1.3 Mit Makros arbeiten

29

1

Abbildung 1.13 Registerkarte »Entwicklertools«

1.3.7 Makrosicherheit dauerhaft ändern

Klicken Sie auf der Registerkarte Entwicklertools die Schaltfläche Mak-

rosicherh. an (siehe Abbildung 1.14).

Abbildung 1.14 Schaltfläche »Makrosicherh.«

Trust CenterUnter Excel 2016 und Excel 2013 öffnet sich anschließend das Dialogfeld

Trust Center. Unter Excel 2010 heißt dieses Dialogfeld Sicherheitscen-

ter, unter Excel 2007 Vertrauenscenter. Nach Auswahl der Kategorie

Makroeinstellungen bzw. Einstellungen für Makros sehen Sie die

Standardeinstellung Alle Makros mit Benachrichtigung deaktivie-

ren (siehe Abbildung 1.15). Außerdem sehen Sie die verschiedenen Mög-

lichkeiten zur Einstellung.

Abbildung 1.15 Trust Center

3962.book Seite 29 Dienstag, 24. November 2015 3:53 15

1 Einführung

30

Vertrauenswürdige

Speicherorte

Die folgende Möglichkeit ist allerdings besser geeignet: Nach Auswahl der

Kategorie Vertrauenswürdige Speicherorte sehen Sie eine Liste der

vertrauenswürdigen Verzeichnisse. Die Makros in den hier gelisteten Ver-

zeichnissen können immer ausgeführt werden.

Eigenen Speicherort

hinzufügen

Falls Sie also in Zukunft alle Ihre Excel-Dateien mit Makros in einem

bestimmten Verzeichnis (gegebenenfalls inklusive dessen Unterverzeich-

nisse) speichern, dann können Sie es zu der Liste hinzufügen. Dazu betäti-

gen Sie die Schaltfläche Neuen Speicherort hinzufügen. Es erscheint

ein Dialogfeld, in dem Sie die gewünschten Eingaben vornehmen können

(siehe Abbildung 1.16).

Abbildung 1.16 Vertrauenswürdiges Verzeichnis

Anschließend ist die Liste der vertrauenswürdigen Speicherorte um ein

Element ergänzt (siehe Abbildung 1.17).

Abbildung 1.17 Liste der vertrauenswürdigen Verzeichnisse

Vertrauenswürdige

Dokumente

Falls Sie nicht mehr sicher sind, welche einzelnen Dokumente Sie bereits

außerhalb der vertrauenswürdigen Verzeichnisse als vertrauenswürdig

erklärt haben, können Sie nach der Auswahl der Kategorie Vertrauens-

würdige Dokumente die Schaltfläche Löschen betätigen. Damit wird

die gesamte Liste der vertrauenswürdigen Dokumente gelöscht. Anschlie-

ßend müssen Sie Ihre Dokumente jeweils beim Öffnen wieder einzeln als

vertrauenswürdig erklären.

3962.book Seite 30 Dienstag, 24. November 2015 3:53 15

1.4 Visual Basic Editor (VBE) als Entwicklungsumgebung

31

11.4 Visual Basic Editor (VBE) als Entwicklungsumgebung

Es gibt mehrere Wege, den VBE als Entwicklungsumgebung aufzurufen, in

der Sie den VBA-Code schreiben. Wie erläutert, gelangen Sie über die Schalt-

fläche Makros auf der Registerkarte Ansicht oder der Registerkarte Ent-

wicklertools dorthin. Ebenfalls auf der Registerkarte Entwicklertools

finden Sie die Schaltfläche Visual Basic zum direkten Aufruf des VBE.

Alt + F11Außerdem können Sie den VBE von der Excel-Oberfläche mit der Tasten-

kombination (Alt) + (F11) aufrufen. Mit der gleichen Tastenkombination

können Sie auch wieder vom VBE zur Excel-Oberfläche zurückwechseln.

Dies wird in der Praxis häufig durchgeführt.

1.4.1 Menüleiste und Symbolleiste

Symbolleiste

»Bearbeiten«

Im oberen Teil des VBE befinden sich eine Menüleiste und die Symbolleiste

Voreinstellung. Nützlich für die Programmierung ist ebenfalls die Sym-

bolleiste Bearbeiten, die Sie über das Menü Ansicht • Symbolleisten

einblenden können. Beide Symbolleisten sehen Sie in Abbildung 1.18.

Abbildung 1.18 Symbolleisten »Voreinstellung« und »Bearbeiten«

Deklaration

erzwingen

Nehmen Sie zu Beginn bitte eine Voreinstellung vor, die für die VBA-Pro-

grammierung wichtig ist: Im Menü Extras • Optionen • Registerkarte

Editor setzen Sie ein Häkchen bei Variablendeklaration erforder-

lich (siehe Abbildung 1.19).

Abbildung 1.19 Einstellung »Variablendeklaration erforderlich«

3962.book Seite 31 Dienstag, 24. November 2015 3:53 15

1 Einführung

32

Option Explicit Dies sorgt ab dem nächsten Öffnen von Excel dafür, dass in jedem Modul

oberhalb des VBA-Codes die Zeile Option Explicit steht und alle Variablen

deklariert werden müssen.

Damit wird in Ihrem VBA-Code automatisch darauf geachtet, dass Sie alle

Variablen explizit deklarieren. Dies kann zur Verminderung von Fehlern

und zur Verbesserung der Performance Ihrer Programme beitragen. Varia-

blen dienen der Speicherung von Zahlen, Daten und Texten, die im späte-

ren Verlauf eines Programms noch benötigt werden. Dazu mehr in Kapitel

3, »Grundlagen der Programmierung mit VBA«.

1.4.2 Projekt-Explorer und Fenster »Eigenschaften«

Auf der linken Seite des VBE befinden sich der Projekt-Explorer und das

Fenster Eigenschaften (siehe Abbildung 1.20).

Abbildung 1.20 Projekt-Explorer und Fenster »Eigenschaften«

Projekt-Explorer Im Projekt-Explorer werden die Elemente der aktuell geöffneten Dateien

angezeigt, in denen Sie mit VBA programmieren können. Dies sind:

Modul � Eigene Codemodule, wie z. B. das Modul1, das durch die Aufzeichnung

eines Makros automatisch erzeugt wurde. Ein eigenes, leeres Modul

kann auch über das Menü Einfügen • Modul erzeugt werden.

3962.book Seite 32 Dienstag, 24. November 2015 3:53 15

1.4 Visual Basic Editor (VBE) als Entwicklungsumgebung

33

1Klassenmodul� Vorhandene Klassenmodule, wie DieseArbeitsmappe und Tabelle1 bis

Tabelle3, also die gesamte Arbeitsmappe und die aktuell vorhandenen

Tabellen. Hier kann VBA-Code notiert werden, der beim Eintreten

bestimmter Ereignisse, wie z. B. beim Öffnen einer Arbeitsmappe, auto-

matisch ausgeführt wird.

� eigene Klassenmodule zur objektorientierten Programmierung, die Sie

über das Menü Einfügen • Klassenmodul erzeugen können

UserForm� UserForms, also eigene Dialogfelder zur komfortablen Programmsteue-

rung, die sich über das Menü Einfügen • UserForm erzeugen lassen

Für uns sind zunächst nur die eigenen Codemodule wichtig. Die VBA-Bei-

spiele in diesem Buch werden in Codemodulen gespeichert, falls kein

anderslautender Hinweis erfolgt. Falls Code in UserForms oder eigenen

Klassenmodulen gespeichert wird, so ist dies explizit angegeben. Der VBA-

Code in Klassenmodulen bezieht sich normalerweise nur auf das jeweilige

Klassenmodul. Per Doppelklick auf ein Element im Projekt-Explorer wird

der VBA-Code des betreffenden Moduls eingeblendet.

Übung 1 D

Blenden Sie den VBA-Code der verschiedenen Elemente ein.

Eigenschaften

und Werte

Im Fenster Eigenschaften werden die Eigenschaften des aktuell ausge-

wählten Moduls bzw. die Eigenschaften des ausgewählten Steuerelements

eines eigenen Dialogfeldes aufgelistet. Die Werte dieser Eigenschaften kön-

nen verändert werden. Ein Modul wird durch einen einfachen Klick im Pro-

jekt-Explorer ausgewählt. Zunächst ist das Fenster Eigenschaften für uns

nicht wichtig.

1.4.3 Codefenster

Code ausführenAuf der rechten Seite des VBE befindet sich das bereits bekannte Codefens-

ter mit dem VBA-Code. Sie können eines der Makros von hier aus direkt

ausführen. Setzen Sie dazu den Cursor in die betreffende Prozedur.

Anschließend können Sie eine der folgenden Aktionen ausführen:

� im Menü Ausführen den Menüpunkt Sub/UserForm ausführen

aufrufen

Taste »F5«� die Taste (F5) betätigen

3962.book Seite 33 Dienstag, 24. November 2015 3:53 15

1 Einführung

34

� in der Symbolleiste Voreinstellung das Symbol mit dem grünen Pfeil,

der nach rechts weist, betätigen (siehe Abbildung 1.21).

Abbildung 1.21 Symbol »Sub/UserForm ausführen« (Taste »F5«)

Übung 1 E

Testen Sie auf diese Weise die beiden vorhandenen Makros. Das Ergebnis

sehen Sie natürlich nur in der Excel-Oberfläche. Sie müssen also (z. B. mit-

hilfe der Tastenkombination (Alt) + (F11)) zwischen Excel-Oberfläche

und VBE hin- und herwechseln.

Zur Erinnerung

Ein Apostroph im VBA-Code dient dazu, eine ganze Zeile bzw. den Rest

einer Zeile hinter dem Apostroph zu einem Kommentar zu machen.

Übung 1 F

Fügen Sie Ihren beiden Makros jeweils eine Kommentarzeile hinzu mit

dem Text: Dieses Makro wurde von [Ihr Name] erstellt. Testen Sie Ihre

Makros erneut.

1.5 Makrocode verstehen und ändern

Im nächsten Schritt sollen Sie Ihre eigenen Makros verändern. Dazu müs-

sen wir ihren Code etwas näher betrachten, zunächst am Beispiel des Mak-

ros Makro1():

Sub Makro1()Range("A1").SelectSelection.CutRange("C1").SelectActiveSheet.Paste

End Sub

Listing 1.1 Sub Makro1() in Mappe1.xlsm, Modul 1

3962.book Seite 34 Dienstag, 24. November 2015 3:53 15

1.5 Makrocode verstehen und ändern

35

1Zur Erläuterung:

Sub … End Sub� Der Code der Makros ist jeweils innerhalb einer Sub-Prozedur zwischen

Sub und End Sub notiert. Die einzelnen Zeilen werden der Reihe nach

durchlaufen und ausgeführt.

Range� Range("A1").Select bedeutet: Für einen (Zell-)Bereich (engl. range) wird

etwas durchgeführt. In diesem Fall wird der Bereich ausgewählt (engl.

select). Der Bereich umfasst hier nur die Zelle A1. Er kann auch mehrere

Zellen umfassen.

Cut� Selection.Cut bedeutet: Für die vorher getroffene Auswahl (engl. selec-

tion) wird etwas durchgeführt. In diesem Fall wird die Auswahl ausge-

schnitten (engl. cut). Es wurde also der Inhalt der Zelle A1 ausgeschnitten.

Dieser Inhalt befindet sich nun in der Zwischenablage.

In dem Makro KopieE3E5() aus der Übung 1 A wird auf ähnliche Art und

Weise mit Selection.Copy die vorher getroffene Auswahl in die Zwi-

schenablage kopiert.

� Range("C1").Select erklärt sich nun von selbst.

Paste� ActiveSheet.Paste bedeutet: Für das aktuell aktive Tabellenblatt (engl.

sheet) wird etwas durchgeführt. In diesem Fall wird der Inhalt der Zwi-

schenablage eingefügt (engl. paste). Dies wird an der vorher ausgewähl-

ten Stelle (Zelle C1) vorgenommen.

Hinweis

Active…Mit dem Präfix Active wird immer das aktuell aktive Element bezeichnet,

wie z. B. ActiveCell (Zelle), ActiveSheet (Tabellenblatt) oder ActiveWork-book (Arbeitsmappe).

Durch den Eintrag von D1 statt C1 als Zielzelle können Sie den Code leicht

verändern. Anschließend wird der Inhalt der Zelle A1 zur Zelle D1 verscho-

ben.

Übung 1 G

Verändern Sie das Makro KopieE3E5() aus Übung 1 A (siehe Abschnitt 1.3.1,

»Makro aufzeichnen«). Es soll der Inhalt der Zellen E3 bis G3 sowohl in die

Zellen E5 bis G5 als auch in die Zellen E10 bis G10 kopiert werden. Nennen

Sie das geänderte Makro KopieE3E5Neu().

3962.book Seite 35 Dienstag, 24. November 2015 3:53 15

1 Einführung

36

Hinweise dazu:

� Ein Zellbereich aus mehreren Zellen wird genau wie in Excel notiert,

also z. B. E3:G3.

� Für eine Zielangabe reicht die Angabe einer einzelnen Zelle aus. Die

weiteren Zellen des kopierten Bereichs werden, wie aus Excel gewohnt,

in die Nachbarzellen eingefügt.

� Aus der Zwischenablage können beliebig viele Kopien eingefügt wer-

den.

Hinweis

Aktivieren und

selektieren

In den genannten Beispielen werden Quellbereiche selektiert und Zielbe-

reiche aktiviert. Dadurch erhält man als VBA-Neuling einen leicht ver-

ständlichen Einstieg, weil der Code die gleichen Schritte ausführt wie

Benutzer in der Excel-Oberfläche.

Es wird aber mehr Code als notwendig erzeugt. Die Wartung solchen

Codes dauert länger, und die Ausführung ist langsamer. Im weiteren Ver-

lauf dieses Buches werden Sie lernen, wie Sie besseren Code erstellen.

1.6 Makro per Schaltfläche ausführen

Schaltfläche

einfügen

Sie können als Entwickler Benutzern das Starten eines Makros erleichtern,

indem Sie ihnen eine Schaltfläche (engl. button) zur Verfügung stellen. So

können Sie ein übersichtlich zu bedienendes Tabellenblatt mit Daten, For-

meln und Programmen vorbereiten.

Zur Erzeugung einer Schaltfläche gehen Sie wie folgt vor:

1. Auf der Registerkarte Entwicklertools betätigen Sie die Schaltfläche

Einfügen.

2. Es erscheint eine Sammlung von Steuerelementen. Darin wählen Sie das

Symbol links oben: Schaltfläche (Formular-Steuerelement).

3. Platzieren Sie den Mauszeiger an der gewünschten Stelle auf dem Tabel-

lenblatt. Es erscheint ein kleines Kreuz. Drücken Sie die linke Maustaste,

halten Sie sie gedrückt, und ziehen Sie die Schaltfläche in der gewünsch-

ten Größe auf.

Makro und

Schaltfläche

verbinden

4. Es erscheint das Dialogfeld Makro zuweisen (siehe Abbildung 1.22).

Suchen Sie das gewünschte Makro heraus, und bestätigen Sie mit OK.

3962.book Seite 36 Dienstag, 24. November 2015 3:53 15

1.7 Relative Verweise verwenden

37

1

Abbildung 1.22 Makro einer Schaltfläche zuordnen

Anschließend erscheint die Schaltfläche im Bearbeitungsmodus. Klicken

Sie einmal neben die Schaltfläche. Anschließend können Sie durch Klick

auf die Schaltfläche das Makro ausführen (siehe Abbildung 1.23).

Abbildung 1.23 Neu eingefügte Schaltfläche

Hinweis

Schaltfläche

bearbeiten

Sie können eine Schaltfläche nachträglich bearbeiten. Dazu klicken Sie mit

der rechten Maustaste auf die Schaltfläche. Dann sind Sie wieder im Bear-

beitungsmodus. Sie können nun ihre Größe und Position verändern. Über

das Kontextmenü (wiederum erreichbar per Rechtsklick) können Sie ihr ein

anderes Makro zuweisen oder den Text auf der Schaltfläche verändern.

1.7 Relative Verweise verwenden

Beim Aufzeichnen der Makros ist Ihnen sicherlich schon die Schaltfläche

Relative Verweise verwenden aufgefallen. In früheren Versionen hieß

die Schaltfläche Relative Aufzeichnung. Dabei handelt es sich um eine

Schaltfläche, die Sie an zwei Stellen betätigen können:

3962.book Seite 37 Dienstag, 24. November 2015 3:53 15

1 Einführung

38

� in dem Menü, das über die Schaltfläche Makros auf der Registerkarte

Ansicht erreicht werden kann

� auf der Registerkarte Entwicklertools

Schalter Falls dieser Schalter eingeschaltet ist, also optisch hervorgehoben wird,

werden die nachfolgenden Makros relativ aufgezeichnet. Bei den bisher

erstellten Makros war dieser Schalter nicht eingeschaltet. Diese Makros

wurden daher absolut aufgezeichnet:

Absolut

aufzeichnen

� Absolute Aufzeichnung bedeutet, dass im Makrocode absolute Zellanga-

ben stehen (Beispiel: A1, C1). Bei der Ausführung eines solchen Makros ist

es egal, welche Zelle in Excel aktiv ist, denn es wird immer mit den Zellen

A1 und C1 gearbeitet.

Relativ aufzeichnen � Relative Aufzeichnung bedeutet, dass im Makrocode relative Zellanga-

ben stehen. Bei der Ausführung eines solchen Makros werden die Aktio-

nen relativ zu der Zelle ausgeführt, die in Excel aktiv ist.

Zur Verdeutlichung soll ein Makro aufgezeichnet werden, in dem das Glei-

che gemacht wird wie im ersten Beispielmakro: Der Inhalt der Zelle A1 wird

nach C1 verschoben. Allerdings wird das Makro relativ aufgezeichnet. Füh-

ren Sie folgende Schritte durch:

1. Aktivieren Sie in Excel den Schalter Relative Verweise verwenden

bzw. Relative Aufzeichnung.

2. Tragen Sie in Zelle A1 einen beliebigen Inhalt ein (Zahl oder Text).

3. Wählen Sie die Zelle A1 aus.

4. Beginnen Sie mit der Aufzeichnung des Makros (Name Makro2).

5. Schneiden Sie den Inhalt der Zelle A1 aus.

6. Fügen Sie den Inhalt der Zwischenablage in Zelle C1 ein. Der Inhalt der

Zelle A1 wurde nach C1 verschoben.

7. Beenden Sie die Makro-Aufzeichnung.

Relative

Verschiebung

Bis hierhin ist noch kein sichtbarer Unterschied aufgetreten. Falls Sie aller-

dings das Makro ausführen, wird jeweils der Inhalt der aktuell ausgewähl-

ten Zelle um zwei Zellen nach rechts verschoben (z. B. von D10 nach F10)

und nicht immer der Inhalt der Zelle A1 nach Zelle C1.

Die aktive Zelle ist nun der Ausgangspunkt. Betrachten wir den Code:

Cut � Selection.Cut: Es geschieht das Gleiche wie bei der absoluten Aufzeich-

nung, also der Inhalt der aktiven Zelle wird ausgeschnitten. Er liegt nun

in der Zwischenablage.

3962.book Seite 38 Dienstag, 24. November 2015 3:53 15

1.8 Persönliche Makroarbeitsmappe

39

1Offset� ActiveCell.Offset(0, 2).Range("A1").Select: Ausgehend von der akti-

ven Zelle wird ein Offset (also ein Versatz) ausgewählt. Die Angaben in

Klammern stehen für Zeile und Spalte des Versatzes. Es wird also eine

Zelle in der gleichen Zeile (Offset-Zeile 0) und zwei Spalten weiter rechts

(Offset-Spalte 2) ausgewählt. Falls die aktive Zelle D10 ist, dann wird

demnach die Zelle F10 ausgewählt.

Zu diesem Versatz wird der Bereich A1 ausgewählt. Dies ist nicht die

absolute Zelle A1 des Tabellenblattes, sondern die oberste linke Zelle des

Versatzes. Diese Zelle (in der gleichen Zeile, zwei Zellen weiter rechts)

wird ausgewählt.

Paste� ActiveSheet.Paste: Es geschieht das Gleiche wie bei der absoluten Auf-

zeichnung, also der Inhalt der Zwischenablage wird eingefügt.

Dieses Makro zeigt ein ganz anderes Verhalten als das Makro, das absolut

aufgezeichnet wurde. Beide Makro-Aufzeichnungsarten haben ihre Vor-

teile, je nach Situation.

Hinweis

Nach dem Schließen und erneuten Öffnen von Excel steht der Schalter

immer auf Absolute Aufzeichnung. Sie können während einer Aufzeich-

nung über den Schalter zwischen relativer und absoluter Aufzeichnung

wechseln, falls dies notwendig sein sollte.

Übung 1 H

Erstellen Sie ein Makro, das den Inhalt von drei nebeneinanderliegenden,

markierten Zellen um zwei Zeilen bzw. um sieben Zeilen nach unten

kopiert. Es entspricht dem Makro aus der Übung 1 G (siehe Abschnitt 1.5,

»Makrocode verstehen und ändern«), allerdings mit relativer Aufzeich-

nung. Nennen Sie das Makro RelKopie(). Testen Sie es, und interpretieren

Sie den VBA-Code.

1.8 Persönliche Makroarbeitsmappe

Makros überall

benutzen

Die bisher aufgezeichneten Makros wurden in der aktuell aktiven Arbeits-

mappe gespeichert. Daher stehen sie nur dort zur Verfügung. Falls Sie

bestimmte Makros für den universellen Einsatz immer zur Verfügung

haben möchten, sollten Sie sie in der Mappe Persönliche Makroarbeits-

3962.book Seite 39 Dienstag, 24. November 2015 3:53 15

1 Einführung

40

mappe speichern. Dabei handelt es sich um eine Arbeitsmappe, die immer

zusammen mit Excel geöffnet wird, sobald sie existiert.

Zum Speichern eines Makros in der Mappe Persönliche Makroarbeitsmappe

muss beim Aufzeichnen eines Makros im Dialogfeld Makro aufzeich-

nen der entsprechende Eintrag in der Liste Makro speichern in: ausge-

wählt werden (siehe Abbildung 1.24).

Abbildung 1.24 In der Mappe »Persönliche Makroarbeitsmappe« speichern

Datei

personal.xlsb

Nach der Aufzeichnung erscheint ein weiterer Eintrag im Projekt-Explorer

des VBE: die Datei personal.xlsb (siehe Abbildung 1.25). Ihr Standardspei-

cherort ist seit Windows Vista das (eventuell versteckte, d. h. ausgeblen-

dete) Verzeichnis C:\Benutzer\[ Benutzername ]\AppData\Roaming\Micro-

soft\Excel\XLStart und unter Windows XP C:\Dokumente und Einstellun-

gen\[ Benutzername ]\Anwendungsdaten\Microsoft\Excel\XLStart.

Abbildung 1.25 »Persönliche Makroarbeitsmappe« im Projekt-Explorer

Makros immer

verfügbar

Falls diese Datei verändert wurde, indem z. B. ein Makro hinzugefügt oder

geändert wurde, werden Sie bei jedem Schließen von Excel gefragt, ob Sie

diese Änderungen speichern möchten. Nach jedem Öffnen von Excel ste-

hen die Makros in dieser Datei zur Verfügung.

3962.book Seite 40 Dienstag, 24. November 2015 3:53 15

1.9 Code schreiben für einfache Ausgaben

41

1Übung 1 I

Erstellen Sie das gleiche Makro wie in der letzten Übung, der Übung 1 H.

Speichern Sie es aber diesmal in der Mappe Persönliche Makroarbeits-

mappe. Schließen Sie Excel. Testen Sie das Makro nach dem erneuten Öff-

nen von Excel in einer beliebigen Arbeitsmappe.

1.9 Code schreiben für einfache Ausgaben

Selbst

programmieren

In diesem Abschnitt wird erstmalig VBA-Code nicht durch eine Makro-Auf-

zeichnung, sondern durch Schreiben des Codes in einer eigenen Sub-Proze-

dur erstellt. Es entsteht also das erste richtige VBA-Programm. Außerdem

werden drei Möglichkeiten zur Ausgabe von Ergebnissen oder Kontrollwer-

ten genannt, die häufig in der VBA-Programmierung benutzt werden:

� in einer Zelle

� in einer Nachrichtenbox

� im Direktfenster des VBE

1.9.1 Eigene Sub-Prozedur

Zunächst zur Erstellung einer eigenen Sub-Prozedur. Wechseln Sie mit den

Tasten (Alt) + (F11) zum VBE. Schreiben Sie unterhalb des letzten Makros

die folgende Zeile:

Sub AusgabeZelle

Unterstützung

durch Editor

Sobald Sie mit der Taste (¢) die Zeile wechseln, stellen Sie fest, dass der

Editor Sie bei der VBA-Programmierung unterstützt (siehe Abbildung 1.26):

� Am Ende der Zeile werden Klammern angefügt.

� Es wird die Zeile mit End Sub erzeugt.

� Der Cursor steht in der Zeile dazwischen – bereit zur Eingabe Ihres VBA-

Codes.

� Es wird eine Trennzeile zwischen den einzelnen Makros erzeugt.

Abbildung 1.26 Neue eigene Sub-Prozedur

3962.book Seite 41 Dienstag, 24. November 2015 3:53 15

1 Einführung

42

Der Editor bietet dem Programmierer umfangreiche weitere Unterstüt-

zung, aber dazu später.

Prozedurname (…) Hinter dem Namen einer Sub-Prozedur (oder kurz Prozedur) stehen immer

Klammern, ebenso wie bei Ihren bisherigen Makros. Diese Klammern sind

zunächst leer. Später werden Sie sehen, dass Sie innerhalb der Klammern Auf-

rufparameter notieren können, die eine Prozedur flexibler machen können.

1.9.2 In Zelle ausgeben

Geben Sie in der Prozedur AusgabeZelle() folgende Codezeile ein:

Range("A1").Value = "Hallo"

Damit sieht Ihre Prozedur wie folgt aus:

Sub AusgabeZelle()Range("A1").Value = "Hallo"

End Sub

Listing 1.2 Sub AusgabeZelle() in Mappe1.xlsm, Modul 1

Beim Ausführen dieser Prozedur, z. B. mithilfe der Taste (F5), wird der Text

Hallo in Zelle A1 ausgegeben (siehe Abbildung 1.27).

Abbildung 1.27 Ergebnis der eigenen Sub-Prozedur

Eigenschaft »Value« Sie haben bereits gesehen, dass Sie einen Bereich, der eine oder mehrere

Zellen umfasst, über Range ansprechen können. Wir haben die Methode

Select() aufgerufen, um diesen Bereich auszuwählen. Diesmal wird die

Eigenschaft Value mit einem Eigenschaftswert versehen, dem Text Hallo.

Über Value erhält die Zelle einen Wert.

Hinweis

Eine Prozedur sollte einen möglichst sprechenden Namen haben, der

etwas über ihre Arbeitsweise aussagt. Außerdem muss der Name inner-

halb der Anwendung eindeutig sein. Es darf also kein Prozedurname dop-

pelt vorkommen.

3962.book Seite 42 Dienstag, 24. November 2015 3:53 15

1.9 Code schreiben für einfache Ausgaben

43

11.9.3 In Nachrichtenbox ausgeben

Schreiben Sie eine weitere Prozedur mit folgendem Code:

Sub AusgabeBox()MsgBox "Hallo"

End Sub

Listing 1.3 Sub AusgabeBox() in Mappe1.xlsm, Modul 1

Box schließenNach dem Aufruf erscheint eine kleine Nachrichtenbox mit dem Text Hallo

(siehe Abbildung 1.28). Diese Box wird erst dann geschlossen, wenn der

Benutzer die Schaltfläche OK betätigt hat. Anschließend laufen, falls vor-

handen, weitere Teile des Programms ab. Sollte der VBE einmal unerwartet

keinerlei Reaktion zeigen, wechseln Sie einfach mit (Alt) + (F11) zum

Excel-Tabellenblatt: Vielleicht wartet dort eine Nachricht auf Ihre Reaktion.

Abbildung 1.28 In Nachrichtenbox ausgeben

MsgBoxEine solche Nachrichtenbox können Sie u. a. benutzen zur:

� Kontrollausgabe während der Programmierung

� Information des Benutzers bei einem Fehler

� Information des Benutzers am Ende eines Programms

Bei MsgBox handelt es sich um eine vorgefertigte Funktion, bei der Sie eine

Zeichenkette, z. B. einen Text in Anführungsstrichen, als Aufruf-Parameter

notieren müssen. Die Funktion MsgBox() kann allerdings wesentlich mehr,

wie Sie in Abschnitt 8.3, »Einfacher Dialog mit dem Benutzer«, sehen werden.

vbCrLfBei längeren Ausgaben wird häufig ein Zeilenumbruch benötigt. Dieser

wird über die Konstante vbCrLf bereitgestellt. Ein Beispiel:

Sub AusgabeBoxZeilenumbruch()MsgBox "Hallo" & vbCrLf & "Welt"

End Sub

Listing 1.4 Sub AusgabeBoxZeilenumbruch() in Mappe1.xlsm, Modul 1

3962.book Seite 43 Dienstag, 24. November 2015 3:53 15

1 Einführung

44

Die Ausgabe sehen Sie in Abbildung 1.29.

Abbildung 1.29 Mit Zeilenumbruch ausgeben

Den Namen dieser Konstanten kann man sich leicht merken, denn es han-

delt sich dabei um ein Relikt aus der Urzeit: In vbCrLf steht das Cr für Car-

riage Return, den Wagenrücklauf der Schreibmaschine zum Zeilenanfang.

Das Lf steht für Line Feed, den Zeilenvorschub.

Hinweis

Operator »&« Der Operator & dient der Verkettung von Zeichenfolgen. Er wird häufig

benötigt, um Ergebnisse anschaulich zusammen mit Text darzustellen.

1.9.4 Im Direktfenster des VBE ausgeben

Schreiben Sie eine weitere Prozedur mit folgendem Code:

Sub AusgabeKontrolle()Debug.Print "Hallo"

End Sub

Listing 1.5 Sub AusgabeKontrolle() in Mappe1.xlsm, Modul 1

Debug.Print Nach dem Aufruf erscheint zunächst gar nichts, da das Direktfenster des

VBE nicht eingeblendet ist. Zeigen Sie es über das Menü Ansicht • Direkt-

fenster im VBE an. Anschließend sehen Sie die soeben erzeugte Ausgabe

(siehe Abbildung 1.30).

Das Direktfenster (= Direktbereich) können Sie ebenfalls zur Kontroll-

ausgabe während der Programmierung nutzen.

3962.book Seite 44 Dienstag, 24. November 2015 3:53 15

1.10 Mit Versionen vor Excel 2007 arbeiten

45

1

Abbildung 1.30 Im Direktfenster ausgeben

1.10 Mit Versionen vor Excel 2007 arbeiten

Zunächst das Wichtigste: Excel-Dateien werden in den Versionen vor Excel

2007 einheitlich mit der Dateiendung .xls gespeichert, unabhängig davon,

ob sie Makros enthalten oder nicht.

Die meisten Beispiele in diesem Buch laufen auch unter Versionen vor

Excel 2007. Im Downloadpaket zum Buch, das Sie über www.rheinwerk-ver-

lag.de/4015 erreichen, stehen die Dateien daher zusätzlich im xls-Format

zur Verfügung.

Als Beispiel für das Arbeiten mit den Versionen vor Excel 2007 (genauer

Excel 97 bis Excel 2003) soll in diesem Abschnitt Excel 2002 dienen. Es wer-

den nur die Unterschiede zu Excel 2016 erläutert, in Anlehnung an die Rei-

henfolge der bisherigen Abschnitte.

1.10.1 Makro aufzeichnen

Zum Starten einer Aufzeichnung wählen Sie im Menü Extras das Unter-

menü Makro und darin den Menüpunkt Aufzeichnen. Zum Beenden der

Aufzeichnung wählen Sie im Menü Extras das Untermenü Makro und

darin den Menüpunkt Aufzeichnung beenden.

Nach dem Start einer Aufzeichnung erscheint die kleine Symbolleiste Auf-

zeichnung beenden. Sollte sie nicht von selbst erscheinen, kann sie auf

die übliche Art eingeblendet werden: mit der rechten Maustaste im Bereich

der Symbolleisten klicken und das Häkchen vor der betreffenden Symbol-

leiste setzen. Sie beinhaltet zwei Symbole:

� Mit Betätigung des linken Symbols können Sie die Aufzeichnung eben-

falls beenden.

3962.book Seite 45 Dienstag, 24. November 2015 3:53 15

1 Einführung

46

� Mit Betätigung des rechten Symbols können Sie auf relative Aufzeich-

nung umschalten. Diese Einstellung gilt ebenfalls für spätere Makro-

Aufzeichnungen.

1.10.2 Makro ausführen

Zum Ausführen des Makros wählen Sie im Menü Extras das Untermenü

Makro und darin den Menüpunkt Makros. Wählen Sie im Dialogfeld

Makro das gewünschte Makro aus, und klicken Sie auf die Schaltfläche

Ausführen.

1.10.3 Makro ansehen

Zum Ansehen des Makros wählen Sie im Menü Extras das Untermenü

Makro und darin den Menüpunkt Makros. Wählen Sie im Dialogfeld

Makro das gewünschte Makro aus, und klicken Sie auf die Schaltfläche

Bearbeiten. Es erscheint der VBE. Sie können ihn über den Menüpunkt

Schließen und zurück zu Microsoft Excel im Menü Datei wieder

beenden.

1.10.4 Makro speichern

Wie bereits erwähnt, werden Excel-Dateien in diesen Versionen einheitlich

gespeichert, unabhängig davon, ob sie Makros enthalten oder nicht.

Zum Speichern der Datei wählen Sie im Menü Datei den Menüpunkt Spei-

chern. Es erscheint das Dialogfeld Speichern unter. Als Dateityp ist

Excel-Arbeitsmappe mit der Dateiendung .xls angegeben. Wählen Sie

den gewünschten Dateinamen und das gewünschte Verzeichnis aus, und

klicken Sie auf die Schaltfläche Speichern.

Dateityp ändern Falls Sie an einem externen PC eine der Excel-Versionen von 2007 bis 2016

zur Verfügung haben und eine dort erstellte Excel-Datei auf Ihrem PC in

einer Version vor Excel 2007 haben wollen, rufen Sie auf dem externen PC

das Dialogfeld Speichern unter auf, und wählen Sie den Dateityp Excel

97-2003-Arbeitsmappe mit der Dateiendung .xls.

Kompatibilitäts-

prüfung

Falls sich in der Datei VBA-Code befindet, der nicht unter älteren Excel-Ver-

sionen ausgeführt werden kann, erscheint das Dialogfeld Kompatibili-

tätsprüfung. Darin wird das Problem genauer erläutert.

3962.book Seite 46 Dienstag, 24. November 2015 3:53 15

1.10 Mit Versionen vor Excel 2007 arbeiten

47

11.10.5 Makrosicherheit ändern

Beim Öffnen einer Datei, die ein Makro beinhaltet, kommt es darauf an,

welche Sicherheitsstufe in Excel eingestellt ist:

� Hoch: Die Ausführung von nicht signierten Makros wird abgelehnt.

� Mittel: Es wird Ihnen die Möglichkeit gegeben, die Makros in dieser

Datei einmalig zu aktivieren oder zu deaktivieren.

� Niedrig: Die Ausführung von nicht signierten Makros wird generell

erlaubt.

Zum Ändern der Sicherheitsstufe wählen Sie im Menü Extras das Unter-

menü Makro und darin den Menüpunkt Sicherheit. Es erscheinen die

drei genannten Möglichkeiten. Eine Änderung wird erst beim nächsten

Öffnen einer Excel-Datei wirksam.

1.10.6 Symbolleiste »Visual Basic« einblenden

Nach dem Einblenden der Symbolleiste Visual Basic haben Sie schnelle-

ren Zugriff auf die wichtigsten Befehle im Zusammenhang mit Makros und

der Entwicklung mit Visual Basic.

1.10.7 Visual Basic Editor (VBE) als Entwicklungsumgebung

Zum Aufruf des VBE wählen Sie im Menü Extras das Untermenü Makro

und darin den Menüpunkt Visual Basic-Editor oder die Tastenkombina-

tion (Alt) + (F11).

Das Symbol zum Starten eines Makros aus dem Codefenster heraus ist ein

grüner Pfeil. Alternativ können Sie das Menü Ausführen (Menüpunkt

Sub/UserForm ausführen) oder die Funktionstaste (F5) nutzen.

1.10.8 Persönliche Makroarbeitsmappe verwalten

Die Persönliche Makroarbeitsmappe heißt personal.xls, und ihr Standardspei-

cherort ist seit Windows Vista das (eventuell versteckte, d. h. ausgeblendete)

Verzeichnis C:\Benutzer\[Benutzername]\AppData\Roaming\Microsoft\Excel

\XLStart und unter XP C:\Dokumente und Einstellungen\[Benutzername]

\Anwendungsdaten\Microsoft\Excel\XLStart.

3962.book Seite 47 Dienstag, 24. November 2015 3:53 15

49

2

Kapitel 2

Grundlagen von Objekten und Ereignissen

In diesem Kapitel lernen Sie den Umgang mit den Objekten »Arbeits-

mappe«, »Tabellenblatt« und »Zellbereich« mit ihren jeweiligen Eigen-

schaften, Methoden und Ereignissen kennen.

ObjektVBA ist eine objektorientierte Sprache, d. h., es wird mit Objekten gearbei-

tet. Objekte verfügen über Eigenschaften, Methoden und Ereignisse:

Eigenschaft� Eigenschaften (Attribute) bestimmen das Aussehen eines Objekts. Ein

Tabellenblatt verfügt z. B. über die Eigenschaft Name. Der Wert dieser

Eigenschaft ist die Bezeichnung des Tabellenblattes (z. B. Tabelle1).

Methode� Methoden bestimmen die Fähigkeiten eines Objekts. Ein Tabellenblatt

verfügt z. B. über die Methode Copy(), d. h., es kann kopiert werden.

Ereignis� Ereignisse bestimmen, was mit dem Objekt passiert. Bei einem Tabellen-

blatt kann z. B. als Ereignis eine Aktivierung stattfinden. Ereignisse kön-

nen mit VBA-Code verbunden werden, so dass automatisch weitere

Aktionen folgen können.

In diesem Kapitel werden Ihnen zahlreiche Möglichkeiten von VBA vorge-

stellt, ohne in die Programmierung mit Variablen, Verzweigungen und

Schleifen einsteigen zu müssen. Im folgenden Kapitel werden dann diese

wichtigen Elemente der Programmierung erläutert, die die automatisierte

Bearbeitung von Excel erheblich verbessern.

2.1 Objekthierarchie und Auflistungen

HierarchieWie bereits erwähnt, verfügen Objekte über Eigenschaften. Eine Eigen-

schaft eines Objekts kann wiederum ein Unterobjekt sein, mit eigenen

Eigenschaften, Methoden und Ereignissen. Setzen Sie diese Überlegung

weiter fort, so erhalten Sie eine Hierarchie von Objekten, ausgehend von

einem Hauptobjekt.

3962.book Seite 49 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

50

Application Das Hauptobjekt bei Office-Anwendungen ist Application (engl. für Anwen-

dung). In unserem Fall wird damit das Programm Excel selbst bezeichnet:

Workbooks � Eine Eigenschaft des Objekts Application ist die Auflistung Workbooks.

Darin befinden sich alle geöffneten Arbeitsmappen, also Excel-Dateien.

Worksheets � Eine Eigenschaft einer einzelnen Arbeitsmappe ist die Auflistung Work-

sheets. Darin befinden sich alle Tabellenblätter einer Arbeitsmappe.

Range � Eine Eigenschaft eines einzelnen Tabellenblattes ist das Objekt Range.

Darin befinden sich Zellen und Zellbereiche eines Tabellenblattes.

Auflistung mit »s« In Excel wird häufig mit Auflistungen gearbeitet, wie z. B. Workbooks oder

Worksheets. Es handelt sich dabei um Sammlungen gleichartiger Objekte. Sie

sind leicht an der Mehrzahlschreibweise (mit einem s am Ende) erkennbar.

2.2 Arbeitsmappen bearbeiten

Workbooks Das Objekt Workbooks ist eine Auflistung. In dieser Auflistung befinden sich

alle geöffneten Arbeitsmappen, also Excel-Dateien.

Workbook Das Objekt Workbook (ohne ein s am Ende) steht für eine einzelne Arbeits-

mappe. Zur Bearbeitung einer bestimmten Arbeitsmappe gibt es verschie-

dene Möglichkeiten:

ThisWorkbook � ThisWorkbook: Die Arbeitsmappe mit dem aktuell ausgeführten VBA-

Code. Sie wird im Folgenden auch als diese Arbeitsmappe bezeichnet.

� ActiveWorkbook: Die aktuell aktive Arbeitsmappe. Dies muss nicht diese

Arbeitsmappe sein.

Count � Workbooks(Index): Index ist die laufende Nummer der Arbeitsmappe

innerhalb der Workbooks-Auflistung. Die laufende Nummer einer Auflis-

tung startet immer bei 1 und geht bis zur Nummer des letzten Elements

in der Auflistung. Diese letzte Nummer entspricht der Anzahl der Ele-

mente, die Sie bei allen Auflistungen über die Eigenschaft Count ermit-

teln können.

Workbooks

("Name")

� Workbooks("Name"): Gibt den Namen der Arbeitsmappe als Zeichenkette

an (in Anführungszeichen).

2.2.1 Anzahl der Arbeitsmappen ermitteln

Zählen Mit folgender Prozedur wird die Anzahl der geöffneten Arbeitsmappen

ermittelt:

3962.book Seite 50 Dienstag, 24. November 2015 3:53 15

2.2 Arbeitsmappen bearbeiten

51

2

Sub MappenZaehlen()MsgBox "Anzahl der Mappen: " & Workbooks.Count

End Sub

Listing 2.1 Sub MappenZaehlen() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Count� Es wird der Wert der Eigenschaft Count des Objekts Workbooks ermittelt

und mithilfe der Funktion MsgBox() ausgegeben (siehe Abbildung 2.1).

Die Überschrift der Nachrichtenbox und die Schaltfläche OK werden ab

dieser Abbildung im Buch nicht mehr dargestellt.

� Zu beachten ist, dass dabei die Persönliche Makroarbeitsmappe mitge-

zählt wird, falls sie vorhanden ist. Im VBE können Sie sehen, ob es diese

Mappe gibt.

Abbildung 2.1 Eigenschaft »Count«

2.2.2 Neue Arbeitsmappe erzeugen

Neue MappeMit folgender Prozedur wird eine neue Mappe erzeugt und geöffnet. Zur

Kontrolle wird die Anzahl der geöffneten Mappen vor und nach dem Erzeu-

gen ausgegeben:

Sub NeueMappe()MsgBox Workbooks.CountWorkbooks.AddMsgBox Workbooks.Count

End Sub

Listing 2.2 Sub NeueMappe() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Add()� Es wird die Methode Add() des Workbooks-Objekts aufgerufen. Dadurch

wird eine neue, leere Arbeitsmappe in Excel geöffnet. Diese ist dann die

aktive Arbeitsmappe.

� Gleichzeitig wird der Auflistung Workbooks ein weiteres Element hinzu-

gefügt, wie Sie an den beiden Ausgaben der Eigenschaft Count (vorher/

nachher) erkennen können.

3962.book Seite 51 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

52

2.2.3 Vorhandene Arbeitsmappe öffnen

Mappe öffnen Mit folgender Prozedur wird eine vorhandene Mappe geöffnet:

Sub VorhandeneMappe()Workbooks.Open "C:\Temp\Mappe1.xlsm"

End Sub

Listing 2.3 Sub VorhandeneMappe() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Open() � Es wird die Methode Open() des Workbooks-Objekts aufgerufen. Dadurch

wird die Arbeitsmappe mit dem angegebenen Namen im genannten

Verzeichnis geöffnet. Diese ist dann die aktive Arbeitsmappe.

� Der Auflistung Workbooks wird ein weiteres Element hinzugefügt.

� Im Beispiel wurde eine Datei über eine absolute Pfadangabe angespro-

chen. Sie können auch Dateien mit relativen Pfadangaben und Dateien

im gleichen Verzeichnis erreichen, siehe Abschnitt 2.2.10, »Pfad einer

Arbeitsmappe ermitteln«.

Programmabbruch � Falls die Arbeitsmappe (= Datei) nicht existiert, wird das Programm mit

einer Fehlermeldung abgebrochen (siehe Abbildung 2.2). Es kommt zu

einem sogenannten Laufzeitfehler. In Kapitel 4, »Fehlerbehandlung«,

werden Sie lernen, wie Sie solche Abbrüche vermeiden.

Abbildung 2.2 Programmabbruch durch Laufzeitfehler

Hinweis

In den Versionen vor Excel 2007 muss die Dateibezeichnung in der Proze-

dur wie folgt lauten: Mappe1.xls.

2.2.4 Alle Arbeitsmappen schließen

Mappen schließen Mit folgender Prozedur werden alle geöffneten Arbeitsmappen geschlossen:

3962.book Seite 52 Dienstag, 24. November 2015 3:53 15

2.2 Arbeitsmappen bearbeiten

53

2

Sub AlleMappenSchliessen()Workbooks.Close

End Sub

Listing 2.4 Sub AlleMappenSchliessen() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Close()� Es wird die Methode Close() des Objekts Workbooks aufgerufen. Sie

schließt alle geöffneten Arbeitsmappen, aber nicht den VBE oder die

Excel-Hilfe.

� Die Anwendung Excel bleibt weiterhin geöffnet.

� Falls ein Benutzer Änderungen in einer Arbeitsmappe vorgenommen

hat, wird er gefragt, ob er sie speichern möchte (siehe Abbildung 2.3).

Abbildung 2.3 Nachfrage im Anschluss an Dateiänderung

2.2.5 Name einer Arbeitsmappe ermitteln

Name der MappeMit folgender Prozedur wird der Name einer Arbeitsmappe auf zwei Arten

ermittelt:

Sub MappenName()MsgBox "Name: " & ThisWorkbook.NameMsgBox "Name mit Pfad: " & ThisWorkbook.FullName

End Sub

Listing 2.5 Sub MappenName() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

� ThisWorkbook verweist immer auf die Arbeitsmappe, in der diese Proze-

dur steht.

Eigenschaft

»Name«

Es wird der Wert der Eigenschaft Name ermittelt und ausgegeben. Dies ist

der Dateiname der Arbeitsmappe (siehe Abbildung 2.4).

3962.book Seite 53 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

54

Abbildung 2.4 Eigenschaft »Name«

FullName Zusätzlich wird der Wert der Eigenschaft FullName ermittelt und ausge-

geben. Dies ist der Dateiname der Arbeitsmappe inklusive vollständiger

Pfadangabe (siehe Abbildung 2.5).

Abbildung 2.5 Eigenschaft »FullName«

2.2.6 Aktive Arbeitsmappe ermitteln

Aktive Mappe Mit folgender Prozedur wird in zwei verschiedenen Situationen der Name

der aktiven Arbeitsmappe ermittelt:

Sub AktiveMappe()Workbooks.Open "C:\Temp\Mappe1.xlsm"MsgBox "Aktiv nach dem Öffnen: " & ActiveWorkbook.NameActiveWorkbook.CloseMsgBox "Aktiv nach dem Schließen: " & ActiveWorkbook.Name

End Sub

Listing 2.6 Sub AktiveMappe() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

� Zunächst wird eine weitere Arbeitsmappe geöffnet. Es wird in diesem

Beispiel davon ausgegangen, dass die angegebene Datei existiert.

ActiveWorkbook � ActiveWorkbook verweist immer auf die aktuell aktive Arbeitsmappe.

Eine Arbeitsmappe ist immer dann aktiv, wenn der Benutzer sie ausge-

wählt oder der Entwickler sie per Programm aktiviert hat. Eine Arbeits-

mappe, die soeben geöffnet wurde, ist automatisch aktiv.

� Zur Kontrolle wird der Name der aktiven Arbeitsmappe ausgegeben

(siehe Abbildung 2.6).

Abbildung 2.6 Aktive Arbeitsmappe nach dem Öffnen

3962.book Seite 54 Dienstag, 24. November 2015 3:53 15

2.2 Arbeitsmappen bearbeiten

55

2

Close()� Es wird die Methode Close() des Objekts Workbook aufgerufen. Dadurch

wird eine einzelne Arbeitsmappe, in diesem Fall die aktive Arbeits-

mappe, geschlossen. Danach ist wieder die Arbeitsmappe aktiv, die vor

dem Öffnen der gerade geschlossenen Arbeitsmappe aktiv war.

� Falls Sie eine bestimmte Arbeitsmappe schließen möchten, die Sie über

ihren Namen ansprechen, lautet die Anweisung für das vorliegende Bei-

spiel Workbooks("Mappe1.xlsm").Close. Dabei wird kein Pfadname ange-

geben, siehe auch Abschnitt 2.2.9, »Arbeitsmappe über Index oder

Namen auswählen«.

� Zur Kontrolle wird wiederum der Name der nun aktiven Arbeitsmappe

ausgegeben (siehe Abbildung 2.7).

Abbildung 2.7 Wieder aktive Arbeitsmappe nach dem Schließen

Hinweis

In den Versionen vor Excel 2007 muss die Dateibezeichnung in der Proze-

dur wie folgt lauten: Mappe3.xls.

2.2.7 Arbeitsmappe aktivieren

Mappe aktivierenMit folgender Prozedur wird eine bereits geöffnete Arbeitsmappe aktiviert.

Dies ist dann sinnvoll, wenn mehrere Arbeitsmappen geöffnet sind und Sie

sichergehen möchten, anschließend in einer bestimmten Arbeitsmappe

weiterzuarbeiten.

Sub MappeAktivieren()ThisWorkbook.ActivateMsgBox ActiveWorkbook.Name

End Sub

Listing 2.7 Sub MappeAktivieren() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Activate()� Es wird die Methode Activate() des Objekts Workbook aufgerufen.

Dadurch wird die angesprochene Arbeitsmappe, in diesem Fall diese

Arbeitsmappe, aktiviert.

� Zur Kontrolle wird der Name der aktiven Arbeitsmappe ausgegeben.

3962.book Seite 55 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

56

2.2.8 Arbeitsmappe speichern

Mappe speichern Mit folgender Prozedur wird diese Arbeitsmappe auf zwei verschiedene

Arten gespeichert:

Sub MappeSichern()ThisWorkbook.SaveThisWorkbook.SaveAs "C:\Temp\Mappe2.xlsm"MsgBox "Gesichert: " & ThisWorkbook.Saved

End Sub

Listing 2.8 Sub MappeSichern() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Save() � Es wird die Methode Save() des Objekts Workbook aufgerufen. Dadurch

wird diese Arbeitsmappe gespeichert.

SaveAs() � Zusätzlich wird die Methode SaveAs() des Objekts Workbook aufgerufen.

Dadurch wird diese Arbeitsmappe noch einmal gespeichert, und zwar im

Verzeichnis C:\Temp unter dem Namen Mappe2.xlsm. Anschließend

arbeiten Sie innerhalb der soeben angelegten Kopie der Mappe (!).

Saved � Zur Kontrolle wird der Wert der Eigenschaft Saved ermittelt und ausge-

geben. Dabei handelt es sich um einen sogenannten Wahrheitswert, also

False (falsch) oder True (wahr). Da die Arbeitsmappe soeben gespei-

chert wurde, ist der Wert aktuell True (siehe Abbildung 2.8). Nach einer

Änderung in der Arbeitsmappe hätte die Eigenschaft den Wert False.

Abbildung 2.8 Eigenschaft »Saved«

Hinweis

Sie können den Wert der Eigenschaft Saved in einer Verzweigung (siehe

Abschnitt 3.4, »Verzweigungen«) nutzen. Je nach Wert der Eigenschaft

(wahr oder falsch) kann bzw. sollte gespeichert werden.

Hinweis

In den Versionen vor Excel 2007 muss die Dateibezeichnung in der Proze-

dur und in der Erläuterung wie folgt lauten: Mappe2.xls.

3962.book Seite 56 Dienstag, 24. November 2015 3:53 15

2.2 Arbeitsmappen bearbeiten

57

2

2.2.9 Arbeitsmappe über Index oder Namen auswählen

Mappe auswählenMit folgender Prozedur werden bereits geöffnete Arbeitsmappen nachein-

ander mit zwei verschiedenen Techniken aktiviert:

Sub MappeAusListe()Workbooks(1).ActivateMsgBox ActiveWorkbook.NameWorkbooks("Mappe2.xlsm").ActivateMsgBox ActiveWorkbook.Name

End Sub

Listing 2.9 Sub MappeAusListe() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

Workbooks

(Index)

� Zunächst wird eine geöffnete Arbeitsmappe über den Index ausgewählt.

Der Index ist die laufende Nummer der Arbeitsmappe innerhalb der

Workbooks-Auflistung, von 1 bis zur Nummer des letzten Elements, die

der Anzahl der Elemente der Auflistung entspricht (Eigenschaft Count).

� Falls zwei Arbeitsmappen geöffnet sind, können nur die Indizes 1 oder 2

benutzt werden. Wenn Sie einen anderen Index wählen, erfolgt ein

Abbruch mit einer Fehlermeldung. Wie erwähnt, werden Sie in Kapitel 4,

»Fehlerbehandlung«, lernen, wie Sie solche Abbrüche vermeiden.

� Es ist nicht immer einfach, festzustellen, welches gerade die Arbeits-

mappe Nummer 1, 2 usw. ist. Daher ist die nachfolgend geschilderte

Methode vorzuziehen.

Workbooks

("Name")

� Eine bereits geöffnete Arbeitsmappe wird über ihren Namen (in Anfüh-

rungszeichen) ausgewählt. Dabei handelt es sich um den reinen Datei-

namen, ohne Pfad. Da Sie in Excel nicht gleichzeitig zwei Dateien mit

dem gleichen Namen öffnen können, auch wenn sie in unterschied-

lichen Verzeichnissen stehen, ist der Name eindeutig.

Hinweis

In den Versionen vor Excel 2007 muss die Dateibezeichnung in der Proze-

dur wie folgt lauten: Mappe2.xls.

2.2.10 Pfad einer Arbeitsmappe ermitteln

Pfad der MappeHäufig ist der Zugriff auf Arbeitsmappen im gleichen Verzeichnis oder

einem Unterverzeichnis erforderlich. Dazu muss zunächst der Pfad dieser

3962.book Seite 57 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

58

Arbeitsmappe (die den VBA-Code enthält) oder der Pfad der aktuellen

Arbeitsmappe ermittelt werden. Ein Beispiel, in dem der Pfad von drei ver-

schiedenen Arbeitsmappen ermittelt wird:

Sub PfadErmitteln()Workbooks.Open "C:\Temp\Mappe1.xlsm"MsgBox "Mappe1 ist in: " & ActiveWorkbook.PathActiveWorkbook.Close

MsgBox "Diese Mappe ist in: " & ThisWorkbook.Path

Workbooks.Open ThisWorkbook.Path & "\Mappe1.xlsm"ActiveWorkbook.Close

Workbooks.Open ThisWorkbook.Path & "\Zusatz\Test.xlsx"MsgBox "Test ist in: " & ActiveWorkbook.PathActiveWorkbook.Close

End Sub

Listing 2.10 Sub PfadErmitteln() in Mappe2.xlsm, Modul 1

Zur Erläuterung:

� Zunächst wird die Arbeitsmappe C:\Temp\Mappe1.xlsm geöffnet. Dies

ist jetzt die aktive Arbeitsmappe. Ihr Name wird ausgegeben, außerdem

der Pfad zu ihrem Verzeichnis, mithilfe der Eigenschaft Path (siehe

Abbildung 2.9). Dann wird sie wieder geschlossen.

Abbildung 2.9 Pfad der Mappe »Mappe1«

Path Anschließend wird der Pfad zu dieser Arbeitsmappe ausgegeben, in der

sich die oben angegebene Prozedur PfadErmitteln() befindet (siehe

Abbildung 2.10).

Abbildung 2.10 Pfad »dieser« Mappe

� Es wird erneut die Arbeitsmappe Mappe1.xlsm geöffnet. Diese steht im

gleichen Verzeichnis wie diese Arbeitsmappe, in der sich die oben ange-

3962.book Seite 58 Dienstag, 24. November 2015 3:53 15

2.3 Tabellenblätter bearbeiten

59

2

gebene Prozedur PfadErmitteln() befindet. Diese Methode wird häufig

benötigt, um sicher zu sein, dass eine Datei geöffnet wird, die im glei-

chen Verzeichnis steht. Die Arbeitsmappe Mappe1.xlsm wird wieder

geschlossen.

� Zuletzt wird die Arbeitsmappe Test.xlsx geöffnet. Diese steht im Unter-

verzeichnis Zusatz des Verzeichnisses dieser Arbeitsmappe (siehe Abbil-

dung 2.11). Ihr Name und ihr Pfad werden ausgegeben und dann wird sie

wieder geschlossen.

Abbildung 2.11 Pfad der Mappe »Test«

Hinweis

In den Versionen vor Excel 2007 müssen die Dateibezeichnungen in den

entsprechenden Zeilen der Prozedur und in der Erläuterung wie folgt lau-

ten: Mappe1.xls, erneut Mappe1.xls und Test.xls.

2.3 Tabellenblätter bearbeiten

WorksheetsDas Objekt Worksheets ist eine Auflistung, in der sich alle Tabellenblätter

der jeweiligen Arbeitsmappe befinden.

Zur Bearbeitung eines einzelnen Tabellenblattes gibt es verschiedene Mög-

lichkeiten:

� ActiveSheet: das aktuell aktive Arbeitsblatt

� Worksheets(Index): Index ist die laufende Nummer des Tabellenblattes

innerhalb der Worksheets-Auflistung, von 1 bis zur Nummer des letzten

Elements, die der Anzahl der Elemente entspricht (Count).

Worksheets

("Name")

� Worksheets("Name"): der Name des Tabellenblattes als Zeichenkette (in

Anführungszeichen)

Hinweis

In den folgenden Beispielen für den Einsatz von Worksheets wird jeweils

vorher diese Arbeitsmappe aktiviert. Dies dient der eindeutigen Zuordnung

für den Fall, dass mehrere Arbeitsmappen geöffnet sind.

3962.book Seite 59 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

60

2.3.1 Tabellenblatt erzeugen

Neues Blatt Mit folgender Prozedur wird in dieser Arbeitsmappe ein neues Tabellen-

blatt erzeugt:

Sub NeuesBlatt()ThisWorkbook.ActivateMsgBox Worksheets.CountWorksheets.AddActiveSheet.Name = "Neu"MsgBox Worksheets.Count

End Sub

Listing 2.11 Sub NeuesBlatt() in Mappe2.xlsm, Modul 2

Zur Erläuterung:

� Zunächst wird zur Kontrolle die Anzahl der Tabellenblätter dieser

Arbeitsmappe (der Wert der Eigenschaft Count des Objekts Worksheets)

ermittelt und ausgegeben.

Add() � Es wird die Methode Add() des Objekts Worksheets aufgerufen. Dadurch

wird ein neues Tabellenblatt erzeugt (siehe Abbildung 2.12). Das neue

Tabellenblatt wird dann automatisch zum aktiven Tabellenblatt.

� Durch die Angabe von Parametern können Sie genau bestimmen, an

welcher Stelle das neue Tabellenblatt eingefügt werden soll, siehe

Abschnitt 2.3.2, »Tabellenblatt kopieren«.

ActiveSheet � ActiveSheet bezeichnet das aktuell aktive Tabellenblatt. Der Name eines

Tabellenblattes kann ermittelt bzw. geändert werden.

� Es wird wiederum zur Kontrolle die Anzahl der Tabellenblätter ausgege-

ben. Sie hat sich erwartungsgemäß um 1 erhöht.

Abbildung 2.12 Neu erzeugtes Tabellenblatt

2.3.2 Tabellenblatt kopieren

Blatt kopieren Mit folgender Prozedur wird ein Tabellenblatt dieser Arbeitsmappe

kopiert:

3962.book Seite 60 Dienstag, 24. November 2015 3:53 15

2.3 Tabellenblätter bearbeiten

61

2

Sub BlattKopieren()ThisWorkbook.ActivateWorksheets("Tabelle1").Copy After:=Worksheets("Tabelle1")ActiveSheet.Name = "Tab1Kopie"

End Sub

Listing 2.12 Sub BlattKopieren() in Mappe2.xlsm, Modul 2

Zur Erläuterung:

Copy()� Es wird die Methode Copy() des Objekts Worksheets aufgerufen. Dadurch

wird ein Tabellenblatt kopiert. Es wird hinter einem Tabellenblatt in der

gleichen Arbeitsmappe eingefügt, und es wird zum aktiven Tabellen-

blatt (siehe Abbildung 2.13). Beide Tabellenblätter werden über ihren

Namen angesprochen.

Abbildung 2.13 Kopiertes Tabellenblatt

After, BeforeBei After handelt es sich um einen benannten Parameter. Solche Para-

meter können mithilfe des Operators := (Doppelpunkt und Gleichheits-

zeichen) angegeben werden. Statt After ist auch Before möglich. Dann

wird das Tabellenblatt vor einem anderen Tabellenblatt in der gleichen

Arbeitsmappe eingefügt.

� Wird gar kein Parameter angegeben, dann wird eine neue Arbeitsmappe

erzeugt, die die Kopie enthält.

� Zum Abschluss wird noch der Name des Tabellenblattes geändert.

Hinweis

Falls eine Methode mehrere Parameter hat, werden häufig benannte Para-

meter verwendet, siehe Abschnitt 5.3.5, »Benannte Parameter«. Diese Vor-

gehensweise bietet folgende Vorteile:

� Der Parameter kann eindeutig angesprochen werden.

� Nicht alle Parameter, die möglich sind, müssen genannt werden.

� Das Programm wird lesbarer.

3962.book Seite 61 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

62

2.3.3 Tabellenblatt verschieben

Blatt verschieben Mit folgender Prozedur wird ein Tabellenblatt dieser Arbeitsmappe ver-

schoben. Die zugehörige Methode Move() arbeitet sehr ähnlich wie die

Methode Copy():

Sub BlattVerschieben()ThisWorkbook.ActivateWorksheets("Tab1Kopie").Move Before:=Worksheets("Tabelle1")

End Sub

Listing 2.13 Sub BlattVerschieben() in Mappe2.xlsm, Modul 2

Zur Erläuterung:

Move() � Es wird die Methode Move() des Objekts Worksheets zum Verschieben

eines Tabellenblattes aufgerufen. Es wird hinter einem Tabellenblatt in

der gleichen Arbeitsmappe eingefügt, und es wird zum aktiven Tabellen-

blatt (siehe Abbildung 2.14).

Abbildung 2.14 Verschobenes Tabellenblatt

After, Before Statt mit Before hätten wir auch mit After oder ganz ohne Parameter

arbeiten können, wie bei Copy().

2.3.4 Tabellenblatt löschen

Blatt löschen Mit folgender Prozedur werden zwei Tabellenblätter dieser Arbeitsmappe

gelöscht:

Sub BlattLoeschen()ThisWorkbook.ActivateWorksheets("Neu").DeleteWorksheets("Tab1Kopie").Delete

End Sub

Listing 2.14 Sub BlattLoeschen() in Mappe2.xlsm, Modul 2

3962.book Seite 62 Dienstag, 24. November 2015 3:53 15

2.3 Tabellenblätter bearbeiten

63

2

Zur Erläuterung:

Delete()� Es wird die Methode Delete() des Objekts Worksheets zum Löschen eines

Tabellenblattes aufgerufen. Seit Excel 2016 erscheint dabei vor dem

Löschen keine Warnung mehr. Es könnten also versehentlich Daten

gelöscht werden!

� Beide Tabellenblätter werden über ihren Namen angesprochen.

2.3.5 Tabellenblatt aktivieren

Blatt aktivierenMit folgender Prozedur werden nacheinander zwei Tabellenblätter dieser

Arbeitsmappe aktiviert:

Sub BlattAktivieren()ThisWorkbook.ActivateWorksheets("Tabelle3").ActivateMsgBox ActiveSheet.NameWorksheets("Tabelle1").ActivateMsgBox ActiveSheet.Name

End Sub

Listing 2.15 Sub BlattAktivieren() in Mappe2.xlsm, Modul 2

Zur Erläuterung:

Activate()� Es wird die Methode Activate() des Objekts Worksheets zum Aktivieren

eines Tabellenblattes aufgerufen. Dies ist dann sinnvoll, wenn Sie

sicherstellen möchten, anschließend in einem bestimmten Tabellen-

blatt weiterzuarbeiten. Aktionen in Zellen oder Bereichen beziehen sich

anschließend auf dieses Tabellenblatt.

� Zur Kontrolle wird in der Prozedur der Name des jeweils aktiven Tabel-

lenblattes ausgegeben.

Stellen Sie vor Ausführung der Prozedur sicher, dass die genannten Tabel-

lenblätter in der Mappe existieren.

2.3.6 Tabellenblatt formatieren

CellsDie Eigenschaft Cells eines Tabellenblattes bietet die Möglichkeit, alle Zel-

len eines Tabellenblattes zu formatieren. Es können natürlich auch nur ein-

zelne Zellen oder nur Zellbereiche formatiert werden – dazu mehr ab

Abschnitt 2.4.7, »Zahlenformate anwenden«.

3962.book Seite 63 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

64

Alle Zellen Nachfolgend werden alle Zellen des Tabellenblattes Tabelle3 mit der Schrift-

art Arial und der Schriftgröße 10 formatiert.

Sub BlattFormatieren()ThisWorkbook.ActivateWorksheets("Tabelle3").Cells.Font.Name = "Arial"Worksheets("Tabelle3").Cells.Font.Size = 10

End Sub

Listing 2.16 Sub BlattFormatieren() in Mappe2.xlsm, Modul 2

Zur Erläuterung:

� Die Eigenschaft Cells bietet Zugriff auf alle Zellen eines Tabellenblattes.

Font � Die Eigenschaft Font einer Zelle bestimmt die Schriftarteigenschaften.

� Die Untereigenschaften Name und Size dienen der Festlegung des

Namens der Schriftart und der Größe der Schrift. Weitere Formatie-

rungsmöglichkeiten erläutert Abschnitt 2.4.9, »Schrifteigenschaften

bestimmen«.

� An dieser Stelle lässt sich wiederum gut die Objekthierarchie erkennen.

Es wird die Untereigenschaft Name der Untereigenschaft Font der Eigen-

schaft Cells des Tabellenblattes geändert.

2.3.7 Gitternetz, Zeilen- und Spaltenüberschriften

Anzeigefenster

gestalten

Sowohl die feinen Gitternetzlinien der einzelnen Zellen als auch Zeilen-

und Spaltenüberschriften können ein- oder ausgeblendet werden. Dies

sind eigentlich Eigenschaften des Anzeigefensters und nicht des Tabellen-

blattes. Sie sollen dennoch an dieser Stelle aufgeführt werden, da sie the-

matisch hierhergehören.

Eine Prozedur zum Ausblenden der genannten Objekte:

Sub BlattGitternetz()ThisWorkbook.ActivateWorksheets("Tabelle3").ActivateActiveWindow.DisplayGridlines = TrueActiveWindow.DisplayHeadings = True

End Sub

Listing 2.17 Sub BlattGitternetz() in Mappe2.xlsm, Modul 2

3962.book Seite 64 Dienstag, 24. November 2015 3:53 15

2.3 Tabellenblätter bearbeiten

65

2

Zur Erläuterung:

� Zunächst wird das gewünschte Tabellenblatt aktiviert.

ActiveWindow� Das aktive Fenster (ActiveWindow) enthält nunmehr dieses Tabellenblatt.

DisplayGridlines� Die Eigenschaft DisplayGridlines bestimmt den Zustand der Gitternetz-

linien (ein/aus).

DisplayHeadings� Die Eigenschaft DisplayHeadings bestimmt den Zustand der Zeilen- und

Spaltenüberschriften (ein/aus). In Abbildung 2.15 sehen Sie ein Tabellen-

blatt ohne Gitternetz und Überschriften.

Abbildung 2.15 Tabellenblatt ohne Gitternetz und Überschriften

Falls Sie die ausgeblendeten Elemente wieder einblenden wollen, müssen

Sie in die Prozedur jeweils True statt False eintragen.

2.3.8 Seite einrichten

PageSetupVorbereitungen für einen Ausdruck treffen Sie in der Seiteneinrichtung.

Die Seiteneinrichtung für ein vorhandenes Tabellenblatt werden Sie vom

Tabellenblatt aus ausführen. Für ein neues Tabellenblatt, das erst über eine

VBA-Anwendung mit Daten gefüllt werden wird, können Sie dazu die

Eigenschaft PageSetup nutzen. In der folgenden Prozedur wird aus den zahl-

reichen Möglichkeiten eine kleine Auswahl getroffen.

Hinweis

Zeichen »_«

(Unterstrich)

Einige Anweisungen dieser Prozedur, aber auch noch vieler weiterer Proze-

duren, sind sehr lang. Zeilen lassen sich mithilfe des Zeichens _ (Unter-

strich) in mehrere übersichtliche Programmzeilen zerlegen, siehe Ab-

schnitt 3.1.2, »Zeilen zerlegen«.

3962.book Seite 65 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

66

Sub BlattSeiteneinrichtung()ThisWorkbook.Activate

' DruckformatWorksheets("Tabelle3").PageSetup.Orientation = xlLandscape

' Gitternetz, Zeilen- und SpaltenüberschriftenWorksheets("Tabelle3").PageSetup.PrintGridlines = TrueWorksheets("Tabelle3").PageSetup.PrintHeadings = True

' GrößenänderungWorksheets("Tabelle3").PageSetup.Zoom = FalseWorksheets("Tabelle3").PageSetup.FitToPagesWide = 1Worksheets("Tabelle3").PageSetup.FitToPagesTall = 99

' Horizontale ZentrierungWorksheets("Tabelle3").PageSetup.CenterHorizontally = True

' Kopf- und FußzeileWorksheets("Tabelle3").PageSetup.LeftHeader = _

"Das ist die Kopfzeile"Worksheets("Tabelle3").PageSetup.CenterFooter = _

"Seite &P von &N"End Sub

Listing 2.18 Sub BlattSeiteneinrichtung() in Mappe2.xlsm, Modul 2

Zur Erläuterung:

Orientation � Die Eigenschaft Orientation bestimmt das Druckformat. Es gibt die Mög-

lichkeiten xlLandscape (Querformat) und xlPortrait (Hochformat).

Druckeigenschaften � Ähnlich wie beim Einrichten des Anzeigefensters wird mit den Eigen-

schaften PrintGridlines und PrintHeadings festgelegt, ob die Gitternetz-

linien und die Zeilen- und Spaltenüberschriften ausgedruckt werden

sollen oder nicht (True oder False).

Zoom � Mit der Eigenschaft Zoom bestimmen Sie den Prozentsatz der Vergröße-

rung oder Verkleinerung des Tabellenblattes für den Ausdruck. Falls

dabei eine Zahl über 100 angegeben wird, wird das Tabellenblatt vergrö-

ßert gedruckt. Bei einer Zahl kleiner als 100 wird es verkleinert gedruckt.

Der Wert False dient als Vorbereitung für eine Skalierung, die abhängig

von der Seitenzahl ist.

3962.book Seite 66 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

67

2

FitToPages…� Falls die Skalierung abhängig von der Seitenzahl ist, wird mit den Eigen-

schaften FitToPagesWide und FitToPagesTall jeweils eine Seitenanzahl

festgelegt. Damit wird angegeben, auf wie vielen Seiten das Tabellen-

blatt in der Breite (Wide) und in der Höhe (Tall) ausgedruckt wird.

Center…� Das Arbeitsblatt kann für den Ausdruck horizontal zentriert (CenterHo-

rizontally = True), aber auch vertikal zentriert (CenterVertically = True)

werden.

Header, Footer� Den Text und die Anordnung von Kopf- und Fußzeile bestimmen die

Eigenschaften …Header und …Footer. Es gibt jeweils die Präfixe Left…,

Right… und Center… für die verschiedenen Bereiche. Im vorliegenden Bei-

spiel wurden eine Kopfzeile links und eine Fußzeile zentriert angeord-

net. Innerhalb des Textes, der als Zeichenkette zugewiesen wird, können

bestimmte Variablen eingesetzt werden. Dabei gibt es u. a. die folgenden

Möglichkeiten:

– Seitennummer: &P

– Seitenanzahl: &N

– Druckdatum: &D

– Druckuhrzeit: &T

– Pfad zum Verzeichnis der Datei: &Z

– Dateiname: &F

– Tabellenblattname: &A

2.4 Auf Zellen und Zellbereiche zugreifen

Range, CellsMithilfe von Range bzw. Cells haben Sie zahlreiche Möglichkeiten, auf ein-

zelne Zellen oder ganze Zellbereiche eines Tabellenblattes zuzugreifen.

Range wurde bereits in Abschnitt 1.3, »Mit Makros arbeiten«, in den Beispie-

len zur Makroprogrammierung vorgestellt. Die aktuell aktive Zelle zur

Bearbeitung wird mit ActiveCell bezeichnet.

Hinweis

In den folgenden Beispielen für den Einsatz von Range und Cells wird

jeweils ein bestimmtes Tabellenblatt in dieser Arbeitsmappe aktiviert. Dies

dient der eindeutigen Zuordnung für den Fall, dass vorher eine andere

Arbeitsmappe oder ein anderes Tabellenblatt aktiviert ist.

3962.book Seite 67 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

68

2.4.1 Zellen über das Range-Objekt auswählen

Zellbereich Mithilfe des Objekts Range können sowohl zusammenhängende als auch

nicht zusammenhängende Zellbereiche ausgewählt werden. Dabei werden

ein Buchstabe für die Spalte und eine Nummer für die Zeile angegeben.

Einige Möglichkeiten sehen Sie in Tabelle 2.1.

Ganze Zeile

oder Spalte

Bei den Zellbereichen kann es sich aber auch um ganze Spalten oder Zeilen

handeln, wie Tabelle 2.2 zeigt.

Beachten Sie, dass auch die beiden letzten Ausdrücke mit Range jeweils in

eine Zeile gehören.

Range Beschreibung

Range("A3").Select einzelne Zelle

Range("A3:F7").Select zusammenhängender Zellbereich

Range("A3, C5, E2").Select mehrere nicht zusammenhängende

Zellen

Range("A8, B2:C4, E2").Select mehrere nicht zusammenhängende

Zellen bzw. Zellbereiche

Tabelle 2.1 Range-Zellbereiche

Range Beschreibung

Range("A:A").Select ganze Spalte

Range("C:E").Select mehrere zusammenhängende Spal-

ten

Range("B:D, F:F, H:I").Select mehrere nicht zusammenhängende

Spalten

Range("3:3").Select ganze Zeile

Range("3:5").Select mehrere zusammenhängende Zeilen

Range("3:5, 8:9, 12:12").Select mehrere nicht zusammenhängende

Zeilen

Range("A2:B4, 7:8, D:E, G2:H4").Select

eine Mischung aus mehreren Mög-

lichkeiten, siehe Abbildung 2.16

Tabelle 2.2 Range, ganze Spalten, ganze Zeilen

3962.book Seite 68 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

69

2

Nicht zusammen-

hängender Bereich

Im letzten Beispiel (siehe Abbildung 2.16) wurden insgesamt vier nicht

zusammenhängende Bereiche ausgewählt: zwei rechteckige Bereiche (A2:

B4 und G2:H4), zwei ganze Spalten (D und E) und zwei ganze Zeilen (7 und 8).

Die aktive Zelle (erkennbar am Rahmen) ist die erste ausgewählte Zelle (A2).

Abbildung 2.16 Range("A2:B4, 7:8, D:E, G2:H4").Select

Mit folgender Prozedur werden Zellbereiche eines ausgewählten Tabellen-

blattes selektiert. Anschließend wird jeweils die Adresse der aktiven Zelle

ausgegeben:

Sub ZellenMitRange()ThisWorkbook.Worksheets("Tabelle1").ActivateRange("A2").SelectMsgBox ActiveCell.AddressRange("C4:G7").SelectMsgBox ActiveCell.AddressRange("A5, C3:G7").SelectMsgBox ActiveCell.AddressRange("C3:G7, A5").SelectMsgBox ActiveCell.AddressRange("C:D").SelectMsgBox ActiveCell.Address

End Sub

Listing 2.19 Sub ZellenMitRange() in Mappe2.xlsm, Modul 3

Zur Erläuterung:

� Das Tabellenblatt Tabelle1 dieser Arbeitsmappe wird aktiviert. Aktionen

in Zellen oder Bereichen beziehen sich anschließend auf dieses Tabel-

lenblatt.

3962.book Seite 69 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

70

Select() � Es wird die Methode Select() des Objekts Range zum Auswählen von Zel-

len aufgerufen.

ActiveCell � Eine der ausgewählten Zellen ist die aktive Zelle. Diese kann mit Active-

Cell angesprochen werden. Falls mehrere Zellen ausgewählt wurden, ist

die obere linke Zelle des ersten angegebenen Bereichs aktiv.

Address � Allgemein ist Address die Adresse eines Zellbereichs. Hier geht es nur um

die Adresse der aktiven Zelle.

Reihenfolge � Nacheinander werden in diesem Beispiel ausgegeben: $A$2, $C$4, $A$5,

$C$3 und $C$1. Beachten Sie, dass im dritten und vierten Schritt die glei-

chen Zellen ausgewählt sind, sich aber die aktive Zelle aufgrund der Rei-

henfolge unterscheidet.

2.4.2 Zellen über das Cells-Objekt auswählen

Eine Zelle Das Objekt Cells bietet nicht nur die Möglichkeit, alle Zellen eines Tabel-

lenblattes zu erreichen, sondern auch einzelne Zellen oder Zellbereiche

auszuwählen. Dabei werden eine Nummer für die Zeile und eine Nummer

für die Spalte angegeben. Das Arbeiten mit dem Objekt Cells bietet gegen-

über dem Arbeiten mit dem Objekt Range Vorteile bei der Programmie-

rung. Sowohl die Zeilennummer als auch die Spaltennummer können

dann mithilfe von Variablen gebildet werden.

Mit folgender Prozedur werden Zellbereiche eines ausgewählten Tabellen-

blattes mit einem Wert versehen (siehe Abbildung 2.17):

Sub ZellenMitCells()ThisWorkbook.Worksheets("Tabelle1").ActivateCells(1, 5).Value = "abc"Range(Cells(3, 5), Cells(4, 7)).Value = "xyz"

End Sub

Listing 2.20 Sub ZellenMitCells() in Mappe2.xlsm, Modul 3

Abbildung 2.17 Mit dem Befehl »Cells« arbeiten

3962.book Seite 70 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

71

2

Zur Erläuterung:

� Die Zelle 1, 5 erhält mithilfe der Eigenschaft Value den Wert abc. Sie steht

in der Zeile 1 und der Spalte 5, ist also die Zelle E1.

Range mit Cells� In Verbindung mit dem Objekt Range können aber auch Zellbereiche aus-

gewählt werden. Hier ist dies der Bereich von Zelle 3, 5 (= E3) bis Zelle

4, 7 (= G4).

2.4.3 Zellinhalte verschieben oder kopieren

Mit folgender Prozedur werden in einem ausgewählten Tabellenblatt:

� die Inhalte eines Zellbereichs verschoben

� die Inhalte eines anderen Zellbereichs kopiert

Besserer CodeBeides haben Sie bereits in Abschnitt 2.4.1, »Zellen über das Range-Objekt

auswählen«, mit Makros durchgeführt. Die hier vorgestellten Methoden

umfassen weniger Codezeilen, sind besser zu warten und schneller im

Ablauf:

Sub ZellinhalteVerschiebenKopieren()ThisWorkbook.Worksheets("Tabelle1").ActivateRange("A1:A2").Cut Destination:=Range("C1")Range("A5:A6").Copy Destination:=Range("C5")

End Sub

Listing 2.21 Sub ZellinhalteVerschiebenKopieren() in Mappe2.xlsm, Modul 3

Zur Erläuterung:

Cut()� Es wird die Methode Cut() des Objekts Range zum Ausschneiden von Zel-

len aufgerufen:

Destination– Falls ein Ziel mit dem optionalen Parameter Destination angegeben

ist, werden die Zellen dorthin verschoben.

– Falls kein Ziel angegeben ist, werden die Zellen in die Zwischenablage

verschoben und können an anderer Stelle wieder eingefügt werden.

Copy()� Es wird die Methode Copy() des Objekts Range zum Kopieren von Zellen

aufgerufen. Wie bei der Methode Cut() kann ein Ziel angegeben werden.

Ansonsten liegt die Kopie in der Zwischenablage und kann an anderer

Stelle wieder eingefügt werden.

Den Tabelleninhalt vor Ablauf der Prozedur sehen Sie in Abbildung 2.18.

3962.book Seite 71 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

72

Abbildung 2.18 Originalinhalte

Den Tabelleninhalt nach Ablauf der Prozedur sehen Sie in Abbildung 2.19.

Abbildung 2.19 Inhalte nach dem Verschieben und Kopieren

2.4.4 Teile von Zellinhalten kopieren

Zwischenablage In Abschnitt 2.4.3, »Zellinhalte verschieben oder kopieren«, wurde bereits

darauf hingewiesen, dass Zellinhalte auch in die Zwischenablage kopiert

werden können. Dies ist von Vorteil, falls Sie nur ausgewählte Teile des Zell-

inhalts kopieren möchten, z. B. nur die Werte oder nur die Formate. Dies

zeigt das folgende Beispiel:

Sub TeileKopieren()ThisWorkbook.Worksheets("Tabelle1").ActivateRange("A1:A2").CopyRange("C1").PasteSpecial xlPasteValuesRange("A5:A6").CopyRange("C5").PasteSpecial xlPasteFormats

End Sub

Listing 2.22 Sub TeileKopieren() in Mappe2.xlsm, Modul 3

Zur Erläuterung:

� Es wird zweimal die Methode Copy() zum Kopieren eines Bereichs in die

Zwischenablage aufgerufen.

3962.book Seite 72 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

73

2

PasteSpecial()� In beiden Fällen wird die Methode PasteSpecial() zum Einfügen speziel-

ler Teile von Zellinhalten aufgerufen. Beim ersten Mal werden nur die

Werte eingefügt, beim zweiten Mal nur die Formate.

Den Tabelleninhalt vor Ablauf der Prozedur sehen Sie in Abbildung 2.20.

Abbildung 2.20 Originalinhalte und -formate

Den Tabelleninhalt nach Ablauf der Prozedur sehen Sie in Abbildung 2.21.

Abbildung 2.21 Inhalte nach dem Kopieren von Werten bzw. Formaten

2.4.5 Zellinhalt löschen

LöschenMit folgender Prozedur werden bestimmte Zellinhalte gelöscht:

Sub ZellinhaltLoeschen()ThisWorkbook.Worksheets("Tabelle1").ActivateRange("A1:A2").ClearRange("A3:A4").ClearContentsRange("A5:A6").ClearFormats

End Sub

Listing 2.23 Sub ZellinhaltLoeschen() in Mappe2.xlsm, Modul 3

Zur Erläuterung:

Clear()� Die Methode Clear() des Objekts Range dient dem Löschen von Zell-

inhalten, inklusive Formatierung und Kommentaren.

3962.book Seite 73 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

74

ClearContents() � Mithilfe der Methode ClearContents() werden nur die Inhalte gelöscht.

Formate und Kommentare bleiben erhalten.

ClearFormats() � Die Methode ClearFormats() wird zum Löschen der Formate genutzt.

Inhalte und Kommentare bleiben erhalten.

Den Tabelleninhalt vor Ablauf der Prozedur sehen Sie in Abbildung 2.22.

Abbildung 2.22 Originalinhalte und -formate

Den Tabelleninhalt nach Ablauf der Prozedur sehen Sie in Abbildung 2.23.

Abbildung 2.23 Inhalte nach dem Löschen von Werten und Formaten

2.4.6 Werte und Formeln eintragen

Zellinhalte

eintragen

Mit der nachfolgenden Prozedur werden Zahlen, Datumsangaben, Pro-

zentzahlen und Formeln in die betreffenden Zellen des Tabellenblattes

Tabelle2 eingetragen. Stellen Sie sicher, dass es existiert.

Sub WerteFormeln()ThisWorkbook.Worksheets("Tabelle2").Activate

' ZahlRange("A1").Value = 5.8Range("A2").Value = 1629.9Range("A3").FormulaLocal = "=SUMME(A1:A2)"

' Datum

3962.book Seite 74 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

75

2

Range("A4").Value = "2016/03/31"Range("A5").Value = "2015/11/10"Range("A6").FormulaLocal = "=A4-A5"

' ZahlRange("A7").Value = 0.125

End Sub

Listing 2.24 Sub WerteFormeln() in Mappe2.xlsm, Modul 3

Abbildung 2.24 zeigt das Ergebnis.

Abbildung 2.24 Werte und Formeln eintragen

Zur Erläuterung:

Value� Mithilfe der bereits bekannten Eigenschaft Value wird den Zellen A1 und

A2 jeweils ein Zahlenwert zugewiesen.

Punkt statt Komma� Bei Zahlen mit Nachkommastellen ist ein Punkt statt eines Kommas ein-

zutragen.

FormulaLocal� Die Formel =SUMME(A1:A2) wird als Wert der Eigenschaft FormulaLocal in

der von Excel gewohnten Form (in Deutsch) eingetragen. In der Bearbei-

tungszeile ist erkennbar, dass der Inhalt der Zelle A3 nach wie vor eine

Formel ist. Mehr zu den Formula-Eigenschaften sehen Sie in Abschnitt

8.1, »Formeln zuweisen und lesen«.

Datum� Bei Datumsangaben dürfen die Anführungsstriche nicht fehlen. Es emp-

fiehlt sich, die amerikanische Schreibweise zu benutzen. Dann werden

die Werte direkt als Datumsangaben erkannt und formatiert (führende

Nullen).

� Die Formel =A4-A5 dient der Berechnung der Tagesdifferenz zwischen

den beiden Datumsangaben.

� Der Inhalt der Zelle A7 ist wiederum ein Zahlenwert.

3962.book Seite 75 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

76

2.4.7 Zahlenformate anwenden

Format angeben Mit folgender Prozedur werden die Formate für Zahlen, Datumsangaben

und Prozentzahlen in Zellen festgelegt:

Sub ZellformatZahlen()ThisWorkbook.Worksheets("Tabelle2").Activate

' ZahlRange("A1:A3").NumberFormatLocal = "#.##0,00 €"

' DatumRange("A4:A5").NumberFormatLocal = "TTTT, ""den"" TT. MMMM JJ"Range("A6").NumberFormatLocal = "0 ""Tage"""

' ProzentRange("A7").NumberFormatLocal = "0,00 %"

End Sub

Listing 2.25 Sub ZellformatZahlen() in Mappe2.xlsm, Modul 3

Das Ergebnis sehen Sie in Abbildung 2.25.

Abbildung 2.25 Zahlenformate anwenden

Zur Erläuterung:

Number-

FormatLocal

� Mithilfe der Eigenschaft NumberFormatLocal können Formate in der von

Excel gewohnten Form (in Deutsch) eingetragen werden.

Formatierungs-

zeichen

� Bei Zahlen, Währungs- oder Prozentangaben werden im Beispiel die fol-

genden Zeichen verwendet:

– #: Ziffer nur anzeigen, falls vorhanden

– 0: Ziffer immer anzeigen

– , (Komma): Nachkommastelle abtrennen

– . (Punkt): Tausenderpunkt setzen

3962.book Seite 76 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

77

2

– € (Euro): Währungszeichen verwenden

– % (Prozent): Zahl mit 100 multiplizieren und mit einem Prozentzei-

chen darstellen

Datumsformat� Bei Datumsangaben werden im Beispiel die folgenden Zeichen verwendet:

– TTTT: Wochentagsname in Deutsch ausschreiben

– TT: zwei Ziffern für den Tag im Monat anzeigen

– MMMM: Monatsname in Deutsch ausschreiben

– JJ: zwei Ziffern für das Jahr anzeigen

Text im Format� Eine Besonderheit ist zu beachten: Falls Text (z. B. die Wörter den oder

Tage) in das Format integriert wird, ist dieser bekanntlich in Excel in dop-

pelten Anführungsstrichen zu notieren. So kann kein Konflikt mit den

standardmäßigen Formatangaben auftreten. Da der Wert der Eigen-

schaft NumberFormatLocal schon in doppelten Anführungszeichen steht,

muss dieser Formatierungstext in zweifachen doppelten Anführungs-

strichen stehen.

2.4.8 Zellen ausrichten

AusrichtenMit folgender Prozedur werden Zellen auf verschiedene Art und Weise aus-

gerichtet:

Sub ZellformatAusrichtung()ThisWorkbook.Worksheets("Tabelle2").Activate

Range("C1").Value = "Hallo"Range("C1").HorizontalAlignment = xlCenterRange("C1").VerticalAlignment = xlTop

Range("C2").Value = "Das ist ein längerer Text"Range("C2").WrapText = True

Range("C3").Value = "Hallo"Range("C3:C7").MergeCells = TrueRange("C3:C7").Orientation = xlVertical

Range("C8").Value = "Hallo"Range("C8").Orientation = 45

End Sub

Listing 2.26 Sub ZellformatAusrichtung() in Mappe2.xlsm, Modul 3

3962.book Seite 77 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

78

Das Ergebnis ist in Abbildung 2.26 dargestellt.

Abbildung 2.26 Zellen ausrichten

Zur Erläuterung:

…Alignment � Text wird mithilfe der Eigenschaft HorizontalAlignment und Vertical-

Alignment ausgerichtet. Zulässige Konstanten sind z. B.:

– für die horizontale Ausrichtung xlLeft (linksbündig), xlRight (rechts-

bündig), xlCenter (zentriert) und xlJustify (Blocksatz)

– für die vertikale Ausrichtung xlBottom (am unteren Rand), xlCenter

(vertikal zentriert) und xlTop (am oberen Rand)

– Mehr zum Thema Konstanten finden Sie in Abschnitt 3.2.4, »Konstan-

ten und Enumerationen«.

WrapText � Die Eigenschaft WrapText bestimmt die Anordnung längerer Texte:

– Falls WrapText den Wert True hat, wird der Text innerhalb der Zelle

über mehrere Zeilen verteilt.

– Falls WrapText den Wert False hat, wird der Text nur in einer Zeile

geschrieben, die gegebenenfalls über den rechten Rand der Zelle hin-

ausgeht.

MergeCells � Die Eigenschaft MergeCells bestimmt, ob Zellen miteinander verbunden

werden können:

– Wenn MergeCells den Wert True hat, werden die Zellen des genannten

Bereichs miteinander verbunden dargestellt.

– Wenn MergeCells den Wert False hat, werden die Zellen des genann-

ten Bereichs einzeln dargestellt.

3962.book Seite 78 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

79

2

Orientation� Die einzelnen Zeichen eines Zellinhalts können mithilfe der Eigenschaft

Orientation folgendermaßen geschrieben werden:

– übereinander mit dem Wert xlVertical

– in einem schrägen Winkel mit einem Zahlenwert zwischen

– 90 Grad und + 90 Grad. Der Normalwert ist 0 Grad

2.4.9 Schrifteigenschaften bestimmen

SchriftMit folgender Prozedur werden die Schrifteigenschaften von Zellen

bestimmt:

Sub ZellformatSchrift()ThisWorkbook.Worksheets("Tabelle2").ActivateRange("C1").Font.Name = "Tahoma"Range("C1").Font.Bold = TrueRange("C1").Font.Italic = TrueRange("C1").Font.Underline = TrueRange("C1").Font.Size = 20Range("C1").Font.Color = vbRed

End Sub

Listing 2.27 Sub ZellformatSchrift() in Mappe2.xlsm, Modul 3

Das Ergebnis sehen Sie in Abbildung 2.27.

Abbildung 2.27 Zellenschrift gestalten

Zur Erläuterung:

Font� Die Eigenschaft Font steht für die Formatierung der Schriftart in der

Zelle. Sie hat zahlreiche Untereigenschaften, z. B.:

– Name für den Namen der Schriftart

– Bold für das Format Fett (True oder False)

– Italic für das Format Kursiv (True oder False)

– Underline für das Attribut Unterstrichen (True oder False)

– Size für die Größe der Schrift

– Color für die Farbe der Schrift

3962.book Seite 79 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

80

Farbe � Farben können auf verschiedene Art und Weise angegeben werden:

– speziell für die Grundfarben mithilfe von Farbkonstanten, siehe

Abschnitt 3.2.4, »Konstanten und Enumerationen«

RGB() – allgemein mit der Funktion RGB(). Diese Funktion hat drei Parameter,

die für Rot-, Grün- und Blauwerte der Farbe stehen, jeweils zwischen 0

und 255. Im vorliegenden Beispiel hätte also die folgende Anweisung

dasselbe bewirkt: Range("C1").Font. Color = RGB(255, 0, 0).

2.4.10 Einzelne Zeichen formatieren

Zeichen-

formatierung

Mit folgender Prozedur werden einzelne Zeichen innerhalb von mehreren

Zeichenketten formatiert:

Sub EinzelneZeichen()ThisWorkbook.Worksheets("Tabelle2").Activate

Range("E2").Value = "x2"Range("E3").Value = "x3"Range("E2:E3").Characters(2, 1).Font.Superscript = True

Range("E4:E6").Value = "a38 + a39"Range("E4:E6").Characters(2, 2).Font.Subscript = TrueRange("E4:E6").Characters(8, 2).Font.Subscript = True

End Sub

Listing 2.28 Sub EinzelneZeichen() in Mappe2.xlsm, Modul 3

Das Ergebnis sehen Sie in Abbildung 2.28.

Abbildung 2.28 Einzelne Zeichen formatieren

Zur Erläuterung:

Characters � Die Eigenschaft Characters liefert Teile einer Zeichenfolge. Diese können

anschließend separat formatiert werden. Es müssen zwei Werte festge-

legt werden:

3962.book Seite 80 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

81

2

– Die erste Ziffer bestimmt die Stelle, an der die Teilzeichenfolge

beginnt. Das erste Zeichen einer Zeichenfolge hat die Nummer 1.

– Die zweite Ziffer bestimmt die Länge der Teilzeichenfolge.

Superscript� Im ersten Beispiel wird für zwei Zellen die Teilzeichenfolge hinter dem

Zeichen x geliefert. Mithilfe der Untereigenschaft Superscript der Font-

Eigenschaft des Textes wird dieses Zeichen hochgestellt.

Subscript� Im zweiten Beispiel werden für insgesamt drei Zellen jeweils die beiden

Teilzeichenfolgen 38 und 39 geliefert. Mithilfe der Untereigenschaft Sub-

script der Font-Eigenschaft des Textes werden diese Zeichen tiefgestellt.

2.4.11 Zellbereiche einrahmen

RahmenMit folgender Prozedur werden verschiedene Zellbereiche ganz oder teil-

weise eingerahmt:

Sub ZellformatRahmen()ThisWorkbook.Worksheets("Tabelle2").Activate

Range("E2:E3").Borders.LineStyle = xlDoubleRange("E2:E3").Borders.Weight = xlThickRange("E2:E3").Borders.Color = vbGreen

Range("E4:E6").Borders(xlEdgeLeft).Weight = xlThinRange("E4:E6").Borders(xlEdgeRight).Weight = xlThinRange("E4:E6").Borders(xlInsideHorizontal).Weight = xlHairline

End Sub

Listing 2.29 Sub ZellformatRahmen() in Mappe2.xlsm, Modul 3

Das Ergebnis sehen Sie in Abbildung 2.29.

Abbildung 2.29 Zellbereiche einrahmen

3962.book Seite 81 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

82

Zur Erläuterung:

Borders � Die Eigenschaft Borders dient der Bearbeitung des Rahmens:

– Falls nach Borders keine weitere Angabe in Klammern folgt, werden

die Eigenschaften für alle Rahmenlinien eingestellt, innen wie außen.

Rahmenteile – Es können aber auch die Eigenschaften von ausgewählten Rahmen-

linien bestimmt werden. Zulässige Konstanten sind z. B. xlEdgeLeft (lin-

ker Rahmen), xlEdgeRight (rechter Rahmen), xlEdgeTop (oberer

Rahmen), xlEdgeBottom (unterer Rahmen), xlInsideHorizontal (innere

horizontale Zwischenlinien) und xlInsideVertical (innere vertikale

Zwischenlinien).

– Falls also nur der Außenrahmen eines Zellbereichs eingestellt werden

soll, werden die Konstanten genutzt, deren Name mit xlEdge beginnt.

LineStyle � Mit der Eigenschaft LineStyle wird die Linienart für den Rahmen festge-

legt. Zulässige Konstanten sind z. B. xlContinuous (durchgehende Linie),

xlDot (gepunktete Linie) und xlDouble (doppelte Linie).

Weight � Die Eigenschaft Weight bestimmt die Stärke des Rahmens. Zulässige

Konstanten aus der Enumeration xlBorderWeight sind xlHairline (ganz

feine Linie), xlThin (feine Linie), xlMedium (mittelstarke Linie) und

xlThick (starke Linie). Mehr zu diesem Thema finden Sie in Abschnitt

3.2.4, »Konstanten und Enumerationen«.

Color � Durch die Eigenschaft Color wird die Rahmenfarbe bestimmt. Wie bei

allen Farbangaben können Sie mit den Farbkonstanten oder mit der

Funktion RGB() arbeiten.

2.4.12 Hintergrundmuster von Zellen gestalten

Muster Mit folgender Prozedur wird das Hintergrundmuster der zwei Zellen E3

und E6 gestaltet:

Sub ZellformatMuster()ThisWorkbook.Worksheets("Tabelle2").ActivateRange("E2, E6").Interior.Color = vbYellow

End Sub

Listing 2.30 Sub ZellformatMuster() in Mappe2.xlsm, Modul 3

Das Ergebnis sehen Sie in Abbildung 2.30.

3962.book Seite 82 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

83

2

Abbildung 2.30 Hintergrundmuster von Zellen gestalten

Zur Erläuterung:

Interior� Die Eigenschaft Interior dient der Bearbeitung des Innenbereichs einer

Zelle.

� Sie hat verschiedene Untereigenschaften, u. a. Color für die Innenfarbe.

2.4.13 Zellen einfügen

Zellbereiche

einfügen

Mit folgender Prozedur werden Zellbereiche in einem ausgewählten Tabel-

lenblatt eingefügt:

Sub ZelleEinfuegen()ThisWorkbook.Worksheets("Tabelle1").ActivateRange("A2:A3").Insert Shift:=xlShiftDownRange("6:7").Insert

End Sub

Listing 2.31 Sub ZelleEinfuegen() in Mappe2.xlsm, Modul 3

Zur Erläuterung:

Insert()� Es wird die Methode Insert() des Objekts Range zum Einfügen von Zel-

len aufgerufen.

Shift� Mithilfe des optionalen Parameters Shift entscheiden Sie, was mit den

Nachbarzellen passieren soll. Falls dieser Parameter weggelassen wird,

entscheidet Excel anhand der Bereichsform.

� Im ersten Fall werden die unteren Nachbarzellen nach unten verscho-

ben. Dazu dient die Konstante xlShiftDown. Die Konstante xlShiftTo-Right hätte die rechten Nachbarzellen nach rechts verschoben.

� Im zweiten Fall sind ganze Zeilen ausgewählt. Es kann nur eine Verschie-

bung nach unten stattfinden. Daher macht die Angabe des Parameters

Shift keinen Sinn.

3962.book Seite 83 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

84

Den Tabelleninhalt vor Ablauf der Prozedur sehen Sie in Abbildung 2.31.

Abbildung 2.31 Originalstruktur der Tabelle

Den Tabelleninhalt nach Ablauf der Prozedur sehen Sie in Abbildung 2.32.

Abbildung 2.32 Struktur nach dem Einfügen von Zellen und Zeilen

Hinweis

EntireRow,

EntireColumn

Die Anweisung Range("A2:A3").EntireRow.Insert würde zwei ganze

neue Zeilen vor den Zeilen des angegebenen Bereichs einfügen, hier also

vor den Zeilen 2 und 3. Entsprechend würde durch die Anweisung

Range("A2:A3").EntireColumn.Insert eine ganze neue Spalte vor der

Spalte A eingefügt.

2.4.14 Zellen löschen

Löschen Mit folgender Prozedur werden Zellbereiche eines ausgewählten Tabellen-

blattes gelöscht:

Sub ZelleLoeschen()ThisWorkbook.Worksheets("Tabelle1").ActivateRange("6:7").Delete

3962.book Seite 84 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

85

2

Range("A2:A3").Delete Shift:=xlShiftUpEnd Sub

Listing 2.32 Sub ZelleLoeschen() in Mappe2.xlsm, Modul 3

Zur Erläuterung:

Delete()� Es wird die Methode Delete() des Objekts Range zum Löschen von Zellen

aufgerufen.

Shift� Auch hier gibt es einen optionalen Parameter Shift, mit dem Sie ent-

scheiden, was mit den Nachbarzellen passieren soll. Falls dieser Para-

meter weggelassen wird, entscheidet Excel wiederum aufgrund der

Bereichsform.

� Im ersten Fall sind ganze Zeilen ausgewählt. Es kann nur eine Verschie-

bung (aller Zeilen darunter) nach oben stattfinden. Daher ergibt die

Angabe des Parameters Shift keinen Sinn.

� Im zweiten Fall werden die unteren Nachbarzellen nach oben verscho-

ben. Dazu dient die Konstante xlShiftUp. Die Konstante xlShiftToLeft

hätte die rechten Nachbarzellen nach links verschoben.

Im vorliegenden Beispiel wird durch das Löschen von Zellen und Zeilen das

vorherige Einfügen von Zellen und Zeilen rückgängig gemacht.

Hinweis

EntireRow,

EntireColumn

Die Anweisung Range("A2:A3").EntireRow.Delete würde die gesamten

Zeilen des angegebenen Bereichs löschen, hier also die Zeilen 2 und 3. Ent-

sprechend würde durch die Anweisung Range("A2:A3").EntireCo-lumn.Delete die gesamte Spalte A gelöscht.

2.4.15 Zeilenhöhe und Spaltenbreite

Höhe, BreiteMit folgender Prozedur werden die Höhe bestimmter Zeilen und die Breite

bestimmter Spalten eingestellt:

Sub HoeheBreite()ThisWorkbook.Worksheets("Tabelle2").ActivateRange("1:2").RowHeight = 55

3962.book Seite 85 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

86

Range("B:B,D:D").ColumnWidth = 3End Sub

Listing 2.33 Sub HoeheBreite() in Mappe2.xlsm, Modul 3

Das Ergebnis ist in Abbildung 2.33 dargestellt.

Abbildung 2.33 Zeilenhöhe und Spaltenbreite einstellen

Zur Erläuterung:

� Als Zellbereich werden die Zeilen 1 und 2 sowie die Spalten B und D aus-

gewählt.

RowHeight � Die Eigenschaft RowHeight verändert die Zeilenhöhe.

ColumnWidth � Die Eigenschaft ColumnWidth bestimmt die Spaltenbreite.

Hinweis

AutoFit(),

Columns/Rows

Die optimale Einstellung der Zeilenhöhe und der Spaltenbreite lässt sich

über die Methode AutoFit() des Unterobjekts Columns bzw. Rows erreichen.

Ein Beispiel: Range("G:G").Columns.AutoFit stellt die Breite der Spalte G

optimal ein. Range("1:2").Rows.AutoFit stellt die Höhe der Zeilen 1 und 2

optimal ein.

2.4.16 Benutzten Zellbereich erkennen

Benutzter Bereich Eine nützliche Eigenschaft eines Tabellenblattes ist der benutzte Bereich

(UsedRange). Damit ist der kleinste zusammenhängende rechteckige Zellbe-

reich gemeint, der alle nicht leeren Zellen umfasst.

Nicht leere Zelle Das Problem ist nur: Nicht alle Inhalte einer Zelle können Sie sehen. Auch

die Formatierung einer Zelle kann einen Inhalt darstellen. Falls ein Datum

3962.book Seite 86 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

87

2

in eine Zelle geschrieben und anschließend wieder gelöscht wurde, ist die

Zelle nach wie vor mit dem Datumsformat formatiert. Somit wird sie in

den UsedRange einbezogen. Um hier sicherzugehen, könnten Sie (je nach

Anwendung) vor dem Einfügen neuer Daten alle Zellen der Tabelle löschen

(mit Cells.Delete).

Mit folgender Prozedur werden alle Zellen des benutzten Bereichs durch

einen roten Rahmen hervorgehoben und gezählt:

Sub BenutzterBereich()ThisWorkbook.Worksheets("Tabelle1").ActivateActiveSheet.UsedRange.Borders.Color = vbRedActiveSheet.UsedRange.Interior.Color = vbYellowMsgBox "Anzahl: " & ActiveSheet.UsedRange.Count

End Sub

Listing 2.34 Sub BenutzterBereich() in Mappe2.xlsm, Modul 3

Nehmen wir an, es wurden die Zellen in Abbildung 2.34 benutzt.

Abbildung 2.34 Zellen mit Inhalt

Der benutzte Bereich ergibt sich dann wie in Abbildung 2.35.

Abbildung 2.35 Benutzter Bereich

3962.book Seite 87 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

88

Zur Erläuterung:

UsedRange � Mit ActiveSheet.UsedRange werden alle benutzten Zellen des aktiven

Tabellenblattes erfasst.

� Die Eigenschaft Count ergibt für ein Range-Objekt, wie bei Arbeitsmappen

oder Tabellenblättern, eine Anzahl, hier 10.

2.4.17 Spezielle Zellen erkennen

SpecialCells() Die Methode SpecialCells() ist in der Lage, spezielle Zellen zu erkennen.

Anschließend können diese Zellen besonders bearbeitet bzw. hervorgeho-

ben werden. Im folgenden Beispiel werden verschiedene Zellen farblich

hervorgehoben bzw. gezählt:

� alle Zellen eines Bereichs, die eine Formel enthalten

� alle Zellen eines Bereichs, die leer sind

� die letzte Zelle eines Bereichs, in diesem Fall des benutzten Bereichs

Sub SpezielleZellen()ThisWorkbook.Worksheets("Tabelle2").Activate

' Zellen mit FormelnRange("A1:A8").SpecialCells(xlCellTypeFormulas). _

Interior.Color = vbYellowMsgBox "Formeln: " & Range("A1:A9"). _

SpecialCells(xlCellTypeFormulas).Count

' Leere ZellenRange("A1:A8").SpecialCells(xlCellTypeBlanks). _

Interior.Color = vbCyanMsgBox "Leer: " & Range("A1:A8").SpecialCells _

(xlCellTypeBlanks).Count

' Letzte benutzte ZelleActiveSheet.UsedRange.SpecialCells _

(xlCellTypeLastCell).Interior.Color = vbGreenMsgBox "Letzte Zeile: " & ActiveSheet.UsedRange. _

SpecialCells(xlCellTypeLastCell).RowMsgBox "Letzte Spalte: " & ActiveSheet.UsedRange. _

SpecialCells(xlCellTypeLastCell).ColumnEnd Sub

Listing 2.35 Sub SpezielleZellen() in Mappe2.xlsm, Modul 3

3962.book Seite 88 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

89

2

Abbildung 2.36 zeigt das Ergebnis.

Abbildung 2.36 Spezielle Zellen

Zur Erläuterung:

SpecialCells()� Mithilfe verschiedener Konstanten liefert die Methode SpecialCells()

unterschiedliche Bereiche von Zellen zurück.

Zelle mit Formel� Der Typ xlCellTypeFormulas liefert Zellen, die Formeln enthalten. Hier

sind dies die Zellen A3 und A6.

Leere Zelle� Der Typ xlCellTypeBlanks liefert Zellen, die leer sind, hier die Zelle A8.

Letzte Zelle� Der Typ xlCellTypeLastCell liefert die letzte Zelle eines Bereichs. In die-

sem Fall ist es der benutzte Bereich (UsedRange). Es handelt sich um die

Zelle E8.

� Mithilfe der Eigenschaften Row und Column können Sie sich die Zeilen-

nummer und die Spaltennummer einer Zelle angeben lassen. In diesem

Fall ist es die Zeile und die Spalte der letzten Zelle des benutzten

Bereichs.

Hinweis

Bei einem Zellbereich wird mit den Eigenschaften Row bzw. Column die

Nummer der Zeile bzw. der Spalte der aktiven Zelle ausgegeben. Ein Bei-

spiel: Range("A3:B5").Row ergibt 3 und Range("A3:B5").Column ergibt 1.

3962.book Seite 89 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

90

2.4.18 Versatz mit Offset vornehmen

Offset Mit dem Offset für einen Zellbereich bezeichnen Sie einen zweiten Zellbe-

reich, der gegenüber dem Ursprungsbereich versetzt ist. Dieser Bereich ist

wiederum ein Range-Objekt. Dieser Versatz kann sowohl in Bezug auf ein-

zelne Zellen als auch in Bezug auf zusammenhängende oder nicht zusam-

menhängende Zellbereiche angewendet werden.

Es folgt ein Beispiel mit Zellbereichen im Tabellenblatt Tabelle3. Stellen Sie

vorher sicher, dass es existiert.

Sub ZellOffset()ThisWorkbook.Worksheets("Tabelle3").Activate

' Offset berechnenCells(4, 3).Value = "Ber 1"Cells(4, 3).Offset(0, 2).Value = "Off(0,2)"Cells(4, 3).Offset(-3, 1).Value = "Off(-3,1)"Cells(4, 3).Offset(-2, –1).Value = "Off(-2,-1)"

' Offset eines BereichsRange("C6:D8,E9").Value = "Ber 2"Range("C6:D8,E9").Offset(4, 0).Value = "Off(4,0)"

' Offset-relative ZellenCells(4, 3).Offset(0, 2).Range("A2").Value = "A2"Cells(4, 3).Offset(0, 2).Range("A3").Value = "A3"Cells(4, 3).Offset(0, 2).Range("B1").Value = "B1"Cells(4, 3).Offset(0, 2).Range("B2").Value = "B2"Cells(4, 3).Offset(0, 2).Range("B3").Value = "B3"

End Sub

Listing 2.36 Sub ZellOffset() in Mappe2.xlsm, Modul 3

Offset berechnen:

� Ausgangszelle ist die Zelle 4, 3 oder, anders bezeichnet, C4.

Zeile, Spalte � Bei einem Offset wird zuerst der Versatz für die Zeile, dann für die Spalte

angegeben.

� Falls der Ursprungsbereich mit Cells angegeben ist, können Sie den ver-

setzten Bereich leicht ermitteln, indem Sie die Zahlen für die Zeile und

die Spalte jeweils addieren.

3962.book Seite 90 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

91

2

Negativer Offset� Ein Offset kann aber auch negativ sein. Dann handelt es sich um Zeilen

oberhalb oder um Spalten links vom Ursprungsbereich.

� Die drei Offset-Angaben für den ersten Bereich ergeben:

– Zelle 4, 3 + Offset 0, 2 = Zelle 4, 5 = Zelle E4

– Zelle 4, 3 + Offset 3, 1 = Zelle 1, 4 = Zelle D1

– Zelle 4, 3 + Offset 2, 1 = Zelle 2, 2 = Zelle B2

Das Ergebnis für den ersten Bereich sehen Sie in Abbildung 2.37.

Abbildung 2.37 Offset berechnen

Den Offset eines Bereichs sehen Sie in Abbildung 2.38.

Abbildung 2.38 Offset eines Bereichs

� Die Offset-Angabe für den nicht zusammenhängenden Zellbereich

ergibt einen gleichartigen Bereich, der um vier Zeilen – Offset(4, 0) –

nach unten verschoben ist.

Offset-relative Zellen:

Offset-relative

Bezeichnung

� Die erste Zelle eines Offsets, egal ob einzelne Zelle oder Zellbereich, wird

relativ mit A1 bezeichnet. So können Sie jede Zelle im Offset eindeutig

erreichen.

3962.book Seite 91 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

92

� Im Beispiel sind die Zellen A2, A3, B1, B2 und B3 des Offsets besonders

hervorgehoben.

Die Offset-relativen Zellen sehen Sie in Abbildung 2.39.

Abbildung 2.39 Offset-relative Zellen

2.4.19 Zellbereich sortieren

Sortieren Die Methode Sort() des Range-Objekts bietet zahlreiche Möglichkeiten,

Zellbereiche zu sortieren. Ausgangspunkt soll die Tabelle im Tabellenblatt

Tabelle4 sein, die Sie in Abbildung 2.40 sehen.

Abbildung 2.40 Tabelle, die sortiert werden soll

Diese Tabelle soll auf zwei Arten sortiert werden:

� nach Nummer

� nach Nachname und Vorname

Die oberste Zeile soll als Überschrift erkannt werden, so dass sie nicht ein-

sortiert wird.

Zunächst die Prozedur für die Sortierung nach Nummer:

Sub SortierenNummer()ThisWorkbook.Worksheets("Tabelle4").ActivateRange("A1:C4").Sort Key1:=Range("C1:C4"), Header:=xlYes

End Sub

Listing 2.37 Sub SortierenNummer() in Mappe2.xlsm, Modul 4

Das Ergebnis sehen Sie in Abbildung 2.41.

3962.book Seite 92 Dienstag, 24. November 2015 3:53 15

2.4 Auf Zellen und Zellbereiche zugreifen

93

2

Abbildung 2.41 Sortierung nach Nummer

Zur Erläuterung:

� Es wird der angegebene Bereich (A1:C4) sortiert.

Sort()� Die Methode Sort() hat zahlreiche Parameter. Daher werden die Para-

meter beim Aufruf am besten einzeln benannt.

Key1� Der Parameter Key1 gibt den Bereich an, in dem der Sortierschlüssel

steht. Hier ist dies die dritte Spalte mit der Nummer, also C1:C4.

Order1� Der Parameter Order1 bestimmt darüber, ob aufsteigend (xlAscending)

oder absteigend (xlDescending) sortiert wird. Da aufsteigende Sortierung

der Standard ist, muss der Parameter nicht angegeben werden.

Header� Über den Parameter Header legen Sie fest, ob die oberste Zeile des

Bereichs als Überschrift erkannt werden soll. Der Standard ist xlNo.

Daher wird hier xlYes angegeben. Falls der Wert xlGuess angegeben wird,

entscheidet Excel, ob eine Überschrift vorhanden ist, und reagiert ent-

sprechend.

Es folgt die Prozedur für die Sortierung nach Nachname und Vorname:

Sub SortierenName()ThisWorkbook.Worksheets("Tabelle4").ActivateRange("A1:C4").Sort Key1:=Range("A1:A4"), _

Key2:=Range("B1:B4"), Header:=xlYesEnd Sub

Listing 2.38 Sub SortierenName() in Mappe2.xlsm, Modul 4

Abbildung 2.42 zeigt das Ergebnis.

Abbildung 2.42 Nach Nachname und Vorname sortieren

3962.book Seite 93 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

94

Zur Erläuterung:

Key2 � Der Parameter Key2 gibt den Bereich an, in dem der zweite Sortierschlüs-

sel steht. Es wird also zunächst nach der ersten Spalte mit den Nachna-

men sortiert und bei gleichem Nachnamen nach der zweiten Spalte mit

den Vornamen.

� Es können bis zu drei Sortierschlüssel (Key1 bis Key3) angegeben werden.

Eine auf- bzw. absteigende Sortierung wird über die Parameter Order1

bis Order3 bestimmt.

Mehr als drei Sortierschlüssel

Mehr Sortier-

schlüssel

Falls Sie mehr als drei Sortierschlüssel benötigen, dann können Sie das

Objekt Sort des Tabellenblattes verwenden. Im nachfolgenden Beispiel im

Tabellenblatt Tabelle5 werden insgesamt fünf Sortierschlüssel eingesetzt.

Diese Möglichkeit gibt es erst seit Excel 2007. Der gewünschte Bereich wird

zunächst nach dem ersten Schlüssel sortiert. Falls dabei gleiche Einträge

vorliegen, wird nach dem zweiten Schlüssel sortiert usw.

Sub SortierenVieleSchlüssel()ThisWorkbook.Worksheets("Tabelle5").Activate

' Alte Sortiereinstellungen löschenActiveSheet.Sort.SortFields.Clear

' Insgesamt fünf Sortierschlüssel einstellenActiveSheet.Sort.SortFields.Add Range("A1:A6")ActiveSheet.Sort.SortFields.Add Range("B1:B6")ActiveSheet.Sort.SortFields.Add Range("C1:C6")ActiveSheet.Sort.SortFields.Add Range("D1:D6")ActiveSheet.Sort.SortFields.Add Range("E1:E6")

' Bereich, der sortiert werden sollActiveSheet.Sort.SetRange Range("A1:E6")

' Sortierung anwenden = durchführenActiveSheet.Sort.Apply

End Sub

Listing 2.39 Sub SortierenVieleSchlüssel() in Mappe2.xlsm, Modul 4

3962.book Seite 94 Dienstag, 24. November 2015 3:53 15

2.5 Ereignisprozeduren schreiben

95

2

Zur Erläuterung:

SortFields� Zunächst werden mithilfe der Methode Clear() eventuell vorhandene

alte Sortiereinstellungen aus der Auflistung SortFields der Sortier-

schlüssel gelöscht.

Add()� Die Methode Add() dient dem Hinzufügen der Bereiche, in denen die

Sortierschlüssel stehen, zu der Auflistung SortFields.

� Im vorliegenden Beispiel wird zunächst nach den Einträgen im Bereich

A1 bis A6 sortiert. Falls es Daten gibt, die in diesem Bereich übereinstim-

men, werden diese Daten nach den Einträgen im Bereich B1 bis B6 sor-

tiert usw.

Sort()� Mithilfe der Methode SetRange() wird der Bereich festgelegt, der sortiert

werden soll.

Apply()� Die Methode Apply() dient der Ausführung der Sortierung.

2.5 Ereignisprozeduren schreiben

Ereignis passiertEreignisse sagen etwas darüber aus, was gerade mit einem Objekt passiert.

Es können Ereignisse bezüglich Arbeitsmappen, Tabellenblättern oder Zell-

bereichen stattfinden. Diese können mit VBA-Code verbunden werden, so

dass automatisch weitere Aktionen folgen.

KlassenmodulDer VBA-Code von Ereignissen muss in den vorhandenen Klassenmodulen

eingetragen werden. Nach Erzeugen einer neuen Arbeitsmappe gibt es

bereits die Klassenmodule DieseArbeitsmappe und Tabelle1. In Programm-

versionen vor Excel 2013 werden neue Arbeitsmappen mit drei Tabellen-

blättern erzeugt. Daher gibt es hier auch die Klassenmodule Tabelle2 und

Tabelle3. Ein Doppelklick auf eines der Klassenmodule im Projekt-Explorer

führt dazu, dass das betreffende Codefenster angezeigt wird.

Ereignis auswählenOberhalb des Codefensters wählen Sie in der linken Liste das Objekt (Work-

book oder Worksheet) und anschließend in der rechten Liste das Ereignis aus.

Es wird ein leerer Prozedurrahmen angezeigt, in den die Ereignisprozedur

geschrieben werden kann.

Noch umfangreicher sind die Möglichkeiten der Ereignisprogrammierung

bei eigenen Dialogfeldern. Diese werden in Kapitel 10, »Dialogfelder«,

beschrieben.

3962.book Seite 95 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

96

2.5.1 Arbeitsmappe wird geöffnet

Mappe öffnen Mit folgender Prozedur wird beim Öffnen der Arbeitsmappe gleichzeitig

eine zweite Arbeitsmappe geöffnet:

Private Sub Workbook_Open()MsgBox ActiveWorkbook.NameWorkbooks.Open "C:\Temp\Mappe1.xlsm"

End Sub

Listing 2.40 Sub Workbook_Open() in Mappe2.xlsm,

Klassenmodul »DieseArbeitsmappe«

Zur Erläuterung:

Workbook_Open() � Es wird die Ereignisprozedur Workbook_Open() durchlaufen.

� Nach einer Kontrollausgabe wird eine zweite Arbeitsmappe geöffnet.

Testen Sie die Prozedur, indem Sie Excel vollständig schließen und

anschließend die Arbeitsmappe Mappe2.xlsm öffnen, die die oben angege-

bene Prozedur enthält.

Hinweis

In den Versionen vor Excel 2007 muss die Dateibezeichnung in der Proze-

dur wie folgt lauten: Mappe1.xls.

2.5.2 Arbeitsmappe wird geschlossen

Mappe schließen Mit folgender Prozedur im Klassenmodul DieseArbeitsmappe wird eine

Arbeitsmappe vor dem Schließen ohne weitere Nachfrage automatisch

gespeichert:

Private Sub Workbook_BeforeClose(Cancel As Boolean)ThisWorkbook.Save

End Sub

Listing 2.41 Sub Workbook_BeforeClose() in Mappe2.xlsm,

Klassenmodul »DieseArbeitsmappe«

Zur Erläuterung:

Workbook_

BeforeClose()

� Es wird die Ereignisprozedur Workbook_BeforeClose() durchlaufen.

� Verhalten ohne diese Prozedur: Falls der Benutzer die Arbeitsmappe

ändert und schließt, wird er gefragt, ob er die Arbeitsmappe speichern

3962.book Seite 96 Dienstag, 24. November 2015 3:53 15

2.5 Ereignisprozeduren schreiben

97

2

möchte. Diese Prozedur umgeht das, weil das Ereignis BeforeClose vor

der Nachfrage auftritt.

� Innerhalb der Prozedur wird die Arbeitsmappe mithilfe der Methode

Save() gespeichert.

Testen Sie die Prozedur, indem Sie eine Änderung vornehmen und die

Arbeitsmappe schließen.

2.5.3 Tabellenblatt wird aktiviert

Blatt aktivierenMit folgender Prozedur in einem Klassenmodul wird nach dem Aktivieren

des betreffenden Tabellenblattes (vom Benutzer oder durch VBA-Code)

eine Zelle ausgewählt:

Private Sub Worksheet_Activate()MsgBox ActiveSheet.NameRange("C5").Select

End Sub

Listing 2.42 Sub Worksheet_Activate() in Mappe2.xlsm, Klassenmodul «Tabelle1«

Zur Erläuterung:

Worksheet_

Activate()

� Es wird die Ereignisprozedur Worksheet_Activate() zu einem Tabellen-

blatt durchlaufen.

� Nach einer Kontrollausgabe wird eine Zelle ausgewählt.

Testen Sie die Prozedur, indem Sie zwischen den verschiedenen Tabellen-

blättern der Arbeitsmappe hin- und herwechseln. Das Ereignis tritt nur ein,

falls die Tabelle, in deren Codefenster dieser VBA-Code steht, nicht bereits

das aktivierte Tabellenblatt ist.

2.5.4 Zellbereich wird ausgewählt

Zelle wechseltMit folgender Prozedur in einem Klassenmodul wird nach der Auswahl

eines Zellbereichs in der betreffenden Tabelle die Adresse dieses Zellbe-

reichs ausgegeben:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)MsgBox Target.Address

End Sub

Listing 2.43 Sub Worksheet_SelectionChange() in Mappe2.xlsm,

Klassenmodul »Tabelle1«

3962.book Seite 97 Dienstag, 24. November 2015 3:53 15

2 Grundlagen von Objekten und Ereignissen

98

Zur Erläuterung:

SelectionChange() � Es wird die Ereignisprozedur Worksheet_SelectionChange() zu einem

Tabellenblatt durchlaufen.

Target � Die Prozedur liefert den ausgewählten Zellbereich als Range über die

Objektvariable Target. Weitere Einzelheiten zu Objektvariablen lesen Sie

in Abschnitt 6.4, »Mit Objektvariablen arbeiten«.

� Für den ausgewählten Zellbereich wird die Eigenschaft Address ausgege-

ben. Dabei handelt es sich um die absolute Bezeichnung der Zelladresse.

Testen Sie die Prozedur, indem Sie verschiedene zusammenhängende bzw.

nicht zusammenhängende Zellbereiche (mithilfe der Taste (Strg)) auswäh-

len.

2.5.5 Zelle wird doppelt angeklickt

Doppelklick Mit folgender Prozedur in einem Klassenmodul wird bei einem Doppel-

klick auf eine Zelle die betreffende Zelle formatiert:

Private Sub Worksheet_BeforeDoubleClick _(ByVal Target As Range, Cancel As Boolean)

Target.Interior.Color = vbGreenTarget.Borders.LineStyle = xlContinuousTarget.Borders.Weight = xlThickCancel = True

End Sub

Listing 2.44 Sub Worksheet_BeforeDoubleClick() in Mappe2.xlsm,

Klassenmodul «Tabelle1«

Zur Erläuterung:

BeforeDoubleClick() � Die Ereignisprozedur Worksheet_BeforeDoubleClick() zu einem Tabel-

lenblatt wird durchlaufen. Mit Target wird die Zelle bezeichnet, auf der

der Mauszeiger beim Doppelklick steht.

� Das Hintergrundmuster und der Rahmen der Zelle werden eingestellt.

Cancel � Über die logische Variable Cancel können Sie bestimmen, ob das eigent-

liche Ereignis, hier der Doppelklick, stattfinden soll. Mit Cancel = True

wird die weitere Verarbeitung abgebrochen. Es findet nur die Formatie-

rung statt. Mit Cancel = False oder einfach ganz ohne diese Anweisung

wird fortgefahren, also der Cursor zur Bearbeitung in die Zelle gesetzt.

3962.book Seite 98 Dienstag, 24. November 2015 3:53 15

2.5 Ereignisprozeduren schreiben

99

2

Logische Variablen werden in Abschnitt 3.2.3, »Datentypen«, noch

genauer erläutert.

2.5.6 Tabellenblatt wird neu berechnet

NeuberechnungMit folgender Prozedur in einem Klassenmodul wird eine Spaltenbreite

optimal eingestellt, falls im Tabellenblatt an irgendeiner Stelle eine Neube-

rechnung stattfand:

Private Sub Worksheet_Calculate()Range("G:G").Columns.AutoFit

End Sub

Listing 2.45 Sub Worksheet_Calculate() in Mappe2.xlsm,

Klassenmodul «Tabelle1«

Zur Erläuterung:

Worksheet_

Calculate()

� Es wird die Ereignisprozedur Worksheet_Calculate() zu einem Tabellen-

blatt durchlaufen. Dieses Ereignis tritt ein, falls z. B. eine Zelle einen

neuen Wert erhalten hat, die in der Berechnungsformel für den Wert

einer anderen Zelle vorkommt.

� Beispiel: In Zelle G3 steht die Formel =G1+G2. Sobald sich G1 oder G2

ändert, tritt das Ereignis Calculate ein.

� Die Spaltenbreite wird in diesem Fall optimal auf die neuen Werte einge-

stellt.

3962.book Seite 99 Dienstag, 24. November 2015 3:53 15

Auf einen Blick

Auf einen Blick

1 Einführung ................................................................................................................... 17

2 Grundlagen von Objekten und Ereignissen ...................................................... 49

3 Grundlagen der Programmierung mit VBA ...................................................... 101

4 Fehlerbehandlung ..................................................................................................... 137

5 Mehr über die Programmierung mit VBA ......................................................... 147

6 Mehr über Objekte .................................................................................................... 189

7 Diagramme und Grafiken ....................................................................................... 209

8 VBA- und Worksheet-Funktionen ........................................................................ 253

9 Externe Daten ............................................................................................................. 297

10 Dialogfelder ................................................................................................................. 369

11 Beispielprojekte ......................................................................................................... 393

3962.book Seite 3 Dienstag, 24. November 2015 3:53 15

Inhalt

5

Inhalt

Geleitwort des Fachgutachters ............................................................................................................. 15

1 Einführung 17

1.1 Was wird besser durch Makros und VBA? .................................................................... 17

1.2 MS Office 2016 .......................................................................................................................... 19

1.3 Mit Makros arbeiten .............................................................................................................. 20

1.3.1 Makro aufzeichnen ............................................................................................... 20

1.3.2 Makro ausführen ................................................................................................... 23

1.3.3 Makro ansehen ...................................................................................................... 23

1.3.4 Makro speichern .................................................................................................... 25

1.3.5 Makrosicherheit ändern ...................................................................................... 26

1.3.6 Registerkarte »Entwicklertools« ....................................................................... 28

1.3.7 Makrosicherheit dauerhaft ändern ................................................................. 29

1.4 Visual Basic Editor (VBE) als Entwicklungsumgebung ........................................... 31

1.4.1 Menüleiste und Symbolleiste ........................................................................... 31

1.4.2 Projekt-Explorer und Fenster »Eigenschaften« ........................................... 32

1.4.3 Codefenster ............................................................................................................. 33

1.5 Makrocode verstehen und ändern .................................................................................. 34

1.6 Makro per Schaltfläche ausführen .................................................................................. 36

1.7 Relative Verweise verwenden ........................................................................................... 37

1.8 Persönliche Makroarbeitsmappe ..................................................................................... 39

1.9 Code schreiben für einfache Ausgaben ......................................................................... 41

1.9.1 Eigene Sub-Prozedur ............................................................................................ 41

1.9.2 In Zelle ausgeben .................................................................................................. 42

1.9.3 In Nachrichtenbox ausgeben ............................................................................ 43

1.9.4 Im Direktfenster des VBE ausgeben ................................................................ 44

1.10 Mit Versionen vor Excel 2007 arbeiten ......................................................................... 45

1.10.1 Makro aufzeichnen ............................................................................................... 45

1.10.2 Makro ausführen ................................................................................................... 46

1.10.3 Makro ansehen ...................................................................................................... 46

1.10.4 Makro speichern .................................................................................................... 46

3962.book Seite 5 Dienstag, 24. November 2015 3:53 15

Inhalt

6

1.10.5 Makrosicherheit ändern ...................................................................................... 47

1.10.6 Symbolleiste »Visual Basic« einblenden ....................................................... 47

1.10.7 Visual Basic Editor (VBE) als Entwicklungsumgebung ............................. 47

1.10.8 Persönliche Makroarbeitsmappe verwalten ................................................ 47

2 Grundlagen von Objekten und Ereignissen 49

2.1 Objekthierarchie und Auflistungen ................................................................................ 49

2.2 Arbeitsmappen bearbeiten ................................................................................................. 50

2.2.1 Anzahl der Arbeitsmappen ermitteln ............................................................. 50

2.2.2 Neue Arbeitsmappe erzeugen .......................................................................... 51

2.2.3 Vorhandene Arbeitsmappe öffnen ................................................................. 52

2.2.4 Alle Arbeitsmappen schließen .......................................................................... 52

2.2.5 Name einer Arbeitsmappe ermitteln ............................................................. 53

2.2.6 Aktive Arbeitsmappe ermitteln ........................................................................ 54

2.2.7 Arbeitsmappe aktivieren .................................................................................... 55

2.2.8 Arbeitsmappe speichern ..................................................................................... 56

2.2.9 Arbeitsmappe über Index oder Namen auswählen .................................. 57

2.2.10 Pfad einer Arbeitsmappe ermitteln ................................................................ 57

2.3 Tabellenblätter bearbeiten ................................................................................................. 59

2.3.1 Tabellenblatt erzeugen ....................................................................................... 60

2.3.2 Tabellenblatt kopieren ........................................................................................ 60

2.3.3 Tabellenblatt verschieben .................................................................................. 62

2.3.4 Tabellenblatt löschen .......................................................................................... 62

2.3.5 Tabellenblatt aktivieren ...................................................................................... 63

2.3.6 Tabellenblatt formatieren .................................................................................. 63

2.3.7 Gitternetz, Zeilen- und Spaltenüberschriften ............................................. 64

2.3.8 Seite einrichten ...................................................................................................... 65

2.4 Auf Zellen und Zellbereiche zugreifen ........................................................................... 67

2.4.1 Zellen über das Range-Objekt auswählen .................................................... 68

2.4.2 Zellen über das Cells-Objekt auswählen ....................................................... 70

2.4.3 Zellinhalte verschieben oder kopieren ........................................................... 71

2.4.4 Teile von Zellinhalten kopieren ........................................................................ 72

2.4.5 Zellinhalt löschen .................................................................................................. 73

2.4.6 Werte und Formeln eintragen .......................................................................... 74

2.4.7 Zahlenformate anwenden ................................................................................. 76

3962.book Seite 6 Dienstag, 24. November 2015 3:53 15

Inhalt

7

2.4.8 Zellen ausrichten ................................................................................................... 77

2.4.9 Schrifteigenschaften bestimmen .................................................................... 79

2.4.10 Einzelne Zeichen formatieren ........................................................................... 80

2.4.11 Zellbereiche einrahmen ...................................................................................... 81

2.4.12 Hintergrundmuster von Zellen gestalten ..................................................... 82

2.4.13 Zellen einfügen ...................................................................................................... 83

2.4.14 Zellen löschen ......................................................................................................... 84

2.4.15 Zeilenhöhe und Spaltenbreite .......................................................................... 85

2.4.16 Benutzten Zellbereich erkennen ...................................................................... 86

2.4.17 Spezielle Zellen erkennen ................................................................................... 88

2.4.18 Versatz mit Offset vornehmen ......................................................................... 90

2.4.19 Zellbereich sortieren ............................................................................................ 92

2.5 Ereignisprozeduren schreiben ........................................................................................... 95

2.5.1 Arbeitsmappe wird geöffnet ............................................................................. 96

2.5.2 Arbeitsmappe wird geschlossen ...................................................................... 96

2.5.3 Tabellenblatt wird aktiviert ............................................................................... 97

2.5.4 Zellbereich wird ausgewählt ............................................................................. 97

2.5.5 Zelle wird doppelt angeklickt ............................................................................ 98

2.5.6 Tabellenblatt wird neu berechnet ................................................................... 99

3 Grundlagen der Programmierung mit VBA 101

3.1 Allgemeines ............................................................................................................................... 101

3.1.1 Codeblöcke auskommentieren ......................................................................... 102

3.1.2 Zeilen zerlegen ....................................................................................................... 103

3.2 Variablen und Datentypen ................................................................................................. 104

3.2.1 Namen, Werte ........................................................................................................ 104

3.2.2 Deklarationen ......................................................................................................... 104

3.2.3 Datentypen .............................................................................................................. 105

3.2.4 Konstanten und Enumerationen ..................................................................... 109

3.3 Operatoren ................................................................................................................................. 112

3.3.1 Arithmetische Operatoren ................................................................................. 113

3.3.2 Vergleichsoperatoren .......................................................................................... 116

3.3.3 Logische Operatoren ............................................................................................ 119

3.3.4 Verkettungsoperator ............................................................................................ 120

3.3.5 Rangfolge der Operatoren .................................................................................. 121

3962.book Seite 7 Dienstag, 24. November 2015 3:53 15

Inhalt

8

3.4 Verzweigungen ........................................................................................................................ 123

3.4.1 Einzeiliges If … Then … Else ................................................................................. 123

3.4.2 If-Then-Else-Block .................................................................................................. 124

3.4.3 Select Case ............................................................................................................... 126

3.5 Schleifen ...................................................................................................................................... 127

3.5.1 For-Next-Schleife ................................................................................................... 128

3.5.2 Do-Loop-Schleife ................................................................................................... 131

4 Fehlerbehandlung 137

4.1 Eine Anwendung entwickeln ............................................................................................. 137

4.2 Syntaxfehler .............................................................................................................................. 138

4.3 Laufzeitfehler ............................................................................................................................ 139

4.3.1 Programm mit Laufzeitfehlern ......................................................................... 139

4.3.2 Laufzeitfehler abfangen: On Error ................................................................... 141

4.4 Logische Fehler und Debugging ........................................................................................ 143

4.4.1 Einzelschrittverfahren ......................................................................................... 143

4.4.2 Haltepunkte ............................................................................................................ 145

5 Mehr über die Programmierung mit VBA 147

5.1 Gültigkeitsbereiche ................................................................................................................ 147

5.2 Datenfelder ................................................................................................................................ 150

5.2.1 Eindimensionale Datenfelder ........................................................................... 150

5.2.2 Datenfeld sortieren .............................................................................................. 153

5.2.3 Mehrdimensionale Datenfelder ....................................................................... 154

5.2.4 Dynamische Datenfelder .................................................................................... 157

5.2.5 Datenfelder löschen oder freigeben ............................................................... 159

5.3 Prozeduren und Funktionen ............................................................................................... 161

5.3.1 Prozeduren .............................................................................................................. 162

5.3.2 Parameter übergeben .......................................................................................... 165

5.3.3 Funktionen .............................................................................................................. 167

5.3.4 Optionale Parameter ............................................................................................ 171

5.3.5 Benannte Parameter ............................................................................................ 173

3962.book Seite 8 Dienstag, 24. November 2015 3:53 15

Inhalt

9

5.3.6 Beliebig viele Parameter ..................................................................................... 175

5.3.7 Datenfelder als Parameter ................................................................................. 177

5.4 Benutzerdefinierter Datentyp ........................................................................................... 179

5.5 Modular programmieren ..................................................................................................... 182

5.5.1 Code in der gleichen Datei ................................................................................. 182

5.5.2 Code in einer anderen Datei .............................................................................. 183

5.6 Module exportieren und importieren ............................................................................ 185

5.6.1 Ein Modul exportieren ......................................................................................... 186

5.6.2 Ein Modul importieren ........................................................................................ 187

6 Mehr über Objekte 189

6.1 Objektkatalog ........................................................................................................................... 189

6.2 Objekte referenzieren ........................................................................................................... 190

6.2.1 Beispiel »Zellen verschieben« ........................................................................... 191

6.3 Mit With auf Objekte zugreifen ....................................................................................... 192

6.4 Mit Objektvariablen arbeiten ............................................................................................ 194

6.4.1 Objektvariablen hierarchisch zuweisen ........................................................ 195

6.4.2 Neue Objekte erzeugen ....................................................................................... 196

6.4.3 Objekttyp ermitteln .............................................................................................. 197

6.5 For-Each-Schleife ..................................................................................................................... 198

6.6 Collections .................................................................................................................................. 200

6.7 Hauptobjekt »Application« ................................................................................................ 202

6.7.1 Anwendungspfad ausgeben ............................................................................. 202

6.7.2 Prozedur zeitverzögert aufrufen ...................................................................... 202

6.7.3 Excel-Anwendung schließen ............................................................................. 203

6.8 Filtern ............................................................................................................................................ 203

7 Diagramme und Grafiken 209

7.1 Diagramm erstellen ............................................................................................................... 210

7.1.1 Diagrammblatt erstellen .................................................................................... 210

7.1.2 Eingebettetes Diagramm erstellen ................................................................. 212

3962.book Seite 9 Dienstag, 24. November 2015 3:53 15

Inhalt

10

7.2 Diagramm ändern ................................................................................................................... 214

7.2.1 Diagrammblatt ändern ....................................................................................... 214

7.2.2 Eingebettetes Diagramm ändern .................................................................... 219

7.3 Diagramm verwalten ............................................................................................................ 219

7.3.1 Diagrammblatt verwalten ................................................................................. 220

7.3.2 Eingebettetes Diagramm verwalten .............................................................. 221

7.4 Beispiel: Formatiertes Kreisdiagramm .......................................................................... 223

7.5 Shapes .......................................................................................................................................... 226

7.5.1 Rechteck ................................................................................................................... 226

7.5.2 Oval ............................................................................................................................ 228

7.5.3 Linie ............................................................................................................................ 229

7.5.4 Verbinder ................................................................................................................. 230

7.5.5 Freiform .................................................................................................................... 232

7.5.6 Alle Formen ............................................................................................................. 235

7.6 WordArt ....................................................................................................................................... 237

7.7 Bedingte Formatierungen ................................................................................................... 240

7.7.1 Datenbalken ............................................................................................................ 240

7.7.2 Zweifarbige Farbskala ......................................................................................... 241

7.7.3 Dreifarbige Farbskala ........................................................................................... 242

7.7.4 Symbolsatz .............................................................................................................. 244

7.8 Sparklines ................................................................................................................................... 246

7.8.1 Linie ............................................................................................................................ 246

7.8.2 Spalte ......................................................................................................................... 247

7.8.3 Gewinn/Verlust ..................................................................................................... 248

7.8.4 Formatierung .......................................................................................................... 248

7.8.5 Alle Farben ............................................................................................................... 249

7.9 SmartArt ...................................................................................................................................... 250

8 VBA- und Worksheet-Funktionen 253

8.1 Formeln zuweisen und lesen .............................................................................................. 255

8.1.1 Formeln zuweisen ................................................................................................. 255

8.1.2 Formeln lesen ......................................................................................................... 256

8.2 Eingaben des Benutzers ....................................................................................................... 257

8.2.1 Funktion »InputBox« ............................................................................................ 258

3962.book Seite 10 Dienstag, 24. November 2015 3:53 15

Inhalt

11

8.2.2 Methode »Application.InputBox« .................................................................... 259

8.3 Einfacher Dialog mit dem Benutzer ................................................................................ 263

8.3.1 Schaltfläche »OK« ................................................................................................. 263

8.3.2 Schaltflächen – eine Übersicht ......................................................................... 264

8.3.3 Zeichen »Information« ........................................................................................ 265

8.3.4 Systemmodal .......................................................................................................... 265

8.3.5 Schaltflächen »Ja« und »Nein« ......................................................................... 266

8.3.6 Drei Schaltflächen einschließlich Default-Schaltfläche ........................... 267

8.3.7 Schaltflächen »Wiederholen« und »Abbrechen« ....................................... 268

8.3.8 Schaltflächen »Abbrechen«, »Wiederholen« und »Ignorieren« ............ 269

8.4 Zeichenketten ........................................................................................................................... 270

8.4.1 Zeichenketten umwandeln ................................................................................ 272

8.4.2 Ausgabeformatierung ......................................................................................... 273

8.4.3 Datensätze zusammenfügen ............................................................................ 276

8.4.4 Datensätze zerlegen ............................................................................................. 277

8.5 Datum und Uhrzeit ................................................................................................................. 278

8.5.1 Zeitintervall addieren .......................................................................................... 278

8.5.2 Zeitdifferenz berechnen ..................................................................................... 279

8.5.3 Datumsangaben erstellen und Wochentage markieren ......................... 280

8.5.4 Jahreskalender ....................................................................................................... 281

8.5.5 ISO-Kalenderwoche berechnen ........................................................................ 283

8.5.6 Arbeitstage berechnen ........................................................................................ 284

8.6 Weitere Funktionen ............................................................................................................... 286

8.6.1 Anwendung unterbrechen ................................................................................. 286

8.6.2 Einheiten umrechnen .......................................................................................... 287

8.6.3 Zwischen Zahlensystemen umrechnen ......................................................... 289

8.6.4 Zellen zählen ........................................................................................................... 290

8.6.5 Webfunktionen nutzen ....................................................................................... 291

8.6.6 Größte und kleinste Werte finden ................................................................... 294

8.6.7 Zahlen runden ........................................................................................................ 294

8.6.8 Römische und arabische Zahlen umwandeln ............................................. 296

9 Externe Daten 297

9.1 Ein Überblick .............................................................................................................................. 297

3962.book Seite 11 Dienstag, 24. November 2015 3:53 15

Inhalt

12

9.2 Einfache Textdateien ............................................................................................................. 298

9.2.1 Einfache Textdateien schreiben ....................................................................... 298

9.2.2 Einfache Textdateien lesen ................................................................................ 300

9.3 CSV-Dateien ............................................................................................................................... 302

9.3.1 CSV-Dateien schreiben ........................................................................................ 303

9.3.2 CSV-Dateien lesen ................................................................................................. 304

9.4 Dateien mit wahlfreiem Zugriff ....................................................................................... 306

9.4.1 Benutzerdefinierten Datentyp erstellen ....................................................... 306

9.4.2 Datei mit allen Datensätzen erstellen ........................................................... 307

9.4.3 An beliebiger Stelle lesen ................................................................................... 309

9.4.4 An beliebiger Stelle schreiben ........................................................................... 311

9.5 Mit Dateien arbeiten ............................................................................................................. 312

9.5.1 Dateien suchen und auflisten ........................................................................... 312

9.5.2 Informationen über Dateien ermitteln .......................................................... 314

9.5.3 Operationen mit Dateien durchführen ......................................................... 316

9.5.4 Operationen mit Verzeichnissen ausführen ................................................ 318

9.6 Daten mit MS Word austauschen .................................................................................... 320

9.6.1 Objektmodell von Word ...................................................................................... 320

9.6.2 Word-Absätze schreiben ..................................................................................... 321

9.6.3 Word-Absätze lesen ............................................................................................. 323

9.6.4 Word-Tabelle schreiben ...................................................................................... 325

9.6.5 Word-Tabelle lesen ............................................................................................... 327

9.6.6 Internetseite lesen ................................................................................................ 329

9.7 Daten mit MS Outlook austauschen .............................................................................. 331

9.7.1 Objektmodell von Outlook ................................................................................. 331

9.7.2 Eine Arbeitsmappe einfach als Anlage versenden ..................................... 332

9.7.3 Integriertes E-Mail-Dialogfeld nutzen ........................................................... 334

9.7.4 Eine E-Mail zusammensetzen ........................................................................... 335

9.7.5 Eine Serien-E-Mail erstellen ............................................................................... 337

9.7.6 Bestimmten Bereich in E-Mail versenden ..................................................... 339

9.7.7 Auf Outlook-Verzeichnis zugreifen ................................................................. 341

9.7.8 Auf E-Mail-Anhänge zugreifen ......................................................................... 343

9.7.9 Kontakt erzeugen .................................................................................................. 345

9.7.10 Auf Kontakte zugreifen ....................................................................................... 346

9.7.11 Termin erzeugen .................................................................................................... 347

9.7.12 Terminserie erzeugen .......................................................................................... 349

9.7.13 Auf Termine und Terminserien zugreifen ..................................................... 351

3962.book Seite 12 Dienstag, 24. November 2015 3:53 15

Inhalt

13

9.8 Daten mit MS Access austauschen .................................................................................. 353

9.8.1 Beispieldatenbank: Aufbau ............................................................................... 353

9.8.2 Beispieldatenbank: Verbindung herstellen .................................................. 354

9.8.3 SQL-Befehle ............................................................................................................. 355

9.8.4 Beispieldatenbank: Auswahlabfrage .............................................................. 355

9.8.5 Beispieldatenbank: Aktionsabfrage ................................................................ 358

9.8.6 SQL: Auswahlabfragen mit SELECT ................................................................. 359

9.8.7 SQL: Operatoren .................................................................................................... 361

9.8.8 SQL: Abfrageergebnis sortieren ........................................................................ 363

9.8.9 SQL: Nach Eingabe über Auswahlabfragen suchen ................................... 364

9.8.10 SQL: Mit UPDATE über Aktionsabfragen ändern ........................................ 365

9.8.11 SQL: Mit INSERT über Aktionsabfrage Datensätze einfügen ................. 367

9.8.12 SQL: Mit DELETE über Aktionsabfrage Datensätze löschen .................... 368

10 Dialogfelder 369

10.1 Integrierte Dialogfelder ........................................................................................................ 369

10.1.1 Datei öffnen ............................................................................................................ 370

10.1.2 Datei speichern unter .......................................................................................... 371

10.1.3 Hintergrundmuster für Zellbereich auswählen .......................................... 371

10.1.4 Schriftformatierung für Zellbereich auswählen ......................................... 372

10.2 Eigene Dialogfelder und Anwendungen ....................................................................... 373

10.2.1 Erstes Beispiel ......................................................................................................... 373

10.2.2 Erstes Beispiel: Gestaltung ................................................................................ 374

10.2.3 Erstes Beispiel: Code ............................................................................................. 375

10.2.4 Erstes Beispiel starten .......................................................................................... 376

10.2.5 Mit Steuerelementen arbeiten ......................................................................... 378

10.2.6 Textfeld und Bezeichnungsfeld ........................................................................ 379

10.2.7 Optionsschaltflächen und Kontrollkästchen ............................................... 381

10.2.8 Liste, Bildlaufleiste und Drehfeld ..................................................................... 385

10.2.9 Ausgabeformatierung ......................................................................................... 388

10.2.10 RefEdit und Umschaltfeld .................................................................................. 390

3962.book Seite 13 Dienstag, 24. November 2015 3:53 15

Inhalt

14

11 Beispielprojekte 393

11.1 Memory ....................................................................................................................................... 393

11.1.1 Spielablauf ............................................................................................................... 393

11.1.2 Aufbau des Spielfeldes ........................................................................................ 395

11.1.3 Spiel starten ............................................................................................................ 396

11.1.4 Spiel bedienen ........................................................................................................ 399

11.2 Snake ............................................................................................................................................ 403

11.2.1 Spielablauf ............................................................................................................... 403

11.2.2 Aufbau des Spielfeldes ........................................................................................ 405

11.2.3 Spiel starten ............................................................................................................ 406

11.2.4 Spiel bedienen ........................................................................................................ 410

11.3 Vokabeln ..................................................................................................................................... 412

11.3.1 Programmablauf ................................................................................................... 412

11.3.2 Aufbau der Vokabelsammlung ......................................................................... 414

11.3.3 Spiel starten ............................................................................................................ 415

Anhang 421

A Lösungen der Übungsaufgaben ........................................................................................ 421

B Der Autor ..................................................................................................................................... 431

Index ............................................................................................................................................................... 433

3962.book Seite 14 Dienstag, 24. November 2015 3:53 15

Index

433

Index

- (minus) ....................................................................... 113

^ (Potenzierung)........................................................ 115

_ (Platzhalter) ............................................................. 362

_ (Zeile zerlegen) ................................................ 65, 103

:= (benannter Parameter) ............................... 61, 175

! (Formatierung) ........................................................ 390

? (Platzhalter).................................................... 117, 313

. (nach Objektname) ................................................ 102

@ (Formatierung)........................................... 290, 390

* (Multiplikation) ...................................................... 113

* (Platzhalter) .................................................... 117, 313

/ (Division)................................................................... 113

& (Verkettung) .................................................... 44, 120

% (Platzhalter) ............................................................ 362

+ (plus)................................................................. 113, 265

< (kleiner) ..................................................................... 117

in SQL ........................................................................ 361

<= (kleiner oder gleich) ........................................... 117

in SQL ........................................................................ 361

<> (ungleich) ............................................................... 117

in SQL ........................................................................ 361

= (gleich) ....................................................................... 117

in SQL ........................................................................ 361

> (größer)...................................................................... 117

in SQL ........................................................................ 361

>= (größer oder gleich) ........................................... 117

in SQL ........................................................................ 361

A

Abfrage

Aktions- (SQL) ........................................................ 355

Auswahl- (SQL) ...................................................... 355

Ergebnis filtern (SQL) .......................................... 360

Ergebnis sortieren (SQL) .................................... 363

Abfrage (SQL) .............................................................. 355

Abfrageergebnis filtern (SQL) .............................. 360

Abläufe

parallele ................................................................... 410

AbortRetryIgnore ..................................................... 264

Absatz erzeugen (Word) ......................................... 323

Absolute Aufzeichnung ........................................... 38

Access

ADO-Bibliothek ..................................................... 354

Datenaustausch ................................................... 353

Verbindung herstellen ....................................... 354

Activate()

Worksheets ................................................................ 63

ActiveCell ................................................................. 35, 67

Address........................................................................ 70

ActiveChart ................................................................. 211

ActiveSheet ..................................................... 25, 35, 59

UsedRange................................................................. 86

ActiveWindow .............................................................. 64

DisplayGridlines ...................................................... 65

DisplayHeadings..................................................... 65

ActiveWorkbook ................................................... 35, 54

ActiveX-Objekt erstellen (Word) ........................ 323

Add()

Attachments (Outlook)...................................... 336

ChartObjects .......................................................... 213

Charts ....................................................................... 211

Collection ................................................................ 200

Documents (Word) .............................................. 323

Paragraphs (Word) .............................................. 323

SortFields.................................................................... 95

SparklineGroups................................................... 246

Tables (Word) ........................................................ 327

Workbooks................................................................. 51

Worksheets ................................................................ 60

AddColorScale()

FormatConditions ...................................... 242, 243

AddConnector()

Shapes ............................................................. 226, 231

AddDatabar()

FormatConditions ............................................... 240

AddIconSetCondition()

FormatConditions ............................................... 244

AddItem()

combo box .............................................................. 387

Addition ....................................................................... 113

AddLine()

Shapes ............................................................. 226, 229

AddNodes()

FreeformBuilder ................................................... 234

3962.book Seite 433 Dienstag, 24. November 2015 3:53 15

Index

434

Address ............................................................... 401, 411

Zellbereich.................................................................. 70

AddShape() .................................................................. 237

Shapes ............................................................. 226, 227

ADO-Bibliothek

Access ....................................................................... 354

ADODB

Connection (Access) ................................... 354, 357

Recordset (Access)....................................... 355, 357

After

Diagrammblatt..................................................... 211

Tabellenblatt............................................................. 61

Aktionsabfrage (SQL)......... 355, 358, 365, 367, 368

Aktivieren und selektieren ..................................... 36

Aktualisierungsabfrage (SQL) .............................. 365

Alle Zellen ............................................................... 63, 70

Alt + F11 ........................................................................... 31

And ....................................................................... 119, 316

AND (SQL) .................................................................... 361

Anführungszeichen

doppelte ...................................................................... 77

Anweisung in mehreren Zeilen .......................... 103

Anwendung unterbrechen ................................... 286

Anzeigefenster............................................................. 64

Apostroph............................................................... 24, 34

Append.......................................................................... 300

Application................................................. 50, 202, 257

Dialogs ............................................................ 335, 369

Documents (Word) .............................................. 325

GetNameSpace() (Outlook) .............................. 342

InputBox() ............................................................... 259

OnTime().................................................................. 202

Outlook .................................................................... 336

Path ........................................................................... 202

Quit() ......................................................................... 203

Quit() (Outlook) .................................................... 337

Run() .......................................................................... 185

ScreenUpdating .................................................... 282

Visible (Word) ........................................................ 323

Word................................................................. 320, 323

Apply()

Sort ............................................................................... 95

ApplyDataLabels()

Point ................................................................. 218, 225

Series ......................................................................... 218

AppointmentItem (Outlook)

Duration .................................................................. 348

GetRecurrencePattern() ..................................... 350

Location................................................................... 348

Outlook .................................................................... 348

Save() ........................................................................ 348

Start........................................................................... 348

Subject ...................................................................... 348

Arabic().......................................................................... 296

Arabische Ziffern ...................................................... 296

Arbeitsmappe ............................................................... 50

aktive ........................................................................... 54

aktivieren ................................................................... 55

Anzahl ......................................................................... 50

diese ............................................................................. 50

erzeugen ..................................................................... 51

ist gesichert ............................................................... 56

laufende Nummer .................................................. 57

Name .................................................................... 53, 57

öffnen .......................................................................... 52

Pfad .............................................................................. 57

schließen..................................................................... 52

speichern .................................................................... 56

wird geöffnet ............................................................ 96

wird geschlossen ..................................................... 96

Arbeitstage

berechnen ............................................................... 284

Array() ........................................................................... 159

As........................................................ 107, 167, 181, 194

Dateinummer ........................................................ 300

New................................................................... 196, 201

ASC (SQL)...................................................................... 363

Asc()................................................................................ 402

Attachment (Outlook) ............................................ 345

Attachments

Add() (Outlook) ..................................................... 336

Count (Outlook).................................................... 345

MailItem (Outlook) ............................................. 336

Auflistung................................................................ 50, 59

durchlaufen............................................................ 198

eigene ....................................................................... 200

Aufruf

zeitverzögerter ...................................................... 202

Aufzeichnung

absolute ...................................................................... 38

beenden ...................................................................... 22

beginnen..................................................................... 21

relative ........................................................................ 37

Ausgabe formatieren .............................................. 273

Ausgabe-Dialog ......................................................... 263

Auskommentieren................................................... 102

3962.book Seite 434 Dienstag, 24. November 2015 3:53 15

Index

435

Auswahlabfrage (SQL) ................................... 355, 360

Auswertungsreihenfolge ............................. 116, 122

AutoFilter()

Range ........................................................................ 204

AutoFit

Columns/Rows ......................................................... 86

Axes................................................................................ 217

Axes()

Chart ......................................................................... 217

Axis................................................................................. 217

AxisTitle ................................................................... 217

HasTitle .................................................................... 217

MaximumScale..................................................... 217

MinimumScale ...................................................... 217

TickLabels................................................................ 217

AxisTitle ....................................................................... 217

B

BackColor

text box .................................................................... 386

Balkendiagramm ...................................................... 212

BarColor

FormatConditions ............................................... 241

bas ................................................................................... 186

Bcc

MailItem (Outlook) ............................................. 338

Bearbeitungsmodus .................................................. 37

Bedingte Formatierung.......................................... 240

Bedingung ................................................................... 123

Before

Diagrammblatt..................................................... 211

Tabellenblatt............................................................. 61

BeginConnect()

ConnectorFormat ................................................ 232

Benannter Parameter ...................................... 61, 173

Benutzer ......................................................................... 18

-definierter Datentyp....................... 179, 298, 306

-eingabe ................................................................... 257

-führung................................................................... 369

Bereich auswählen ..................................................... 35

Bezeichnungsfeld ..................................................... 379

Beziehung darstellen .............................................. 250

Bildlaufleiste............................................................... 385

Eigenschaften ........................................................ 387

Bildschirmaktualisierung ein/aus ..................... 282

Bin2…()........................................................................... 289

Binär .............................................................................. 289

Blatt, Tabelle und Diagramm............................... 210

Blau ................................................................................ 111

Body

MailItem (Outlook) ............................................. 336

Bold

Font .............................................................................. 79

Boolean............................................................... 105, 116

Border

Legend ...................................................................... 217

Point.......................................................................... 218

Series ......................................................................... 218

Borders

Color............................................................................. 82

InsideLineStyle (Word) ....................................... 327

LineStyle ..................................................................... 82

OutsideLineStyle (Word) ................................... 327

Range ........................................................................... 82

Table (Word) .......................................................... 327

Weight ......................................................................... 82

Breakpoint................................................................... 145

Bubble Sort.................................................................. 153

BuildFreeform()

Shapes ............................................................. 226, 233

ByRef.............................................................................. 167

ByVal.............................................................................. 165

C

Cancel ............................................................................... 98

Caption

Steuerelement ....................................................... 375

Carriage Return ............................................................ 44

Case Else ....................................................................... 126

CDate() ................................................................ 259, 273

CDbl()................................................................... 259, 273

Cell

Table (Word) .......................................................... 329

Cells ............................................................................ 63, 70

Delete........................................................................... 87

Cells (Word) ................................................................. 320

CenterFooter ................................................................. 67

CenterHeader ................................................................ 67

CenterHorizontally..................................................... 67

CenterVertically ........................................................... 67

Characters

Range ........................................................................... 80

TextFrame............................................................... 229

3962.book Seite 435 Dienstag, 24. November 2015 3:53 15

Index

436

Chart .................................................................... 211, 212

Axes() ........................................................................ 217

ChartArea................................................................ 217

ChartTitle ................................................................ 217

ChartType....................................................... 212, 214

HasLegend .............................................................. 217

HasTitle .................................................................... 217

Legend ...................................................................... 217

Name......................................................................... 212

PlotArea ................................................................... 217

SeriesCollection().................................................. 218

SetSourceData() ........................................... 212, 214

ChartArea

Chart ......................................................................... 217

Interior ..................................................................... 217

ChartObject ................................................................. 212

Copy()........................................................................ 222

Delete() ..................................................................... 222

Export() .................................................................... 223

Height ....................................................................... 219

Left ............................................................................. 219

Top ............................................................................. 219

Width ........................................................................ 219

ChartObjects ............................................................... 212

Add() .......................................................................... 213

Charts ............................................................................ 210

Add() .......................................................................... 211

Copy()........................................................................ 220

Delete() ..................................................................... 220

Export() .................................................................... 221

Charts(Index).............................................................. 215

ChartTitle

Chart ......................................................................... 217

Text ............................................................................ 217

ChartType

Chart ................................................................ 212, 214

Check box .................................................................... 381

Value ......................................................................... 383

CInt() .............................................................................. 402

Clear()

Range ........................................................................... 73

SortFields .................................................................... 95

ClearContents()

Range ........................................................................... 73

ClearFormats()

Range ........................................................................... 73

Close............................................................................... 300

Datei.......................................................................... 302

Close()

Connection (Access) ................................... 354, 358

Recordset (Access) ............................................... 358

Workbooks................................................................. 52

Code-ansicht .................................................................... 376

exportieren .................................................... 186, 377

-fenster ........................................................................ 33

importieren ................................................... 187, 377

-modul ......................................................................... 32

selbst schreiben ....................................................... 41

Codefenster.................................................................... 95

Collection..................................................................... 200

ColorBorders ........................................................................ 82

Font .............................................................................. 79

Interior ........................................................................ 83

ColorScale .................................................................... 242

ColorScaleCriteria..................................................... 242

ColorScaleType .......................................................... 242

ColumnRange ........................................................................... 89

ColumnsAutoFit ........................................................................ 86

Count (Word) ......................................................... 329

Range ........................................................................... 86

Table (Word) .......................................................... 329

ColumnWidthRange ........................................................................... 86

Combo box.................................................................. 385

AddItem() ................................................................ 387

Change ..................................................................... 387

List(Index) ............................................................... 387

ListIndex .................................................................. 387

Style ........................................................................... 387

Text............................................................................ 387

Comma separated Values ..................................... 302

Connection (Access)ADODB ............................................................ 354, 357

Close() .............................................................. 354, 358

ConnectionString ........................................ 354, 357

Execute() ......................................................... 357, 359

Open() .............................................................. 354, 357

ConnectionStringConnection (Access) ................................... 354, 357

ConnectorFormatBeginConnect() ..................................................... 232

EndConnect() ......................................................... 232

Shapes ...................................................................... 232

3962.book Seite 436 Dienstag, 24. November 2015 3:53 15

Index

437

ContactItem (Outlook) ........................................... 347

Email1Address ....................................................... 347

FirstName................................................................ 347

LastName ................................................................ 347

Save()......................................................................... 346

Convert()

WorksheetFunction ............................................. 287

ConvertToShape()

FreeformBuilder.................................................... 234

Copy()

ChartObject ............................................................ 222

Charts ....................................................................... 220

Range .................................................................... 35, 71

Worksheets ................................................................ 60

Count

Attachments (Outlook) ...................................... 345

Collection ................................................................ 200

Columns (Word).................................................... 329

Items (Outlook) ..................................................... 342

Range ........................................................................... 88

Rows (Word) ........................................................... 329

Shapes ...................................................................... 226

Workbooks................................................................. 50

Count()

WorksheetFunction ............................................. 290

CountBlank()

WorksheetFunction ............................................. 290

CreateItem() (Outlook) ........................................... 331

AppointmentItem ................................................ 348

ContactItem ........................................................... 346

MailItem .................................................................. 336

CreateObject()

Outlook ........................................................... 331, 336

Word................................................................. 320, 323

Critical-Zeichen ......................................................... 264

CSV-Datei ........................................................... 297, 302

lesen .......................................................................... 304

schreiben ................................................................. 303

Cut()

Range ............................................................. 25, 35, 71

Cyan ............................................................................... 111

D

DashStyle

Line ............................................................................ 229

Databar ......................................................................... 240

DataLabel

NumberFormatLocal .......................................... 225

Point.......................................................................... 225

Date ................................................................................ 105

DateAdd() ..................................................................... 278

DateDiff() ..................................................................... 279

Datei

Änderungsdatum................................................. 315

Attribut .................................................................... 316

Ende........................................................................... 302

Export ....................................................................... 297

Funktionen ............................................................. 312

geöffnete .............................................. 395, 405, 414

Größe in Byte ......................................................... 310

Import ...................................................................... 297

Information über ................................................. 314

kopieren ................................................................... 317

löschen ..................................................................... 317

Menü ............................................................................ 25

öffnen .............................................................. 300, 302

Öffnen-Dialog ....................................................... 370

Operation ................................................................ 316

schließen......................................................... 300, 302

Speichern-Dialog.................................................. 371

suchen ...................................................................... 312

umbenennen.......................................................... 317

verschieben............................................................. 317

Zeile lesen................................................................ 302

Zeile schreiben....................................................... 300

Dateiendung

bas.............................................................................. 186

doc ............................................................................. 321

docx ........................................................................... 321

frm .................................................................... 186, 378

frx ...................................................................... 186, 378

gif ............................................................................... 221

jpg .............................................................................. 221

png ............................................................................. 221

xls .................................................................................. 45

xlsb ............................................................................... 40

xlsm .............................................................................. 26

xlsx ............................................................................... 25

Dateityp ändern ........................................................... 46

Datenaustausch ........................................................ 297

Outlook .................................................................... 331

Word ......................................................................... 320

Datenbalken

bedingte Formatierung ..................................... 240

3962.book Seite 437 Dienstag, 24. November 2015 3:53 15

Index

438

Datenbank

relationale .............................................................. 353

Datenfeld ..................................................................... 150

als Parameter ........................................................ 177

dynamisches .......................................................... 157

eindimensionales ................................................. 150

löschen ..................................................................... 159

mehrdimensionales ............................................ 154

Obergrenze .................................................... 176, 177

sortieren................................................................... 153

statisches................................................................. 150

umwandeln ............................................................ 276

Untergrenze ........................................................... 177

von Objekten.......................................................... 229

Datenquelle für Diagramm ........................ 212, 214

Datensatz

Access ....................................................................... 355

beliebig lesen ......................................................... 309

beliebig schreiben ................................................ 311

lesen .......................................................................... 310

schreiben ................................................................. 308

Datentyp ............................................................ 104, 105

benutzerdefinierter ............................................. 179

einer Funktion ....................................................... 167

erkennen .................................................................. 108

Genauigkeit ............................................................ 107

DateSerial() .................................................................. 280

Datum

Datentyp.................................................................. 105

Datum und Zeit

Datumsangabe erstellen................................... 280

erkennen .................................................................. 273

Jahr ermitteln ........................................................ 282

letzter Tag im Monat.......................................... 281

Monat ermitteln ................................................... 282

Tag im Monat ermitteln.................................... 281

umwandeln ............................................................ 273

Wochentag ermitteln ......................................... 280

Zeit addieren .......................................................... 278

Zeitdifferenz berechnen..................................... 279

Datumsfilter ............................................................... 207

Day() ............................................................................... 281

DayofWeekMask

RecurrencePattern (Outlook) .......................... 350

Debug .................................................................. 140, 143

Debug.Print ................................................................... 44

Dec2…() .......................................................................... 289

Default-Schaltfläche ................................................ 264

Deklaration ................................................................. 104

erforderlich ...................................................... 31, 105

DELETE (SQL) .................................................... 355, 368

Delete()

Cells .............................................................................. 87

ChartObject ............................................................ 222

Charts ....................................................................... 220

EntireRow/EntireColumn .................................... 85

FormatConditions ............................................... 240

Range ........................................................................... 85

Worksheets ................................................................ 62

DESC (SQL) ................................................................... 363

Description Err .......................................................... 142

Destination Range....................................................... 71

Dezimal......................................................................... 289

Dezimalpunkt ............................................................ 107

Diagramm ................................................................... 209

Achse......................................................................... 217

als Blatt erstellen ................................................. 210

ändern ...................................................................... 214

Datenpunkt ............................................................ 218

Datenquelle ................................................... 212, 214

Datenreihe .............................................................. 218

Datenreihenbeschriftung ................................. 225

Datenreihenbeschriftungsformat ................. 225

Diagrammfläche .................................................. 217

Diagrammtyp ....................................................... 225

eingebettetes ......................................................... 212

eingebettetes (ändern) ....................................... 219

eingebettetes (exportieren).............................. 223

eingebettetes (kopieren).................................... 222

eingebettetes (löschen) ...................................... 222

erstellen ................................................................... 210

hat Legende ............................................................ 217

hat Titel.................................................................... 217

Legende .................................................................... 217

nach Spalten/Zeilen ............................................ 212

Titel............................................................................ 217

Typ ............................................................................. 214

Zeichnungsfläche ................................................. 217

Diagrammblatt .......................................................... 210

ändern ...................................................................... 214

benennen................................................................. 212

exportieren ............................................................. 221

kopieren ................................................................... 220

löschen ..................................................................... 220

3962.book Seite 438 Dienstag, 24. November 2015 3:53 15

Index

439

Diagrammrahmen ................................................... 212

Größe ........................................................................ 219

neu erzeugen ......................................................... 213

Position .................................................................... 219

Dialogfeld..................................................................... 369

anzeigen .................................................................. 377

eigenes............................................................... 33, 373

einfaches ................................................................. 263

erzeugen .................................................................. 374

initialisieren ........................................................... 383

integriertes ............................................................. 369

Makro .......................................................................... 23

Makro aufzeichnen ................................................ 40

modales ................................................................... 377

schließen.................................................................. 376

Speichern unter........................................................ 25

Start aus Tabellenblatt ...................................... 376

Dialogs

Application .................................................... 335, 369

Show() .............................................................. 335, 369

DieseArbeitsmappe

Modul .......................................................................... 33

Dim................................................................................. 107

Dir() ................................................................................ 312

Direktfenster ....................................................... 44, 144

Display()

MailItem (Outlook) ............................................. 336

DisplayGridlines

ActiveWindow .......................................................... 65

DisplayHeadings

ActiveWindow .......................................................... 65

Division ........................................................................ 113

durch 0 ..................................................................... 140

Rest ............................................................................ 114

Do Until ........................................................................ 132

Do While ....................................................................... 132

doc .................................................................................. 321

Documents (Word)................................................... 320

Add() .......................................................................... 323

Application ............................................................. 325

Open() ....................................................................... 325

Paragraphs ............................................................. 325

SaveAs().................................................................... 323

Tables........................................................................ 329

docx................................................................................ 321

DoEvents() ......................................................... 287, 410

Dokument (Word)

erzeugen .................................................................. 323

speichern ................................................................. 323

Double........................................................................... 105

Drehfeld........................................................................ 385

Drucken

Seiteneinrichtung ................................................... 65

Duration

AppointmentItem (Outlook) ........................... 348

E

Eigenschaft..................................................................... 49

Einfügeabfrage (SQL)............................................... 367

Eingabe des Benutzers............................................ 257

Einheit umrechnen.................................................. 287

Einrückung.................................................................. 102

Einzelschrittverfahren ........................................... 143

Else.................................................................................. 123

ElseIf............................................................................... 124

E-Mail (Outlook)

Anhang ........................................................... 336, 345

Anzahl Anhänge................................................... 345

anzeigen .................................................................. 336

Betreff ....................................................................... 336

Dialogfeld anzeigen ............................................ 334

einfaches Senden ................................................. 332

Empfänger ..................................................... 333, 336

erzeugen ......................................................... 335, 336

Inhalt ........................................................................ 336

Kopieempfänger .................................................. 338

senden ...................................................................... 336

Serie erzeugen ....................................................... 337

Zellbereich senden ............................................... 339

Email1Address

ContactItem ........................................................... 347

Empty ............................................................................ 197

EncodeURL() ............................................................... 292

End Enum .................................................................... 111

End If.............................................................................. 124

End Select..................................................................... 126

End Sub ........................................................... 24, 35, 162

End Type....................................................................... 180

End With....................................................................... 192

EndConnect()

ConnectorFormat ................................................ 232

3962.book Seite 439 Dienstag, 24. November 2015 3:53 15

Index

440

Endung

bas.............................................................................. 186

doc ............................................................................. 321

docx ........................................................................... 321

frm .................................................................... 186, 378

frx ...................................................................... 186, 378

gif ............................................................................... 221

jpg .............................................................................. 221

png ............................................................................. 221

xls .................................................................................. 45

xlsb................................................................................ 40

xlsm .............................................................................. 26

xlsx................................................................................ 25

EntireColumn

Insert() ......................................................................... 84

Range .................................................................... 84, 85

EntireRow

Insert() ......................................................................... 84

Range .................................................................... 84, 85

Entwickler ...................................................................... 18

Entwicklung einer Anwendung .......................... 137

Entwicklungsumgebung ......................................... 31

Enum ............................................................................. 111

Enumeration .................................................... 110, 150

vordefiniert............................................................. 112

EOF

Recordset (Access)................................................ 357

EOF()............................................................................... 302

EoMonth()

WorksheetFunction ............................................. 281

Erase ............................................................................... 159

Ereignis .................................................................... 49, 95

Ereignisprozedur ............................................... 95, 375

Err.................................................................................... 142

Excel

Datei............................................................................. 50

eigene Funktion ........................................... 161, 168

schließen.................................................................. 203

vor 2007...................................................................... 45

Excel-Optionen............................................................ 28

Exclamation-Zeichen .............................................. 264

Execute()

Connection (Access) ................................... 357, 359

Exit Do................................................................. 132, 135

Exit For.......................................................................... 128

Exit Function .............................................................. 167

Exit Sub ............................................................... 143, 162

Export

in Textdatei ............................................................ 298

Word ................................................................ 321, 325

Export()

ChartObject ............................................................ 223

Charts ....................................................................... 221

Externe Daten ............................................................ 297

F

F1............................................................................ 101, 195

F2 ..................................................................................... 189

F5 .................................................................... 33, 145, 376

F8 ..................................................................................... 143

F9..................................................................................... 145

False ..................................................................... 105, 116

Farbe ....................................................................... 80, 111

Farbskala

bedingte Formatierung ............................ 241, 242

Fehler

-behandlung........................................................... 137

logischer .................................................................. 143

-objekt ...................................................................... 142

vermindern ................................................................ 32

Feld von Variablen ................................................... 150

Fenster »Eigenschaften« ...................... 32, 374, 378

FileCopy() ........................................................... 317, 319

FileDateTime() ........................................................... 315

FileLen() ........................................................................ 310

Fill

ForeColor................................................................. 227

Shape ........................................................................ 227

Filter ............................................................................... 203

mehrere Kategorien ............................................ 206

mit Platzhalter ...................................................... 207

mit Vergleich ......................................................... 205

über zwei Spalten................................................. 206

verknüpfter............................................................. 205

FilterXML() .................................................................. 293

FirstName

ContactItem (Outlook) ...................................... 347

FitToPagesTall

PageSetup .................................................................. 67

FitToPagesWide

PageSetup .................................................................. 67

fmOrientationHorizontal ..................................... 387

fmOrientationVertical............................................ 388

3962.book Seite 440 Dienstag, 24. November 2015 3:53 15

Index

441

fmSpecialEffectSunken .......................................... 388

fmStyleDropDownList............................................ 387

Folder (Outlook) ........................................................ 342

Items ......................................................................... 342

FontBold............................................................................... 79

Color ............................................................................. 79

Italic ............................................................................. 79

Name............................................................................ 79

Range ........................................................................... 79

Size ................................................................................ 79

Subscript ..................................................................... 81

Superscript................................................................. 81

Underline.................................................................... 79

For Each ........................................................................ 198

For Next .............................................................. 128, 151

ForeColorFill............................................................................... 227

Line ............................................................................ 228

Format() .............................................................. 273, 388

FormatColorColorScaleCriteria ................................................ 242

FormatConditions .................................................... 240

Formatierung ............................................................. 273

bedingte ................................................................... 240

schachteln ............................................................... 390

FormelEingabe .................................................................... 261

lesen .......................................................................... 256

prüfen ....................................................................... 256

zuweisen .................................................................. 255

Formula ........................................................................ 255

FormulaLocal.............................................................. 255

Range ................................................................. 74, 253

FormulaR1C1 ............................................................... 255

FormulaR1C1Local..................................................... 256

Frame............................................................................. 381

FreeformBuilderAddNodes() ............................................................. 234

ConvertToShape() ................................................ 234

Freiform.............................................................. 226, 232

Knoten hinzufügen ............................................. 234

umwandeln ............................................................ 234

FRM ...................................................................... 186, 378

FRX........................................................................ 186, 378

Function ....................................................................... 167

Funktion .................................................... 161, 167, 253

aufrufen ................................................................... 167

aufrufen in anderer Datei................................. 182

G

Ganze Zahl ................................................................... 105

Ganzzahldivision...................................................... 114

Gelb ................................................................................ 111

Genauigkeit................................................................. 107

Geschachteltes With................................................ 193

Gesendete Objekte

Outlook .................................................................... 341

Get .................................................................................. 310

GetAttr() ....................................................................... 316

GetDefaultFolder()

Namespace (Outlook) ............................... 331, 342

GetNameSpace()

Application (Outlook) ............................... 331, 342

GetRecurrencePattern()

AppointmentItem (Outlook) ........................... 350

GIF................................................................................... 221

Gleich ............................................................................ 117

SQL ............................................................................. 361

Gleitkommazahl ....................................................... 105

GoTo............................................................................... 142

Größer als .................................................................... 117

SQL ............................................................................. 361

GroupItems

Shape ........................................................................ 251

Grün ............................................................................... 111

Gültigkeitsbereich.............. 104, 147, 164, 397, 407

benutzerdefinierter Datentyp ......................... 181

Prozedur/Funktion.............................................. 183

H

Haltepunkt .................................................................. 145

HasLegend

Chart ......................................................................... 217

HasTitle

Axis ............................................................................ 217

Chart ......................................................................... 217

Height

ChartObject ............................................................ 219

Steuerelement ....................................................... 378

Hex2…() ......................................................................... 289

Hexadezimal .............................................................. 289

Hierarchie darstellen .............................................. 250

Hilfe...................................................................... 101, 190

Hochformat ................................................................... 66

3962.book Seite 441 Dienstag, 24. November 2015 3:53 15

Index

442

Hochstellen ................................................................... 81

HorizontalAlignment

Range ........................................................................... 78

HTML-Datei

lesen .......................................................................... 329

I

IconCriteria

FormatConditions ............................................... 244

IconSet

FormatConditions ............................................... 244

IconSetCondition...................................................... 244

If

Block.......................................................................... 124

einzeiliges................................................................ 123

Import

aus Textdatei ......................................................... 300

Word................................................................. 323, 327

In ..................................................................................... 198

Index

Charts ....................................................................... 215

Datenfeld................................................................. 151

eindeutiger (Access) ............................................ 353

Items (Outlook) ..................................................... 342

Points ........................................................................ 218

SeriesCollection .................................................... 218

Shapes ...................................................................... 226

Workbooks................................................................. 57

Worksheets ................................................................ 59

Information-Zeichen............................................... 264

Innenbereich ................................................................ 83

InputBox()

Application ............................................................. 259

einfache ................................................................... 258

INSERT (SQL) ..................................................... 355, 367

Insert()

EntireRow/EntireColumn .................................... 84

Range ........................................................................... 83

InsideLineStyle

Borders (Word) ...................................................... 327

InStr()............................................................................. 271

Integer ........................................................................... 105

Integriert

Dialogfeld................................................................ 369

Konstante................................................................ 110

Interior

ChartArea................................................................ 217

Color............................................................................. 83

Legend ...................................................................... 217

PlotArea ................................................................... 217

Range ........................................................................... 83

Internetseite

lesen .......................................................................... 329

Is ...................................................................................... 126

IsDate().......................................................................... 273

IsFormula() .................................................................. 256

IsNumeric() ................................................................. 273

IsoWeekNum() ........................................................... 283

Italic

Font .............................................................................. 79

Items (Outlook) ......................................................... 332

Count ........................................................................ 342

Folder ........................................................................ 342

Index ......................................................................... 342

J

Jahreskalender ........................................................... 281

Join()..................................................................... 276, 303

JPG .................................................................................. 221

K

Kalenderwoche.......................................................... 283

Key1

Sortierschlüssel ........................................................ 93

Kill() ................................................................................ 317

Klammerausdruck ......................................... 116, 122

Klassenmodul ........................................................ 33, 95

Kleiner als .................................................................... 117

SQL ............................................................................. 361

Kombinationsfeld .................................................... 385

aktuelles Element................................................. 387

Auswahl wechselt ................................................ 387

Elementnummer .................................................. 387

füllen ......................................................................... 387

Text des aktuellen Elements ............................ 387

Kommentar .................................................. 24, 34, 102

Kompatibilitätsprüfung ........................................... 46

Komponente .............................................................. 179

Konstante .......................................................... 109, 150

integrierte ............................................................... 110

3962.book Seite 442 Dienstag, 24. November 2015 3:53 15

Index

443

Kontakt

erzeugen (Outlook).............................................. 345

speichern (Outlook)............................................. 346

Kontrollausgabe.......................................................... 41

Kontrollkästchen ...................................................... 381

Kontrollstruktur ............................................. 123, 127

Korrektur

automatische ........................................................ 102

Kreisdiagramm.......................................................... 212

L

Label ............................................................................... 379

SpecialEffect ........................................................... 388

Large()............................................................................ 294

LargeChange

ScrollBar .................................................................. 387

LastName

ContactItem (Outlook)....................................... 347

Laufzeitfehler ............................................................. 139

lbl..................................................................................... 380

LBound() ....................................................................... 177

Leerzeile........................................................................ 101

Left

ChartObject ............................................................ 219

Steuerelement ....................................................... 378

Left() ............................................................................... 271

LeftFooter

PageSetup .................................................................. 67

LeftHeader, PageSetup ............................................. 67

Legend

Border ....................................................................... 217

Chart ......................................................................... 217

Interior ..................................................................... 217

Len .................................................................................. 308

Len() ............................................................................... 271

Like ................................................................................. 117

LIKE (SQL)..................................................................... 362

Line

DashStyle ................................................................ 229

ForeColor ................................................................. 228

Shape ........................................................................ 228

TextFrame............................................................... 229

Weight ...................................................................... 228

Line Feed ........................................................................ 44

Line Input .................................................................... 302

LineStyle

Borders ........................................................................ 82

Linie ..................................................................... 226, 229

Liniendiagramm ....................................................... 212

Linksbündig ................................................................ 390

List box ......................................................................... 385

List(Index)

combo box .............................................................. 387

Listenfeld ..................................................................... 385

aktuelles Element................................................. 387

Auswahl wechselt ................................................ 387

Elementnummer .................................................. 387

füllen ......................................................................... 387

Text des aktuellen Elements ............................ 387

ListIndex

combo box .............................................................. 387

Location

AppointmentItem (Outlook) ........................... 348

Locked

text box.................................................................... 386

Logischer Fehler ........................................................ 143

Logischer Operator .................................................. 119

Lokale Variable .......................................................... 147

Long ............................................................................... 105

Loop ..................................................................... 132, 135

Loop Until.......................................................... 132, 135

Loop While ........................................................ 132, 134

Löschabfrage (SQL)................................................... 368

Lösungen ..................................................................... 421

M

Magenta........................................................................ 111

MailItem (Outlook) .................................................. 336

Attachments .......................................................... 336

Bcc .............................................................................. 338

Body .......................................................................... 336

Display() .................................................................. 336

Send() ........................................................................ 336

Subject ...................................................................... 336

To................................................................................ 336

Makro ............................................................................... 17

aktivieren ................................................................... 27

ansehen, vor Excel 2007....................................... 46

aufzeichnen............................................................... 20

aufzeichnen (Diagramm) ................................. 214

aufzeichnen, vor Excel 2007 ............................... 45

3962.book Seite 443 Dienstag, 24. November 2015 3:53 15

Index

444

ausführen ................................................................... 23

ausführen nicht möglich...................................... 27

ausführen per Schaltfläche ................................. 36

ausführen, vor Excel 2007 ................................... 46

deaktivieren .............................................................. 27

geht verloren............................................................. 26

Name..................................................................... 21, 23

Sicherheit, vor Excel 2007.................................... 47

speichern .................................................................... 25

speichern, vor Excel 2007 .................................... 46

überall benutzen ..................................................... 39

Verzeichnis aktivieren........................................... 29

zuweisen ..................................................................... 36

Makrocode

ansehen....................................................................... 23

verändern ................................................................... 34

verstehen .................................................................... 34

Makrosicherheit.......................................................... 26

Schaltfläche ............................................................... 29

MarkerBackgroundColor

Point .......................................................................... 218

Series ......................................................................... 218

MarkerForegroundColor

Point .......................................................................... 218

Series ......................................................................... 218

MarkerStyle

Point .......................................................................... 218

Series ......................................................................... 218

Max

ScrollBar .................................................................. 387

Max().............................................................................. 294

MaximumScale

Axis ............................................................................ 217

Me ................................................................................... 376

Mehrfachauswahl ..................................................... 126

Memory ........................................................................ 393

MergeCells ......................................................... 396, 406

Range ........................................................................... 78

Methode ................................................................ 49, 162

Microsoft Developer Network ............................. 101

Mid()..................................................................... 271, 402

Min

ScrollBar .................................................................. 387

Min()............................................................................... 294

Minidiagramm .......................................................... 246

MinimumScale

Axis ............................................................................ 217

MkDir() .......................................................................... 319

Mod ................................................................................ 114

modales Dialogfeld .................................................. 377

Modul

DieseArbeitsmappe ................................................ 33

einfügen...................................................................... 32

exportieren .................................................... 186, 377

importieren ................................................... 187, 377

löschen ..................................................................... 187

Tabelle1 ....................................................................... 33

Modularisierung ............................................. 161, 182

Modulo ......................................................................... 114

modulweite Variable............................................... 147

Month()......................................................................... 282

Move()

Worksheets ................................................................ 62

MoveNext()

Recordset (Access) ............................................... 357

MRound() ..................................................................... 295

MSDN ............................................................................ 101

MsgBox() ..................................................... 43, 138, 263

msoAutoShapeType ................................................ 227

msoConnectorStraight........................................... 232

msoConnectorType ................................................. 232

msoEditingAuto........................................................ 233

msoEditingType........................................................ 233

msoLineDash ............................................................. 229

msoLineDashStyle ................................................... 229

msoSegmentCurve .................................................. 234

msoSegmentLine...................................................... 234

msoSegmentType .................................................... 234

msoShapeOval........................................................... 228

msoShapeRectangle ................................................ 227

Multiplikation............................................................ 113

Mustervergleich ........................................................ 117

N

Nachrichtenbox ........................................................... 43

Name

Chart ......................................................................... 212

Font .............................................................................. 79

von Variablen ........................................................ 104

Workbook .................................................................. 53

Name()........................................................................... 319

Datei umbenennen ............................................. 317

Namensraum

Outlook .................................................................... 342

3962.book Seite 444 Dienstag, 24. November 2015 3:53 15

Index

445

Namespace

GetDefaultFolder() (Outlook) .......................... 342

NetworkDays_Intl() ................................................. 284

NetworkDays() ........................................................... 284

New................................................................................. 196

Next...................................................................... 128, 198

Nicht

logisches .................................................................. 119

logisches (SQL) ...................................................... 361

Nordwind.mdb .......................................................... 204

Not .................................................................................. 119

NOT (SQL)..................................................................... 361

Nothing......................................................................... 195

Now() ............................................................................. 203

NumberFormatLocal............................................... 290

DataLabel................................................................ 225

Range ........................................................................... 76

TickLabels................................................................ 217

O

Object .................................................................. 105, 194

Objekt

allgemeines ............................................................ 189

-ansicht .................................................................... 376

Grundlagen ............................................................... 49

Haupt- ......................................................................... 50

kurzer Zugriff ......................................................... 192

neu erzeugen ................................................ 196, 201

referenzieren .......................................................... 191

Typ ermitteln ......................................................... 197

Verweis ..................................................................... 194

Objektbibliothek

Access ....................................................................... 354

Outlook .................................................................... 332

Word.......................................................................... 320

Objekthierarchie ............................... 49, 64, 191, 202

Outlook .................................................................... 331

Word.......................................................................... 320

Objektkatalog ............................................................. 189

Objektmodellreferenz ............................................ 190

Objektorientierung .................................................... 49

Objektvariable............................................................ 194

Oct2…()........................................................................... 289

Oder

logisches .................................................................. 119

logisches (SQL) ...................................................... 361

Office-Schaltfläche ...................................................... 25

Offset ................................................................................ 39

Range ........................................................................... 90

Oktal............................................................................... 289

olContactItem ............................................................ 346

olFolderContacts....................................................... 347

olFolderSentMail ...................................................... 342

olMonday .................................................................... 350

olRecursDaily ............................................................. 350

olRecursMonthly ...................................................... 350

olRecursWeekly......................................................... 350

olTuesday..................................................................... 350

On Error.............................................................. 139, 142

Online-Hilfe ................................................................ 190

OnTime()

Application ............................................................. 202

Open

Datei................................................................. 300, 302

Open()

Connection (Access) ................................... 354, 357

Documents (Word) .............................................. 325

Workbooks................................................................. 52

Operator ....................................................................... 112

arithmetischer....................................................... 113

logischer .................................................................. 119

Rangfolge ................................................................ 169

SQL ............................................................................. 361

Option Explicit ................................................... 32, 105

Optional ....................................................................... 171

Optionsschaltfläche ................................................ 381

voreinstellen .......................................................... 382

Or .......................................................................... 119, 265

OR (SQL)........................................................................ 361

ORDER BY (SQL)......................................................... 363

Order1

Sortierrichtung ........................................................ 93

Orientation

PageSetup .................................................................. 66

Range ........................................................................... 79

ScrollBar .................................................................. 387

SpinButton.............................................................. 388

Outlook

Application ............................................................. 336

AppointmentItem................................................ 348

Attachment ............................................................ 345

ContactItem ........................................................... 347

CreateItem() (AppointmentItem) .................. 348

CreateItem() (ContactItem) ............................. 346

3962.book Seite 445 Dienstag, 24. November 2015 3:53 15

Index

446

CreateItem() (MailItem) .................................... 336

Datenaustausch ................................................... 331

E-Mail erzeugen .................................................... 335

E-Mail finden ......................................................... 341

Folder ........................................................................ 342

Gesendete Objekte ............................................... 341

Kontakt erzeugen ................................................ 345

Kontakt finden ...................................................... 346

Kontakteigenschaft ............................................ 347

MailItem .................................................................. 336

Namensraum......................................................... 342

Objektbibliothek................................................... 332

Objekthierarchie................................................... 331

RecurrencePattern ............................................... 350

starten ...................................................................... 336

Termin erzeugen .................................................. 347

Termin(-serie) finden .......................................... 351

Termineigenschaft .............................................. 348

Terminserie erzeugen ......................................... 349

Terminwiederholung .......................................... 350

Verzeichnis ermitteln ......................................... 342

Verzeichniseintrag .............................................. 342

Zugriff erlauben/verweigern ........................... 333

Output

Datei schreiben ..................................................... 300

OutsideLineStyle

Borders (Word) ...................................................... 327

Oval ................................................................................ 228

P

PageSetup

CenterHorizontally ................................................ 67

CenterVertically....................................................... 67

FitToPagesTall.......................................................... 67

FitToPagesWide ....................................................... 67

Footer........................................................................... 67

Header ......................................................................... 67

Orientation ................................................................ 66

PrintGridlines ........................................................... 66

PrintHeadings .......................................................... 66

Worksheets ................................................................ 65

Zoom ............................................................................ 66

Paragraphs (Word).................................................... 320

Add() .......................................................................... 323

Documents ............................................................. 325

Range ........................................................................ 325

Parallele Aktionen .................................................... 287

ParamArray................................................................. 175

Parameter .................................................................... 162

beliebig viele .......................................................... 175

benannter ........................................................ 61, 173

ist Datenfeld........................................................... 177

optionaler ............................................................... 171

Übergabe ................................................................. 165

Paste() ........................................................................ 25, 35

PasteSpecial()

Range ........................................................................... 72

Path

Application ............................................................. 202

Workbook .................................................................. 57

PatternEndDate

RecurrencePattern (Outlook) .......................... 350

PatternStartDate

RecurrencePattern (Outlook) .......................... 350

Pause.............................................................................. 286

personal.xls.................................................................... 47

personal.xlsb ................................................................. 40

Persönliche Makroarbeitsmappe................... 40, 51

vor Excel 2007 .......................................................... 47

Perzentil ....................................................................... 243

Pfad

Installation............................................................. 202

Platzhalter

Dateiname .............................................................. 313

Zeichenkette........................................................... 117

Platzhalter (SQL)........................................................ 362

PlotArea

Chart ......................................................................... 217

Interior ..................................................................... 217

PNG ................................................................................ 221

Point .............................................................................. 218

ApplyDataLabels() ...................................... 218, 225

Border ....................................................................... 218

DataLabel ............................................................... 225

MarkerBackgroundColor .................................. 218

MarkerForegroundColor................................... 218

MarkerStyle ............................................................ 218

Points ............................................................................ 218

Index ......................................................................... 218

SparklineGroups................................................... 249

Points()

Series ......................................................................... 218

Potenzierung.............................................................. 115

Preserve ........................................................................ 157

Primärschlüssel

Tabelle (Access) ..................................................... 353

3962.book Seite 446 Dienstag, 24. November 2015 3:53 15

Index

447

Print

Dateizeile schreiben ............................................ 300

PrintGridlines

PageSetup .................................................................. 66

PrintHeadings

PageSetup .................................................................. 66

Priorität der Operatoren ........................................ 121

Private Function........................................................ 183

Private Sub .................................................................. 183

Private Type ................................................................ 181

Programm

Abbruch ................................................................... 139

anhalten .................................................................. 145

unterbrechen ......................................................... 286

Programmierstil........................................................ 101

Programmzeile in mehreren Zeilen.................. 103

Projekt-Explorer.......................................................... 32

Projektweite Variable .............................................. 148

Prozedur ...................................................... 42, 161, 162

aufrufen ................................................................... 163

aufrufen in anderer Datei................................. 182

Name............................................................................ 42

Prozess darstellen..................................................... 250

Public ............................................................................. 148

Public Const ................................................................ 150

Public Enum ............................................................... 150

Public Type .................................................................. 181

Punkt nach Objektname ........................................ 102

Put................................................................................... 308

Q

Querformat ................................................................... 66

Question-Zeichen ..................................................... 264

Quit()

Application ............................................................. 203

Application (Outlook) ........................................ 337

R

Radio-Button .............................................................. 381

Value ......................................................................... 383

Rahmen ........................................................................ 381

Linienfarbe................................................................. 82

Linienstärke............................................................... 82

Linienstil ..................................................................... 82

Random ........................................................................ 308

Randomize .................................................................. 133

Randomize() ..................................................... 399, 410

Range .......................................................... 24, 35, 50, 68

Borders ........................................................................ 82

Cells .............................................................................. 71

Characters ................................................................. 80

Clear() .......................................................................... 73

ClearContents() ........................................................ 73

ClearFormats() ......................................................... 73

Column ....................................................................... 89

Columns ..................................................................... 86

ColumnWidth ........................................................... 86

Copy() .......................................................................... 71

Count ........................................................................... 88

Cut().............................................................................. 71

Delete() ........................................................................ 85

EntireColumn .................................................... 84, 85

EntireRow............................................................ 84, 85

Font .............................................................................. 79

FormulaLocal ................................................. 74, 253

HorizontalAlignment............................................ 78

Insert() ......................................................................... 83

Interior ........................................................................ 83

MergeCells ................................................................. 78

NumberFormatLocal ............................................. 76

Offset ........................................................................... 90

Orientation................................................................ 79

Paragraphs (Word) .............................................. 325

PasteSpecial() ........................................................... 72

Row ............................................................................... 89

RowHeight ................................................................. 86

Rows ............................................................................. 86

Select() ......................................................................... 70

Sort() ............................................................................ 92

SpecialCells() ............................................................. 88

Value .............................................................. 42, 71, 74

VerticalAlignment .................................................. 78

WrapText ................................................................... 78

Range (Word) .............................................................. 320

Rangfolge der Operatoren .......................... 121, 169

Rechteck ....................................................................... 226

Rechtsbündig ............................................................. 390

Recordset (Access)

ADODB ............................................................ 355, 357

Close() ....................................................................... 358

EOF............................................................................. 357

3962.book Seite 447 Dienstag, 24. November 2015 3:53 15

Index

448

Feld erreichen ........................................................ 357

MoveNext() ............................................................. 357

RecurrencePattern (Outlook)............................... 350

DayofWeekMask .................................................. 350

PatternEndDate .................................................... 350

PatternStartDate.................................................. 350

RecurrenceType .................................................... 350

RecurrenceType ........................................................ 350

ReDim............................................................................ 157

RefEdit ........................................................................... 390

Referenz

Übergabe per ......................................................... 165

Referenzierung

Objekt ....................................................................... 191

Registerkarte

Ansicht ........................................................................ 20

Entwicklertools ................................................. 28, 29

Relationale Datenbank ........................................... 353

Relative Aufzeichnung ............................................. 37

Relativer Verweis ........................................................ 37

Relativer Zellbezug................................................... 255

Remove()

Collection ................................................................ 200

Replace()

WorksheetFunction ............................................. 272

RerouteConnections()

Shapes ...................................................................... 232

Resume Next .............................................................. 143

RetryCancel ................................................................. 264

RGB() ....................................................................... 80, 111

Right() ............................................................................ 271

RightFooter

PageSetup .................................................................. 67

RightHeader, PageSetup .......................................... 67

Ringtausch................................................................... 166

RmDir() ......................................................................... 319

Rnd()............................................................ 133, 399, 410

Roman() ........................................................................ 296

Römische Ziffern ...................................................... 296

Rot................................................................................... 111

Rotation

Shape ........................................................................ 228

Round() ......................................................................... 294

RoundDown() ............................................................. 294

RoundUp() ................................................................... 294

Row, Range .................................................................... 89

RowHeight, Range ...................................................... 86

Rows

AutoFit ........................................................................ 86

Count (Word) ......................................................... 329

Range ........................................................................... 86

Table (Word) .......................................................... 329

Rückgabewert................................................... 162, 167

Run()

Application ............................................................. 185

Runden ......................................................................... 294

S

Säulendiagramm ...................................................... 212

Save() (Outlook)

AppointmentItem................................................ 348

ContactItem ........................................................... 346

SaveAs()

Documents (Word) .............................................. 323

Schädlicher VBA-Code ............................................... 27

Schaltfläche.................................................................... 36

Click ........................................................................... 375

Abbrechen ............................................................... 264

erzeugen ........................................................... 36, 374

Ignorieren ............................................................... 264

Ja................................................................................. 264

Nein ........................................................................... 264

OK .............................................................................. 264

Wiederholen ........................................................... 264

Schaltjahr ..................................................................... 169

Schattierung ............................................................... 237

Schleife................................................................ 127, 198

bedingungsgesteuerte ....................................... 131

geschachtelte......................................................... 155

kopf-/fußgesteuerte ............................................ 132

zählergesteuerte................................................... 128

Schriftart

Eigenschaft ................................................................ 79

Schrittweite................................................................. 128

negative ................................................................... 131

Schwarz......................................................................... 111

ScreenUpdating

Application ............................................................. 282

ScrollBar ....................................................................... 385

Change ..................................................................... 388

Eigenschaften ........................................................ 387

Search()

WorksheetFunction............................................. 272

3962.book Seite 448 Dienstag, 24. November 2015 3:53 15

Index

449

Select......................................................................... 24, 35

SELECT (SQL) ............................................ 355, 357, 360

Select Case ................................................................... 126

Select(), Range .............................................................. 70

Selection .................................................................. 25, 35

Send()

MailItem (Outlook) ............................................. 336

SendMail()

Workbook................................................................ 333

Series.............................................................................. 218

ApplyDataLables() ............................................... 218

Border ....................................................................... 218

MarkerBackgroundColor .................................. 218

MarkerForegroundColor ................................... 218

MarkerStyle ............................................................ 218

Points() ..................................................................... 218

SeriesCollection......................................................... 218

Index ......................................................................... 218

SeriesCollection()

Chart ......................................................................... 218

SeriesColor

SparkLineGroups.................................................. 249

Set ................................................................................... 195

SetRange()

Sort ............................................................................... 95

SetSourceData()

Chart ................................................................ 212, 214

Shape ............................................................................. 226

Fill............................................................................... 227

Line ............................................................................ 228

Rotation................................................................... 228

Shapes ........................................................................... 226

AddConnector() ........................................... 226, 231

AddLine() ........................................................ 226, 229

AddShape() .................................................... 226, 227

alle ............................................................................. 235

BuildFreeform() ............................................ 226, 233

ConnectorFormat ................................................ 232

Count ........................................................................ 226

Index ......................................................................... 226

RerouteConnections() ........................................ 232

Sheets ............................................................................ 210

Shift

Zellen verschieben ........................................... 83, 85

Show()

Dialogs ............................................................ 335, 369

UserForm................................................................. 377

Sicherheitscenter ........................................................ 29

Sicherheitswarnung ................................................... 27

Single ............................................................................. 105

Size

Font .............................................................................. 79

Small() ........................................................................... 294

SmallChange

ScrollBar .................................................................. 387

SpinButton.............................................................. 388

SmartArt....................................................................... 250

Snake ............................................................................. 403

Sort

Objekt .......................................................................... 94

Range ........................................................................... 92

SortFields

Sort ............................................................................... 95

Sortieren ...................................................................... 153

Sortierschlüssel .................................................. 94, 193

Spaltennummer........................................................... 70

Sparkline ...................................................................... 246

alle Farben .............................................................. 249

formatieren ............................................................ 248

Gewinn/Verlust .................................................... 248

Linie ........................................................................... 246

Spalte ........................................................................ 247

SparkLineGroups ...................................................... 246

SpecialCells()

Range ........................................................................... 88

SpecialEffect

Label.......................................................................... 388

Speicherbedarf................................................. 104, 105

Spiegelung ................................................................... 237

SpinButton .................................................................. 385

Eigenschaften ........................................................ 388

Split() ................................................................... 277, 304

SQL.................................................................................. 355

Fehlersuche............................................................. 365

Großschrift ............................................................. 355

SQL-Befehl

senden ............................................................. 357, 359

Start

AppointmentItem (Outlook) ........................... 348

Static .............................................................................. 147

Statische Variable ..................................................... 147

Statusleiste ..................................................................... 22

Step................................................................................. 128

Steuerelement

Abstand links ......................................................... 378

Abstand oben ........................................................ 378

3962.book Seite 449 Dienstag, 24. November 2015 3:53 15

Index

450

Bezeichnungsfeld ................................................. 379

Bildlaufleiste .......................................................... 385

Breite ......................................................................... 378

Drehfeld ................................................................... 385

erzeugen .................................................................. 374

Farbe ......................................................................... 386

formatieren ............................................................ 378

Höhe .......................................................................... 378

Kombinationsfeld ................................................ 385

Kontrollkästchen ................................................. 381

kopieren ................................................................... 378

Listenfeld ................................................................. 385

Name......................................................................... 374

Optionsschaltfläche ............................................ 381

Rahmen.................................................................... 381

RefEdit ...................................................................... 390

-sammlung ................................................................ 36

Textfeld .................................................................... 379

Titel ............................................................................ 375

Toggle-Button ....................................................... 391

Wert ermitteln ....................................................... 379

Zahl formatieren .................................................. 388

Strg

Zellbereich.................................................................. 98

Strg + Umschalt + F2 ...................................... 108, 164

String ............................................................................. 105

String *

Länge ........................................................................ 307

Structured Query Language ................................. 355

Style

combo box .............................................................. 387

Sub .................................................................... 24, 35, 162

Sub/UserForm ausführen ....................................... 33

Subject

AppointmentItem (Outlook) ........................... 348

MailItem (Outlook) ............................................. 336

Sub-Prozedur................................................................ 41

Subscript

Font .............................................................................. 81

Subtraktion ................................................................. 113

Suchmuster

Dateiname .............................................................. 313

Superscript

Font .............................................................................. 81

Symbol

Aufzeichnung beenden ......................................... 22

Aufzeichnung beginnen ....................................... 22

Auskommentierung aufheben ....................... 102

Block auskommentieren ................................... 102

grüner Pfeil ................................................................ 34

Symbolleiste

bearbeiten .................................................................. 31

Visual Basic ............................................................... 47

Voreinstellung.......................................................... 31

Symbolsatz

alle ............................................................................. 245

bedingte Formatierung ..................................... 244

Syntaxfehler ............................................................... 138

SystemModal ............................................................. 264

Systemton ................................................................... 263

T

Tabelle

erzeugen (Word) ................................................... 327

Rahmen (Word) .................................................... 327

Tabelle1

Modul .......................................................................... 33

Tabellenblatt .......................................................... 50, 59

aktives ......................................................................... 59

aktivieren ................................................................... 63

alle Zellen ............................................................ 63, 70

Druck skalieren ........................................................ 66

Druck zentrieren...................................................... 67

Druckformat ............................................................. 66

Druckgröße anpassen ........................................... 67

Druckinformationen ............................................. 67

erzeugen ..................................................................... 60

Gitternetz ................................................................... 64

Gitternetzlinien ....................................................... 66

Kopf-/Fußzeile.......................................................... 67

kopieren ...................................................................... 60

laufende Nummer .................................................. 59

löschen ........................................................................ 62

Name ........................................................................... 59

Seiteneinrichtung ................................................... 65

strukturieren............................................................. 83

Überschriften Zeile/Spalte............................ 64, 66

verschieben................................................................ 62

wird aktiviert ............................................................ 97

wird neu berechnet ................................................ 99

Tabellenfunktion ...................................................... 253

Tabellenstruktur

Access ....................................................................... 353

3962.book Seite 450 Dienstag, 24. November 2015 3:53 15

Index

451

Table (Word)

Borders ..................................................................... 327

Cell ............................................................................. 329

Columns................................................................... 329

Rows .......................................................................... 329

Tables (Word).............................................................. 320

Add() .......................................................................... 327

Documents ............................................................. 329

Tabulator...................................................................... 102

Target............................................................................... 98

Address............................................................ 401, 411

Taste

Alt + F11 ....................................................................... 31

F1 ........................................................................ 101, 195

F2 ................................................................................ 189

F5 ................................................................ 33, 145, 376

F8 ................................................................................ 143

F9 ................................................................................ 145

Strg................................................................................ 98

Strg + Umschalt + F2 .................................. 108, 164

Tab ............................................................................. 102

Umschalt + F2 ............................................... 108, 164

Termin

Eigenschaft (Outlook) ........................................ 348

erzeugen (Outlook).............................................. 347

Serie erzeugen (Outlook) ................................... 349

speichern (Outlook)............................................. 348

Wiederholung (Outlook) ................................... 350

Text

AxisTitle ................................................................... 217

ChartTitle ................................................................ 217

combo box .............................................................. 387

text box .................................................................... 380

Text box........................................................................ 379

BackColor ................................................................ 386

locked........................................................................ 386

Text ............................................................................ 380

Textdatei ...................................................................... 297

lesen .......................................................................... 300

schreiben ................................................................. 298

Texteffekt..................................................................... 237

Textfeld......................................................................... 379

sperren...................................................................... 386

Textfilter ...................................................................... 206

TextFrame

Characters............................................................... 229

Line ............................................................................ 229

Then ............................................................................... 123

ThisWorkbook .............................................................. 50

TickLabels

Axis ............................................................................ 217

NumberFormatLocal .......................................... 217

Tiefstellen ....................................................................... 81

Timer() .......................................................................... 286

TimeValue()................................................................. 203

Titel

Steuerelement ....................................................... 375

To ................................................................. 126, 128, 151

MailItem (Outlook) ............................................. 336

Toggle-Button ............................................................ 391

Value ......................................................................... 392

Toolbox ........................................................................ 374

Top

ChartObject ............................................................ 219

Steuerelement ....................................................... 378

Trim()............................................................................. 310

True ...................................................................... 105, 116

Trust Center ................................................................... 29

txt.................................................................................... 380

Type................................................................................ 180

AddShape() ............................................................. 237

ColorScaleCriteria................................................ 242

TypeName()....................................................... 108, 197

U

Übergabe von Parametern.................................... 165

UBound()............................................................ 176, 177

Uhrzeit

aktuelle .................................................................... 203

-angabe .................................................................... 203

Umschalt + F2................................................... 108, 164

Umschaltfeld .............................................................. 391

Und

logisches .................................................................. 119

logisches (SQL) ...................................................... 361

Underline

Font .............................................................................. 79

Ungleich ....................................................................... 117

SQL ............................................................................. 361

Unload .......................................................................... 376

UPDATE (SQL) ......................................... 355, 359, 365

URL-Format

codieren ................................................................... 292

3962.book Seite 451 Dienstag, 24. November 2015 3:53 15

Index

452

UsedRange

Worksheet .................................................................. 86

UserForm ....................................................................... 33

_Initialize() ............................................................. 383

erzeugen .................................................................. 374

Me .............................................................................. 376

Show() ....................................................................... 377

V

Value

check box................................................................. 383

Radio-Button ......................................................... 383

Range ............................................................. 42, 71, 74

ScrollBar .................................................................. 387

Toggle-Button ....................................................... 392

Variable......................................................................... 104

ausblenden ............................................................. 148

Datenfeld................................................................. 150

Deklaration erforderlich ............................ 31, 105

Gültigkeitsbereich................................................ 147

lokale ........................................................................ 147

modulweite ............................................................ 147

Objekt- ...................................................................... 194

projektweite ........................................................... 148

statische................................................................... 147

Variant ....................................................... 107, 108, 159

VBA ................................................................................... 17

vbAbort ......................................................................... 265

VBA-Funktion............................................................. 253

vbArchive..................................................................... 316

VBA-Referenz ................................................... 190, 254

vbBlack.......................................................................... 111

vbBlue ........................................................................... 111

vbCancel ....................................................................... 265

vbCrLf .............................................................................. 43

vbCyan .......................................................................... 111

vbDirectory ................................................................. 316

VBE ................................................................................... 31

vbGreen ........................................................................ 111

vbHidden ..................................................................... 316

vbIgnore ....................................................................... 265

vbMagenta................................................................... 111

vbModeless ................................................................. 377

vbNo............................................................................... 265

vbOK .............................................................................. 265

vbOkOnly..................................................................... 264

vbReadOnly ................................................................ 316

vbRed............................................................................. 111

vbRetry ......................................................................... 265

vbSystem ..................................................................... 316

vbWhite ........................................................................ 111

vbYellow....................................................................... 111

vbYes.............................................................................. 265

Verbinder........................................................... 226, 230

Verbindung

Datenbank (Access)............................................. 354

Verbindungspunkt .................................................. 230

Vergleichsoperator ........................................ 116, 123

Verkettungsoperator .............................................. 120

Versatz ............................................................................. 39

VerticalAlignment

Range ........................................................................... 78

Vertrauenscenter......................................................... 29

Vertrauenswürdige Dokumente ........................... 30

Vertrauenswürdige Speicherorte.......................... 30

Verweis

relativer ...................................................................... 37

Verweis auf Objekt ......................................... 105, 194

Verzeichnis

Attribut .................................................................... 316

-eintrag (Outlook) ................................................ 342

ermitteln (Outlook) ............................................. 342

erzeugen .................................................................. 319

Funktionen ............................................................. 312

löschen ..................................................................... 319

Operation ................................................................ 318

Verzweigung..................................................... 116, 123

Visible

Application (Word).............................................. 323

Visual Basic for Applications .................................. 17

W

Wagenrücklauf ............................................................. 44

Wahlfreier Zugriff........................................... 298, 306

Wartezeit............................................................ 402, 410

wdLineStyleSingle

Word ......................................................................... 327

Webservice

abrufen..................................................................... 291

WebService() ............................................................... 293

3962.book Seite 452 Dienstag, 24. November 2015 3:53 15

Index

453

Weekday() .................................................................... 280

Weight

Borders ........................................................................ 82

Line ............................................................................ 228

Weiß ............................................................................... 111

Werkzeugsammlung ............................................... 374

Wert

größter ..................................................................... 294

kleinster ................................................................... 294

Wertebereich .............................................................. 105

außerhalb................................................................ 107

WHERE (SQL) .............................................................. 360

Width

ChartObject ............................................................ 219

Steuerelement ....................................................... 378

Wiederholung ............................................................ 127

With................................................................................ 192

geschachteltes ....................................................... 193

Wochentag ermitteln.............................................. 280

Word

Absatz ....................................................................... 325

Application ............................................................. 323

Datenaustausch ................................................... 320

Dokument öffnen................................................. 325

Export .............................................................. 321, 325

Import.............................................................. 323, 327

Objektbibliothek................................................... 320

Objekthierarchie................................................... 320

starten ...................................................................... 323

Word.Application ..................................................... 320

WordArt ........................................................................ 237

Workbook ...................................................................... 50

_BeforeClose()........................................................... 96

_Open().............................................................. 96, 377

Activate() .................................................................... 55

Codefenster ............................................................... 95

Name............................................................................ 53

Path .............................................................................. 57

Save()............................................................................ 56

SaveAs()....................................................................... 56

Saved............................................................................ 56

SendMail() ............................................................... 333

Workbook_Open() ................................. 395, 405, 414

Workbooks .................................................................... 50

Add() ............................................................................. 51

Close() .......................................................................... 52

Count ........................................................................... 50

FullName .................................................................... 54

Index ............................................................................ 57

Open() .......................................................................... 52

WorkDay_Intl().......................................................... 284

WorkDay().................................................................... 284

Worksheet

_Activate() ................................................................. 97

_BeforeDoubleClick()............................................. 98

_Calculate() ............................................................... 99

_SelectionChange() ................................................ 98

Codefenster ............................................................... 95

UsedRange................................................................. 86

Worksheet_SelectionChange().................. 401, 411

WorksheetFunction

Convert().................................................................. 287

Count() ..................................................................... 290

CountBlank().......................................................... 290

EoMonth() ............................................................... 281

Replace() .................................................................. 272

Search() .................................................................... 272

Worksheet-Funktion ............................................... 253

Worksheets ............................................................. 50, 59

Activate() .................................................................... 63

Add()............................................................................. 60

Copy() .......................................................................... 60

Delete() ........................................................................ 62

Index ............................................................................ 59

Move() ......................................................................... 62

PageSetup .................................................................. 65

WrapText

Range ........................................................................... 78

X

xlAnd ............................................................................. 205

xlAscending ................................................................... 93

xlBarClustered ........................................................... 212

xlBottom ......................................................................... 78

xlCategory ................................................................... 217

xlCellTypeBlanks ......................................................... 89

xlCellTypeFormulas ................................................... 89

xlCellTypeLastCell ....................................................... 89

xlCenter ........................................................................... 78

xlColumnClustered ................................................. 212

xlColumns ................................................................... 212

xlConditionValueTypes ......................................... 242

xlContinuous ................................................................ 82

xlDescending ................................................................ 93

3962.book Seite 453 Dienstag, 24. November 2015 3:53 15

Index

454

xlDialogFontProperties.......................................... 373

xlDialogOpen ............................................................. 370

xlDialogPatterns ....................................................... 372

xlDialogSaveAs .......................................................... 371

xlDialogSendMail ..................................................... 335

xlDot ................................................................................ 82

xlDouble......................................................................... 82

xlEdgeBottom .............................................................. 82

xlEdgeLeft ...................................................................... 82

xlEdgeRight ................................................................... 82

xlEdgeTop ...................................................................... 82

xlFilterValues ............................................................. 206

xlGuess ........................................................................... 93

xlHairline ....................................................................... 82

xlInsideHorizontal ..................................................... 82

xlInsideVertical ........................................................... 82

xlJustify .......................................................................... 78

xlLandscape .................................................................. 66

xlLeft ................................................................................ 78

xlLine ............................................................................. 212

xlMarkerStyleCircle ................................................. 218

xlMarkerStyleNone.................................................. 218

xlMarkerStyleSquare............................................... 218

xlMedium ...................................................................... 82

xlNo.................................................................................. 93

xlPasteFormats............................................................ 72

xlPasteValues ............................................................... 72

xlPie ............................................................................... 212

xlPortrait ........................................................................ 66

xlRight............................................................................. 78

xlRows ........................................................................... 212

XLS .................................................................................... 45

XLSB ................................................................................. 40

xlShiftDown.................................................................. 83

xlShiftToLeft ................................................................. 85

xlShiftToRight.............................................................. 83

xlShiftUp ........................................................................ 85

xlShowLabel................................................................ 218

xlShowNone ............................................................... 218

xlShowValue............................................................... 218

XLSM ................................................................................ 26

xlSparkColumn ......................................................... 247

xlSparkColumnStacked100 .................................. 248

xlSparkLine ................................................................. 247

XLStart............................................................................. 40

XLSX ................................................................................. 25

xlThick ............................................................................ 82

xlThin .............................................................................. 82

xlTop................................................................................. 78

xlValue .......................................................................... 217

xlVertical......................................................................... 79

xlYes.................................................................................. 93

XML-Datei

filtern ........................................................................ 293

Xor .................................................................................. 119

Y

Year().............................................................................. 282

YesNo............................................................................. 264

YesNoCancel ............................................................... 264

Z

Zahl

Eingabe .................................................................... 259

erkennen.................................................................. 273

ganze ........................................................................ 105

umrechnen ............................................................. 289

umwandeln ............................................................ 273

Zahlenfilter ................................................................. 204

Zeichen einzeln formatieren .................................. 80

Zeichenkette ............................................................... 105

feste Länge..................................................... 298, 307

Funktion .................................................................. 270

Länge ........................................................................ 271

Leerzeichen löschen ............................................ 310

Teilzeichenkette ermitteln................................ 271

Teilzeichenkette ersetzen.................................. 272

Teilzeichenkette suchen .................................... 271

umwandeln ............................................................ 272

verketten ................................................................. 120

zerlegen.................................................................... 277

Zeichnungsobjekt..................................................... 226

Anzahl ...................................................................... 226

Drehung................................................................... 228

Form ................................................................. 226, 227

Freiform ................................................ 226, 233, 234

Füllfarbe .................................................................. 227

Füllung ..................................................................... 227

Lage ........................................................................... 228

Linie ........................................................ 226, 228, 229

Linienart .................................................................. 229

Linienfarbe ............................................................. 228

Linienstärke ........................................................... 228

3962.book Seite 454 Dienstag, 24. November 2015 3:53 15

Index

455

Text ............................................................................ 229

Textrahmen............................................................ 229

Typ .................................................................... 227, 228

Verbinder........................................................ 226, 231

Verbindung Anfang/Ende ................................ 232

Verbindung herstellen ....................................... 232

Verbindungsart..................................................... 232

Zeile zerlegen ............................................................... 65

Zeilenmarke ................................................................ 142

Zeilennummer............................................................. 70

Zeilenvorschub ............................................................ 44

Zellbereich .............................................................. 50, 67

Adresse ........................................................................ 70

ausschneiden ............................................................ 35

auswählen.................................................................. 70

besondere Zellen...................................................... 86

einfügen ...................................................................... 83

Eingabe .................................................................... 261

ermitteln .................................................................. 390

Formel eintragen.................................................. 253

ganze Zeile/Spalte einfügen ............................... 84

ganze Zeile/Spalte löschen.................................. 85

hat Formel ................................................................. 89

Innenbereich ............................................................. 83

Innenfarbe ................................................................. 83

leere Zellen ermitteln............................................. 89

leere Zellen zählen ............................................... 290

letzte Zelle ermitteln .............................................. 89

löschen ........................................................................ 84

Muster ......................................................................... 82

Nachbarzelle verschieben .................................... 83

optimale Zeile/Spalte ............................................ 86

per E-Mail senden (Outlook) ............................ 339

Rahmen....................................................................... 81

sortieren...................................................................... 92

Spaltenbreite............................................................. 85

spezielle Zellen ......................................................... 88

unsichtbare Benutzung ........................................ 87

Versatz ........................................................................ 90

verwendeter Bereich .............................................. 86

Zahlen zählen ........................................................ 290

Zeilenhöhe ................................................................. 85

Zellbereich wird ausgewählt .............................. 97

Zellen zählen ............................................................. 88

zusammenhängender ........................................... 68

Zellbezug

relativer ................................................................... 255

Zelle ................................................................................... 67

Adresse ............................................................ 401, 411

ausgewählte.................................................. 401, 411

Spaltennummer ...................................................... 89

wird doppelt angeklickt ....................................... 98

Zeilennummer.......................................................... 89

Zellen verbinden....................................................... 396

Zellhintergrund

Sparkline ................................................................. 246

Zellinhalt

ausrichten .................................................................. 77

ein-/mehrzeiliger .................................................... 78

einzelne Zeichen ...................................................... 80

Formel eintragen .................................................... 74

kopieren ...................................................................... 71

löschen ........................................................................ 73

Muster-Dialog ....................................................... 371

nur Format kopieren ............................................. 72

nur Format löschen................................................ 73

nur Wert kopieren................................................... 72

nur Wert löschen ..................................................... 73

Schrift-Dialog ........................................................ 372

Schrifteigenschaft................................................... 79

übereinander ............................................................ 79

verbinden ................................................................... 78

verschieben................................................................ 71

Wert eintragen ......................................................... 74

Zoom

PageSetup .................................................................. 66

Zufallsgenerator.............................................. 399, 410

Zufallszahlengenerator .......................................... 133

Zuweisung ................................................................... 104

benutzerdefinierter Datentyp ......................... 181

Objekt ....................................................................... 195

über Objekthierarchie ........................................ 195

Zwischenablage ..................................................... 25, 35

3962.book Seite 455 Dienstag, 24. November 2015 3:53 15

Thomas Theis

Einstieg in VBA mit Excel455 Seiten, broschiert, 4. Auflage 2015 19,90 Euro, ISBN 978-3-8362-3962-2

www.rheinwerk-verlag.de/4015

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie ger-ne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag.

Teilen Sie Ihre Leseerfahrung mit uns!

Thomas Theis ist Dipl.-Ing. für Technische Informatik, verfügt über langjährige Erfahrung als EDV-Dozent, unter anderem an der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual Basic und Webprogram-mierung.

Wissen, wie’s geht.