Sie sind auf Seite 1von 416

Thomas Theis

Einstieg in VBA mit Excel

Thomas Theis Einstieg in VBA mit Excel

Liebe Leserin, lieber Leser,

Microsoft Excel kann viel, aber bei Weitem nicht alles, was Sie im beruflichen All- tag benötigen – diese Erfahrung haben Sie wahrscheinlich schon gemacht, wenn Sie beschlossen haben, Visual Basic for Applications, oder kurz VBA, zu lernen. Viele Dinge werden mit VBA erst möglich und noch mehr lassen sich erheblich beschleunigen. Auf Dauer zahlt es sich also aus zu lernen, wie man Excel neue Funktionen beibringt.

Vielleicht haben Sie bislang jedoch den Aufwand gescheut, sich mit VBA auseinan- derzusetzen? Dieses Buch wurde daher extra so konzipiert, dass Sie bereits nach kurzer Zeit Erfolge erzielen werden. Es wurde speziell für Leser geschrieben, die bislang noch keine Erfahrung im Programmieren haben. Schritt für Schritt zeigt Ihnen unser Autor Thomas Theis alles, was Sie wissen müssen, um Ihre eigenen VBA-Skripte entwickeln zu können. Das Hauptziel des Buchs ist dabei nicht, Ihnen sämtliche VBA-Konstrukte zu vermitteln, sondern Sie vor allen Dingen schnell in die Lage zu versetzen, Excel an Ihre Bedürfnisse anzupassen.

Die Theorie ist daher auf das absolut Notwendige reduziert – im Zentrum stehen die vielen Praxisbeispiele, anhand derer Sie den Stoff problemlos nachvollziehen können. Ihre neu gewonnenen Kenntnisse können Sie anschließend an Übungsauf- gaben austesten, so dass der letzte Schritt zu Ihren eigenen VBA-Skripten kein Pro- blem mehr für Sie darstellen wird.

Dieses Buch wurde mit großer Sorgfalt geschrieben, geprüft und produziert. Sollte dennoch einmal etwas nicht so funktionieren, wie Sie es erwarten, freue ich mich, wenn Sie sich mit mir in Verbindung setzen. Ihre Kritik und konstruktiven Anre- gungen sind uns jederzeit herzlich willkommen!

Doch nun viel Spaß bei der Lektüre und viel Erfolg mit VBA wünscht Ihnen

Ihre Christine Siedle Lektorat Galileo Computing

christine.siedle@galileo-press.de www.galileocomputing.de Galileo Press · Rheinwerkallee 4 · 53227 Bonn

Auf einen Blick

1 Einführung

15

2 Grundlagen von Objekten und Ereignissen

45

3 Grundlagen der Programmierung mit VBA

93

4 Fehlerbehandlung

125

5 Mehr über die Programmierung mit VBA

133

6 Mehr über Objekte

167

7 Diagramme und Grafiken

185

8 VBA- und Worksheet-Funktionen

227

9 Externe Daten

259

10 Dialogfelder

317

11 Beispielprojekt

341

Lösungen

387

Der Name Galileo Press geht auf den italienischen Mathematiker und Philosophen Galileo Galilei (1564–1642) zurück. Er gilt als Gründungsfigur der neuzeitlichen Wissenschaft und wurde berühmt als Verfechter des modernen, heliozentrischen Weltbilds. Legendär ist sein Ausspruch Eppur se muove (Und sie bewegt sich doch). Das Emblem von Galileo Press ist der Jupiter, umkreist von den vier Galileischen Monden. Galilei entdeckte die nach ihm benannten Monde 1610.

Lektorat Christine Siedle Fachgutachten Alois Eckl Korrektorat Bettina Mosbach Cover Barbara Thoben, Köln Typografie und Layout Vera Brauner Herstellung Norbert Englert Satz Typographie & Computer, Krefeld Druck und Bindung Bercker Graphischer Betrieb, Kevelaer

Dieses Buch wurde gesetzt aus der Linotype Syntax Serif (9,25/13,25 pt) in FrameMaker.

Gerne stehen wir Ihnen mit Rat und Tat zur Seite:

christine.siedle@galileo-press.de bei Fragen und Anmerkungen zum Inhalt des Buches service@galileo-press.de für versandkostenfreie Bestellungen und Reklamationen britta.behrens@galileo-press.de für Rezensions- und Schulungsexemplare

Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen National- bibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

ISBN

978-3-8362-1665-4

© Galileo Press, Bonn 2010 2., aktualisierte Auflage 2010

Das vorliegende Werk ist in all seinen Teilen urheberrechtlich geschützt. Alle Rechte vorbehalten, insbesondere das Recht der Übersetzung, des Vortrags, der Reproduktion, der Vervielfältigung auf fotomechanischem oder anderen Wegen und der Speicherung in elektronischen Medien. Ungeachtet der Sorgfalt, die auf die Erstellung von Text, Abbildungen und Program- men verwendet wurde, können weder Verlag noch Autor, Herausgeber oder Übersetzer für mögliche Fehler und deren Fol- gen eine juristische Verantwortung oder irgendeine Haftung übernehmen. Die in diesem Werk wiedergegebenen Gebrauchs- namen, Handelsnamen, Warenbezeichnungen usw. können auch ohne besondere Kennzeichnung Marken sein und als solche den gesetzlichen Bestimmungen unterliegen.

Inhalt

Geleitwort des Fachgutachters

13

1

Einführung

15

1.1 Was wird besser durch Makros und VBA?

15

1.2 Arbeiten mit Makros

17

1.2.1 Makro aufzeichnen

18

1.2.2 Makro ausführen

21

1.2.3 Makro ansehen

21

1.2.4 Makro speichern

23

1.2.5 Makrosicherheit ändern

24

1.2.6 Registerkarte »Entwicklertools«

25

1.2.7 Makrosicherheit dauerhaft ändern

26

1.3 Entwicklungsumgebung »Visual Basic Editor«

28

1.3.1 Menüleiste und Symbolleiste

28

1.3.2 Projekt-Explorer und Eigenschaften-Fenster

29

1.3.3 Codefenster

30

1.4 Makrocode verstehen und ändern

31

1.5 Makro per Schaltfläche ausführen

33

1.6 Relative Aufzeichnung

34

1.7 Persönliche Makroarbeitsmappe

36

1.8 Code schreiben, einfache Ausgabe

38

1.8.1 Eigene Sub-Prozedur

38

1.8.2 Ausgabe in Zelle

39

1.8.3 Ausgabe in Nachrichtenbox

40

1.8.4 Ausgabe im Direktfenster des VBE

41

1.9 Arbeiten mit Excel vor der Version 2007

41

1.9.1 Makro aufzeichnen

42

1.9.2 Makro ausführen

42

1.9.3 Makro ansehen

42

1.9.4 Makro speichern

43

1.9.5 Makrosicherheit

43

1.9.6 Symbolleiste »Visual Basic«

44

1.9.7 Entwicklungsumgebung Visual Basic Editor

44

1.9.8 Persönliche Makroarbeitsmappe

44

Inhalt

2

Grundlagen von Objekten und Ereignissen

45

2.1 Objekthierarchie und Auflistungen

45

2.2 Arbeitsmappen

46

2.2.1 Anzahl Arbeitsmappen ermitteln

47

2.2.2 Neue Arbeitsmappe erzeugen

47

2.2.3 Vorhandene Arbeitsmappe öffnen

48

2.2.4 Alle Arbeitsmappen schließen

48

2.2.5 Name einer Arbeitsmappe ermitteln

49

2.2.6 Aktive Arbeitsmappe

50

2.2.7 Arbeitsmappe aktivieren

51

2.2.8 Arbeitsmappe speichern

51

2.2.9 Arbeitsmappe über Index oder Name auswählen

52

2.2.10 Pfad einer Arbeitsmappe ermitteln

53

2.3 Tabellenblätter

55

2.3.1 Tabellenblatt erzeugen

55

2.3.2 Tabellenblatt kopieren

56

2.3.3 Tabellenblatt verschieben

57

2.3.4 Tabellenblatt löschen

58

2.3.5 Tabellenblatt aktivieren

58

2.3.6 Tabellenblatt formatieren

59

2.3.7 Gitternetz, Zeilen- und Spaltenüberschrift

59

2.3.8 Seiteneinrichtung

60

2.4 Zellen und Zellbereiche

62

2.4.1 Zellen über »Range« auswählen

63

2.4.2 Zellen über »Cells« auswählen

65

2.4.3 Zellinhalte verschieben oder kopieren

66

2.4.4 Teile von Zellinhalten kopieren

67

2.4.5 Zellinhalt löschen

68

2.4.6 Werte und Formeln eintragen

69

2.4.7 Zellformat »Zahlen«

70

2.4.8 Zellformat »Ausrichtung«

72

2.4.9 Zellformat »Schrift«

73

2.4.10 Einzelne Zeichen formatieren

74

2.4.11 Zellformat »Rahmen«

75

2.4.12 Zellformat »Muster«

76

2.4.13 Zellen einfügen

77

2.4.14 Zellen löschen

78

2.4.15 Zeilenhöhe und Spaltenbreite

79

2.4.16 Benutzten Zellbereich erkennen

80

2.4.17 Spezielle Zellen erkennen

81

Inhalt

 

2.4.18 Versatz mit Offset

83

2.4.19 Zellbereich sortieren

85

2.5

Ereignisprozeduren

88

2.5.1 Arbeitsmappe wird geöffnet

89

2.5.2 Arbeitsmappe wird geschlossen

89

2.5.3 Tabellenblatt wird aktiviert

90

2.5.4 Zellauswahl wechselt

90

2.5.5 Doppelklick auf Zelle

91

2.5.6 Tabellenblatt wurde neu berechnet

91

3 Grundlagen der Programmierung mit VBA

93

3.1 Allgemeines

93

 

3.1.1 Codeblöcke auskommentieren

94

3.1.2 Zeilen zerlegen

95

3.2 Variablen und Datentypen

96

 

3.2.1 Namen, Werte

96

3.2.2 Deklarationen

96

3.2.3 Datentypen

97

3.2.4 Konstanten

101

3.3 Operatoren

102

 

3.3.1 Arithmetische Operatoren

103

3.3.2 Vergleichsoperatoren

106

3.3.3 Logische Operatoren

108

3.3.4 Verkettungsoperator

109

3.3.5 Rangfolge der Operatoren

110

3.4 Verzweigungen

111

 

3.4.1

Einzeiliges If … Then … Else

112

3.4.2

If-Then-Else-Block

112

3.4.3

Select Case

114

3.5 Schleifen

116

 

3.5.1

For-Next-Schleife

116

3.5.2

Do-Loop-Schleife

120

4 Fehlerbehandlung

125

4.1 Syntaxfehler

125

4.2 Laufzeitfehler

126

 

4.2.1 Programm mit Laufzeitfehlern

126

4.2.2 Abfangen mit On Error

128

Inhalt

4.3

Logische Fehler und Debugging

130

4.3.1 Einzelschrittverfahren

130

4.3.2 Haltepunkte

132

5 Mehr über die Programmierung mit VBA

133

5.1 Gültigkeitsbereiche

133

5.2 Datenfelder

 

135

 

5.2.1 Eindimensionale Datenfelder

136

5.2.2 Mehrdimensionale Datenfelder

138

5.2.3 Dynamische Datenfelder

140

5.2.4 Datenfelder löschen oder freigeben

142

5.3 Prozeduren und Funktionen

144

 

5.3.1 Prozeduren

144

5.3.2 Übergabe von Parametern

147

5.3.3 Funktionen

149

5.3.4 Optionale Parameter

152

5.3.5 Benannte Parameter

154

5.3.6 Beliebig viele Parameter

156

5.3.7 Datenfelder als Parameter

158

5.4 Benutzerdefinierter Datentyp

159

5.5 Modular programmieren

162

 

5.5.1 Code in der gleichen Datei

162

5.5.2 Code in einer anderen Datei

163

5.6 Module exportieren und importieren

165

 

5.6.1 Export eines Moduls

165

5.6.2 Import eines Moduls

166

6 Mehr über Objekte

167

6.1 Objektkatalog

 

167

6.2 Referenzierung von Objekten

168

 

6.2.1

Beispiel »Zellen verschieben«

169

6.3 Objektzugriff mit With

170

6.4 Arbeiten mit Objektvariablen

171

 

6.4.1 Objektvariablen hierarchisch zuweisen

173

6.4.2 Neue Objekte erzeugen

174

6.4.3 Objekttyp ermitteln

174

6.5 For-Each-Schleife

176

6.6 Collections

 

178

Inhalt

 

6.7 Hauptobjekt »Application«

179

6.7.1

Anwendungspfad ausgeben

179

6.7.2

Prozedur zeitverzögert aufrufen

180

6.7.3

Anwendung Microsoft Excel schließen

181

6.8 Filtern

181

7

Diagramme und Grafiken

185

7.1 Diagramm erstellen

186

7.1.1 Diagrammblatt erstellen

186

7.1.2 Eingebettetes Diagramm erstellen

188

7.2 Diagramm ändern

190

7.2.1 Diagrammblatt ändern

190

7.2.2 Eingebettetes Diagramm ändern

194

7.3 Diagramm verwalten

195

7.3.1 Diagrammblatt verwalten

195

7.3.2 Eingebettetes Diagramm verwalten

197

7.4 Beispiel: Formatiertes Kreisdiagramm

198

7.5 Shapes

201

7.5.1

Rechteck

201

7.5.2

Oval

203

7.5.3

Linie

204

7.5.4

Verbinder

205

7.5.5

Freiform

207

7.5.6

Alle Formen

210

7.6 WordArt

212

7.7 Bedingte Formatierungen

214

7.7.1 Datenbalken

214

7.7.2 Zweifarbige Farbskala

215

7.7.3 Dreifarbige Farbskala

217

7.7.4 Symbolsatz

218

7.8 Sparklines

220

7.8.1

Linie

220

7.8.2

Spalte

221

7.8.3

Gewinn/Verlust-Anzeige

222

7.8.4

Formatierung

222

7.8.5

Alle Farben

223

7.9 SmartArt

224

Inhalt

8 VBA- und Worksheet-Funktionen

227

8.1 Eingaben des Benutzers

228

8.1.1 Funktion »InputBox«

229

8.1.2 Methode »Application.InputBox«

229

8.2 Einfacher Dialog mit dem Benutzer

233

8.2.1 Button »OK«

233

8.2.2 Buttons – eine Übersicht

234

8.2.3 Zeichen »Information«

235

8.2.4 System-modal

235

8.2.5 Buttons »Ja« und »Nein«

236

8.2.6 Drei Buttons, Default-Button

237

8.2.7 Buttons »Wiederholen« und »Abbrechen«

238

8.2.8 Buttons »Abbrechen«, »Wiederholen« und »Ignorieren«

238

8.3 Zeichenketten

239

8.3.1 Zeichenketten umwandeln

241

8.3.2 Ausgabeformatierung

242

8.3.3 Datensätze zusammenfügen

245

8.3.4 Datensätze zerlegen

246

8.4 Datum und Uhrzeit

247

8.4.1 Zeitintervall addieren

247

8.4.2 Zeitdifferenz berechnen

248

8.4.3 Datumsangaben erstellen, Wochentage markieren

248

8.4.4 Jahreskalender

249

8.5 Weitere Funktionen

252

8.5.1 Anwendung unterbrechen

252

8.5.2 Einheitenumrechnung

253

8.5.3 Zahlensystemumrechnung

255

8.5.4 Zellen zählen

256

9 Externe Daten

259

9.1 Textdateien, Import und Export

259

9.1.1 Lesen aus Textdateien

259

9.1.2 Import von Datensätzen

261

9.1.3 Schreiben in Textdateien

263

9.1.4 Export von Datensätzen

265

9.2 Arbeiten mit Dateien

266

9.2.1 Dateien suchen und auflisten

266

9.2.2 Informationen über Dateien

268

9.2.3 Operationen mit Dateien

270

Inhalt

9.3 Austausch mit Microsoft Word

272

 

9.3.1 Objektmodell von Word

272

9.3.2 Import von Absätzen aus Word

273

9.3.3 Import von Tabellen aus Word

275

9.3.4 Export zu Word, Erstellen von Absätzen

277

9.3.5 Export zu Word, Erstellen von Tabellen

279

9.4 Austausch mit Microsoft Outlook

281

 

9.4.1 Objektmodell von Outlook

282

9.4.2 Einfaches Versenden einer Arbeitsmappe

283

9.4.3 Integriertes E-Mail-Dialogfeld

285

9.4.4 Zusammensetzen einer E-Mail

286

9.4.5 Erstellen einer Serien-E-Mail

288

9.4.6 Bestimmten Bereich in E-Mail versenden

289

9.4.7 Zugriff auf Outlook-Verzeichnis

291

9.4.8 Zugriff auf E-Mail-Anhänge

293

9.4.9 Zugriff auf Kontakte

295

9.4.10 Kontakt erzeugen

296

9.4.11 Termin erzeugen

297

9.4.12 Terminserie erzeugen

298

9.5 Austausch mit Microsoft Access

300

 

9.5.1 Beispiel-Datenbank: Aufbau

301

9.5.2 Beispiel-Datenbank: Verbindung herstellen

301

9.5.3 SQL-Befehle

302

9.5.4 Beispiel-Datenbank: Auswahlabfrage

303

9.5.5 Beispiel-Datenbank: Aktionsabfrage

305

9.5.6 SQL: Auswahlabfragen mit SELECT

307

9.5.7 SQL: Operatoren

308

9.5.8 SQL: Abfrageergebnis sortieren

310

9.5.9 SQL: Auswahlabfragen zur Suche nach Eingabe

311

9.5.10 SQL: Aktionsabfrage zum Ändern mit UPDATE

312

9.5.11 SQL: Aktionsabfrage zum Einfügen mit INSERT

314

9.5.12 SQL: Aktionsabfrage zum Löschen mit DELETE

315

10 Dialogfelder

317

10.1

Integrierte Dialogfelder

317

10.1.1 Datei öffnen

318

10.1.2 Datei speichern unter

319

10.1.3 Muster für Zellbereich auswählen

319

10.1.4 Schriftformatierung für Zellbereich auswählen

320

Inhalt

10.2

Eigene Dialogfelder und Anwendungen

321

10.2.1 Ein erstes Beispiel

321

10.2.2 Erstes Beispiel: Gestaltung

321

10.2.3 Erstes Beispiel: Code

323

10.2.4 Erstes Beispiel: Starten

324

10.2.5 Arbeiten mit Steuerelementen

325

10.2.6 Textfeld und Bezeichnungsfeld

327

10.2.7 Optionsschaltflächen und Kontrollkästchen

328

10.2.8 Liste, Bildlaufleiste und Drehfeld

332

10.2.9 Ausgabeformatierung

335

10.2.10 RefEdit und Umschaltfeld

337

11 Beispielprojekt

341

11.1 Was ist Nordwind?

341

11.2 Vorbereitungen für das Projekt

342

 

11.2.1 Tabelle »Kunden«

343

11.2.2 Tabelle »Artikel«

343

11.2.3 Restliche Vorbereitungen

344

11.3 Benutzung des Programms

344

 

11.3.1 Hauptdialogfeld »Nordwind«

345

11.3.2 Unterdialogfeld »Kunden Neu«

345

11.3.3 Unterdialogfeld »Kunden Ändern«

346

11.3.4 Unterdialogfeld »Artikel Neu«

348

11.3.5 Unterdialogfeld »Artikel Ändern«

349

11.3.6 Unterdialogfeld »Bestellungen Neu«

350

11.4 Entwicklung des Programms

353

 

11.4.1 Das VBA-Projekt

353

11.4.2 Die Arbeitsmappe

353

11.4.3 Das gemeinsame Modul

354

11.4.4 Hauptdialogfeld »Nordwind«

354

11.4.5 Unterdialogfeld »Kunden Neu«

356

11.4.6 Unterdialogfeld »Kunden Ändern«

360

11.4.7 Unterdialogfeld »Artikel Neu«

366

11.4.8 Unterdialogfeld »Artikel Ändern«

371

11.4.9 Unterdialogfeld »Bestellungen Neu«

377

Lösungen

387

Index

395

Geleitwort des Fachgutachters

Seit der Version 95, welche im August 1995 erschienen ist, bietet Micro- soft Excel Anwendern die Möglichkeit in VBA (Visual Basic for Applica- tions) zu programmieren und es auf diese Weise ihren Bedürfnissen anzupassen. Um die ersten, wichtigen Schritte beruhigt gehen zu kön- nen, ist eine gute Wegbegleitung dabei unverzichtbar.

Die VBA-gestützte Steuerung und Erweiterung gewährleistet größtmögli- che Flexibilität und optimale Anpassungsfähigkeit. Durch die Verwen- dung von Visual Basic for Applications neben den bereits in Excel inte- grierten Funktionen erschließen sich völlig neue Anwendungsbereiche und Möglichkeiten. Excel-Tabellen lassen sich dynamisieren und auto- matisieren, eigene Funktionen können erstellt werden und stehen damit uneingeschränkt zur Verfügung. Die Liste der Möglichkeiten könnte an dieser Stelle beliebig weitergeführt werden.

Zum Einstieg in VBA bietet Excel den sogenannten Makro-Rekorder, mit dessen Hilfe sich schnell und fast ohne jegliche Programmierkenntnisse schon respektable Ergebnisse erzielen lassen. Wenn es allerdings darum geht, eigene benutzerdefinierte Eingabemöglichkeiten wie die einfache Abfrage eines Wertes oder gar eigene Dialogfenster mit mehreren Ein- gabe- und Auswahlmöglichkeiten zu erstellen, dann kommen Sie ohne VBA und entsprechend tiefgreifendere Programmierkenntnisse nicht weiter. Wichtig in diesem Zusammenhang ist ein umfangreiches Wissen über das Objektmodell von Excel und über grundlegende Programmier- logiken wie beispielsweise If-Abfragen, Programmverzweigungen und Schleifen. Darüber hinaus muss der VBA-Programmierer überblicken, welchen Befehlssatz Microsoft Office und insbesondere Microsoft Excel zur Verfügung stellt und wie dieser angesprochen werden kann.

Genau hier setzt nun das vorliegende Buch von Thomas Theis an, indem es ganz speziell auf die Bedürfnisse von VBA-Einsteigern eingeht. Dieses Buch führt Sie Schritt für Schritt an die VBA-Programmierung heran. Beginnend mit grundlegenden Themen wie dem Umgang mit dem VBA- Editor bis hin zur Programmierung von eigenen Dialogfenstern werden die Möglichkeiten von VBA sehr klar und übersichtlich dargestellt. In diesem Buch ist der schwierige Spagat zwischen verständlicher Schreib-

Geleitwort des Fachgutachters

weise, klarer Themenstruktur und detaillierter Erläuterung sehr gut gelungen. Darüber hinaus wird Gelerntes in Übungsaufgaben vertieft und damit gefestigt.

Aber auch fortgeschrittene Anwender und VBA-Entwickler können von diesem Werk profitieren. Durch den konsequent objektorientierten Auf- bau des Buches lässt sich dieses auch sehr schön als Praxis-Nachschlage- werk verwenden. Alle relevanten Stichwörter und VBA-Befehle befinden sich jeweils am Seitenrand, wodurch ein schneller Zugriff auf sämtliche Themen ermöglicht wird.

An diesem Buch gefällt mir besonders gut, dass sich mit Hilfe der beschriebenen Programmierbeispiele die Theorie schnell und verständ- lich in die Praxis umsetzen lässt. Neben der verständlichen Darstellung von theoretischen Zusammenhängen geht Herr Theis den Weg, anhand von einzelnen kleineren Praxisbeispielen alle relevanten VBA-Befehle zu erklären und deren Funktionsweise zu erläutern. So lernt der Einsteiger Step by Step die Möglichkeiten von VBA kennen und anzuwenden.

Zu guter Letzt bleibt mir nur zu sagen, dass ich dieses Buch als ein rundum gelungenes Werk all denen empfehlen kann, die sich näher mit der Thematik VBA rund um Microsoft Excel auseinander setzen möchten und schnell und unkompliziert in diese Materie eintauchen wollen.

Alois Eckl

Eckl-IT-Consulting Controller, Consultant und VBA-Entwickler

In diesem Kapitel lernen Sie erste VBA-Makros kennen. Sie erfahren, wie sie aufgebaut sind und wie man sie verändern kann. Außerdem wird die Entwicklungsumgebung für VBA erläutert.

1

Einführung

Die 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.

VBA

Mit Microsoft Excel können sehr viele alltägliche Aufgaben im beruf- lichen und privaten Bereich bereits gut bewältigt werden. Es gibt jedoch:

Aufgaben, die man nur durch zusätzliche Programmierung mit VBA lösen kann

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 man VBA als Ergänzung zu Excel sinnvoll einsetzt. Eigene Übungen (mit den Lösungen im Anhang) dienen dazu, Ihren Wissens- stand zu testen.

 

Für die Hilfe bei der Erstellung dieses Buchs bedanke ich mich bei Alois Eckl, Petra Biedermann und dem ganzen Team von Galileo, ganz beson- ders bei Christine Siedle.

1.1

Was wird besser durch Makros und VBA?

Ein 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 weit über einfache Makros hinausgehen und komplexe Abläufe steuern.

Makro

1

Einführung

In der Praxis sieht es häufig so aus, dass es zwei Gruppen von Anwen- dern gibt:

Entwickler

Entwickler, also erfahrene Excel-Anwender, die sich mit der Entwick- lung 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 die Auftragnehmer der Benutzer. Die Entwicklung kann in einer anderen Abteilung des gleichen Unternehmens stattfinden. Es kann sich aber auch um externe, eingekaufte Excel-Anwendungen 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.

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

Es folgen einige typische Szenarien, die Ihnen zeigen sollen, wozu man VBA nutzen kann und welche Vorteile sich daraus ergeben:

Große

Es sollen große Mengen an Daten aus einer Textdatei eingelesen wer-

Datenmengen

den. 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 Verdeutli- chung grafisch dargestellt 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

Der Benutzer soll nach Aufruf der Excel-Anwendung ein Dialogfeld vor sich haben. Darin nimmt er, abhängig von der aktuellen Situation, bestimmte Einstellungen vor, trifft die gewünschte Auswahl der Daten und startet dann deren weitere Verarbeitung.

Wiederkehrende

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

Daten

Daten, die auf ähnliche (nicht identische) Art und Weise weiterverar- beitet werden müssen.

Schrittweise

Die Verarbeitung bestimmter Daten ist komplex und muss in mehre-

Bearbeitung

ren Schritten erfolgen. Mit VBA kann man die Koordination und die Durchführung der einzelnen Schritte vereinfachen.

16

Arbeiten mit Makros

Dem Benutzer sollen nach Aufruf von Excel nur bestimmte Funktio- nalitäten zur Verfügung stehen. Sein Excel kann durch VBA gleichzeitig:

eingeschränkt werden, wodurch es im Idealfall zu weniger Fehlbe- dienungen kommt.

erweitert werden; dadurch stehen ihm spezielle Funktionen und Abläufe zur Verfügung, die über Excel hinausgehen.

Es sollen bereits vorhandene (von anderen Entwicklern im Unterneh- men erstellte oder eingekaufte) Excel-Anwendungen geändert werden. Diese werden zur Bewältigung der laufenden Geschäftsprozesse bereits regelmäßig eingesetzt. Da sich diese Prozesse geändert haben, müssen auch die Excel-Anwendungen erweitert und angepasst werden.

1.2

Excel anpassen

Anwendungen

erweitern

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 Objektbibliothek mit all ihren Eigenschaften und Methoden) aufzulisten und zu erläutern. Dazu gibt es zu viele, und Sie würden schnell den Über- blick verlieren. Es wird jedoch eine umfangreiche Auswahl getroffen, die es Ihnen ermöglicht, selbständig mit VBA zu arbeiten.

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, in denen sich nur eine kleine Neuigkeit verbirgt, verwirrt werden.

Verständliche

Beispiele

1.2 Arbeiten mit Makros

Zu Beginn erstellen wir ein einfaches Makro. Dieses Makro soll anschlie- ßend ausgeführt werden. Anschließend betrachten wir den Code, um einen ersten Blick auf VBA werfen zu können.

Das Thema Makrosicherheit, also die Sicherheit vor fremden Makros, die Schädliche Makros schädlichen Code enthalten können, spielt eine große Rolle. Diese The- matik wird in Abschnitt 1.2.5, »Makrosicherheit ändern«, erläutert.

Excel-Dateien können in Excel 2010 (und auch schon in Excel 2007) sowohl mit als auch ohne Makros gespeichert werden. Darauf wird in Abschnitt 1.2.4, »Makro speichern«, eingegangen.

Die in diesem Kapitel erläuterte Bedienung gilt für Excel 2010. Unter Excel 2007 gibt es leichte Abweichungen in der Bedienung, darauf wird

17

1

Einführung

an den entsprechenden Stellen jeweils gesondert hingewiesen. In den Excel-Versionen vor Excel 2007 gibt es größere Abweichungen in der Bedienung, die in einem eigenen Abschnitt (1.9) erläutert werden.

Die weitaus meisten Beispiele in diesem Buch laufen auch unter Excel 2007 und unter älteren Versionen. Falls einzelne Beispiele des Buchs anders oder gar nicht laufen, wird dies an der betreffenden Stelle erläu- tert. Sämtliche Beispiele finden Sie – getrennt für die Versionen vor und ab 2007 – auch auf der Buch-CD.

1.2.1 Makro aufzeichnen

Mit Hilfe der folgenden Beschreibung erstellen Sie ein Makro, um den Inhalt der Zelle A1 in die Zelle C1 zu verschieben. Dazu benötigt man natürlich kein VBA, es dient aber zur ersten Verdeutlichung der Abläufe.

Makro erstellen

Nun geht es los:

1.

Starten Sie Excel 2010.

2.

Sie haben eine leere Arbeitsmappe (Mappe1) vor sich.

3.

Tragen Sie in der Zelle A1 einen beliebigen Inhalt (Zahl oder Text) ein (siehe Abbildung 1.1).

liebigen Inhalt (Zahl oder Text) ein (siehe Abbildung 1.1). Abbildung 1.1 Zelle, deren Inhalt verschoben werden

Abbildung 1.1

Zelle, deren Inhalt verschoben werden soll

4.

Klappen Sie das Menü über den nach unten weisenden Pfeil am But- ton Makros in der Registerkarte Ansicht auf.

5.

Wählen Sie den Menüpunkt Makro aufzeichnen .

6.

Es erscheint das Dialogfeld Makro aufzeichnen (siehe Abbildung

1.2).

18

Arbeiten mit Makros

Arbeiten mit Makros Abbildung 1.2 Makro mit dem Namen »Makro1« 7. Der vorgeschlagene Makroname ist Makro1

Abbildung 1.2

Makro mit dem Namen »Makro1«

7. Der vorgeschlagene Makroname ist Makro1, dieser kann beibehalten werden.

8. Betätigen Sie den Button OK.

9. Ab jetzt werden alle Aktionen, die Sie ausführen, aufgezeichnet.

10. Wählen Sie die Zelle A1 aus.

11. Schneiden Sie die Zelle A1 aus.

12. Wählen Sie die Zelle C1 aus.

13. Fügen Sie die Zelle A1 ein.

14. Der Inhalt der Zelle A1 wurde nach C1 verschoben (siehe Abbildung

1.3).

1.2

Aufzeichnung

beginnt

15. Klappen Sie wiederum das Menü über den Pfeil am Button Makros in der Registerkarte Ansicht auf.

16. Wählen Sie den Menüpunkt Aufzeichnung beenden .

17. Damit wird die Aufzeichnung Ihrer Aktionen beendet.

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

Sie haben damit soeben Ihr erstes Makro erfolgreich erstellt.

19

1

Symbol zum

Aufzeichnen

Einführung

1 Symbol zum Aufzeichnen Einführung Abbildung 1.3 Zellen nach der Verschiebung Das Aufzeichnen geht etwas schneller,

Abbildung 1.3

Zellen nach der Verschiebung

Das Aufzeichnen geht etwas schneller, wenn Sie in der Excel-Oberfläche das entsprechende Symbol in der Statusleiste betätigen (siehe Abbildung

1.4).

in der Stat usleiste betätigen (siehe Abbildung 1.4). Abbildung 1.4 Symbol zum Starten einer Makro-Aufzeichnung

Abbildung 1.4

Symbol zum Starten einer Makro-Aufzeichnung

Nach Beginn der Aufzeichnung erscheint an der gleichen Stelle das Sym- bol zum Beenden der Aufzeichnung in der Statusleiste.

Sym- bol zum Beenden der Aufzeich nung in der Statusleiste. Abbildung 1.5 Symbol zum Beenden einer

Abbildung 1.5

Symbol zum Beenden einer Makro-Aufzeichnung

Übung 1 A

Tragen Sie eine Zahl oder einen Text in die Zelle E3 ein. Zeichnen Sie ein Makro auf, das den Inhalt der Zelle E3 in die Zelle E5 kopiert. Nennen Sie das Makro KopieE3E5.

20

1.2.2 Makro ausführen

Arbeiten mit Makros

1.2

Das soeben erstellte Makro soll nun ausgeführt werden. Gehen Sie dazu wie folgt vor:

Makro starten

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

Klappen Sie das Menü über den Pfeil unten am Button Makros auf der Registerkarte Ansicht auf.

Wählen Sie den Menüpunkt Makros anzeigen.

Es erscheint das Dialogfeld Makro mit einer Liste der bisher erstell- ten Makros.

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

Betätigen Sie den Button Ausführen .

Der Inhalt der Zelle A1 wurde wiederum nach C1 verschoben.

Damit haben Sie Ihr erstes Makro dann auch erfolgreich ausgeführt.

 
 

Übung 1 B

 

Tragen Sie einen neuen Inhalt in die Zelle E3 ein. Führen Sie das Makro KopieE3E5 aus, und überprüfen Sie das Ergebnis auf Richtigkeit.

 

Hinweis

Name des Makros

 

Ein Makro sollte einen möglichst sprechenden Namen haben, der etwas über seine Arbeitsweise aussagt. Es kann dann beim Aufruf leichter aus der Liste der Makros ausgewählt werden.

 

1.2.3

Makro ansehen

Sie können sich den VBA-Code des soeben erstellten Makros ansehen, um einen ersten Eindruck von typischem VBA zu bekommen. Gehen Sie dazu wie folgt vor:

VBA-Code

Klappen Sie das Menü über den Pfeil am Button Makros in der Regis- terkarte Ansicht auf.

Wählen Sie den Menüpunkt Makros anzeigen.

Es erscheint das Dialogfeld Makro mit einer Liste der bisher erstell- ten Makros.

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

Betätigen Sie den Button Bearbeiten .

21

1

Visual Basic Editor

Einführung

Es erscheint der Visual Basic Editor (VBE), die eigentliche Entwicklungs- umgebung. Auf seine einzelnen Elemente wird in Abschnitt 1.3, »Ent- wicklungsumgebung ›Visual Basic Editor‹«, eingegangen. Zunächst ist im rechten Fenster der Code des Makros zu sehen (Abbildung 1.6).

Fenster der Code des Ma kros zu sehen (Abbildung 1.6). Abbildung 1.6 VBA-Code des Makros »Makro1«

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 noch ausführlicher erläutert.

Sub

End Sub

Der Code des Makros Makro1 ist innerhalb einer Sub-Prozedur zwi- schen Sub und End Sub notiert.

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 zur Erläuterung des VBA-Codes. Er wird nicht ausgeführt.

 

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

 

Cut

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.

22

Arbeiten mit Makros

1.2

Übung 1 C

Interpretieren Sie den VBA-Code des Makros KopieE3E5:

Sub KopieE3E5()

Range("E3").Select

Selection.Copy

Range("E5").Select

ActiveSheet.Paste End Sub

Schließen Sie den Visual Basic Editor über das Menü Datei Schliessen und zurück zu Microsoft Excel . Es erscheint die Excel-Oberfläche.

1.2.4 Makro speichern

Excel-Dateien können seit Excel 2007 mit Makros oder ohne Makros gespeichert werden.

Rufen Sie in Excel 2010 das Menü Datei (unter Excel 2007 die Schaltflä- Dateiendung xlsx che Office ) auf und darin den Menüpunkt Speichern . Es erscheint das Dialogfeld Speichern unter. Als Dateityp ist Excel-Arbeitsmappe mit der Dateiendung .xlsx angegeben (siehe Abbildung 1.7).

mit der Dateiendung .xlsx angegeben (siehe Abbildung 1.7). Abbildung 1.7 Speichern als Arbeitsmappe ohne Makros Falls

Abbildung 1.7

Speichern als Arbeitsmappe ohne Makros

Falls Sie nun den Button Speichern betätigen, erscheint der Hinweis, dass die in dieser Datei enthaltenen Makros bei diesem Dateityp nicht mitgespeichert werden. Sie würden also verlorengehen.

mitgespeichert werden. Sie würden also verlorengehen. Abbildung 1.8 Warnung, dass enthaltene Makr os nicht

Abbildung 1.8

Warnung, dass enthaltene Makros nicht mitgespeichert werden

23

1

Dateiendung xlsm

Einführung

Zur Speicherung mit Makros sollten Sie daher den Button Nein betäti- gen, im Dialogfeld Speichern unter als Dateityp die Option Excel- Arbeitsmappe mit Makros mit der Dateiendung .xlsm auswählen und anschließend mit dem gewünschten Namen im gewünschten Verzeichnis speichern, z. B. C:\Temp\Mappe1.xlsm.

Verzeichnis speichern, z. B. C:\Temp\Mappe1.xlsm . Abbildung 1.9 Speichern als Arbeitsmappe mit Makros Nachdem

Abbildung 1.9

Speichern als Arbeitsmappe mit Makros

Nachdem die Datei erfolgreich mit Makros gespeichert wurde, können Sie Excel jetzt schließen.

1.2.5 Makrosicherheit ändern

Starten Sie Excel erneut. Falls Sie nun die soeben gespeicherte Datei erneut öffnen, stoßen Sie unweigerlich auf das Thema Makrosicherheit. Was bedeutet das?

Sicherheits-

warnung

Excel 2010 (wie auch 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).

Makros deaktiviert wurden (siehe Abbildung 1.10). Makros deaktiviert Abbildung 1.10 Sicherheitswarnung

Makros

deaktiviert

Abbildung 1.10

Sicherheitswarnung »Makros wurden deaktiviert.«

Diese Reaktion erfolgt aufgrund der folgenden Standardeinstellung für die Makrosicherheit in Excel: Alle Makros mit Benachrichtigung deakti- vieren. Falls Sie versuchen, ein Makro auszuführen, erscheint die Infor- mation, dass dies nicht möglich ist.

24

Arbeiten mit Makros

1.2

Arbeiten mit Makros 1.2 Abbildung 1.11 Hinweis: Makro-Ausführung nicht möglich Sie haben die Möglichkeit, die in

Abbildung 1.11

Hinweis: Makro-Ausführung nicht möglich

Sie haben die Möglichkeit, die in dieser Datei enthaltenen Makros zu aktivieren. Damit wird unter Excel 2010 die Datei in die Liste der ver- trauenswürdigen Dokumente aufgenommen, unter Excel 2007 werden die Makros in dieser Datei einmalig aktiviert. Dazu führen Sie Folgendes durch:

Aktivieren von

Makros

1. Schließen Sie die Datei.

2. Öffnen Sie sie erneut.

3a. Unter Excel 2010 betätigen Sie den Button Inhalt aktivieren (neben der Sicherheitswarnung, siehe Abbildung 1.10).

3b. Unter Excel 2007 betätigen Sie den Button Optionen und wählen anschließend die Option Diesen Inhalt aktivieren.

Anschließend verschwindet die Sicherheitswarnung, und Sie können Makros ausführen. Unter Excel 2007 erscheint die Sicherheitswarnung allerdings beim nächsten Öffnen der Datei wieder. Man kann auch alle Excel-Dateien in einem Verzeichnis für dauerhaft vertrauenswürdig erklären, siehe Abschnitt 1.2.7.

1.2.6 Registerkarte »Entwicklertools«

Die Registerkarte Entwicklertools bietet weitergehende Möglichkeiten zur Erstellung und Verwaltung von Makros. Daher sollten Sie sie dauer- haft in Excel einblenden.

Excel-Optionen

Unter 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 markieren Sie die Hauptregisterkarte Entwicklertools (siehe Abbildung 1.12 für Excel

2010).

Unter Excel 2007 betätigen Sie die Schaltfläche Office und dort den But- ton Excel-Optionen. In der Kategorie Häufig verwendet aktivieren Sie Entwicklerregisterkarte in der Multifunktionsleiste anzeigen .

25

1

Einführung

1 Einführung Abbildung 1.12 Registerkarte »Entwicklertools« einblenden Entwicklertools Anschließend ist die

Abbildung 1.12

Registerkarte »Entwicklertools« einblenden

Entwicklertools

Anschließend ist die Registerkarte dauerhaft aktiviert (siehe Abbildung 1.13 für Excel 2007).

uerhaft aktiviert (siehe Abbildung 1.13 für Excel 2007). Abbildung 1.13 Registerkarte »Entwicklertools« 1.2.7

Abbildung 1.13

Registerkarte »Entwicklertools«

1.2.7

Makrosicherheit dauerhaft ändern

Vertrauenscenter

Klicken Sie auf der Registerkarte Entwicklertools den Button Makro- sicherheit an (siehe Abbildung 1.14 für Excel 2010).

den Button Makro- sicherheit an (siehe Abbildung 1.14 für Excel 2010). Abbildung 1.14 26 Button Makrosicherheit

Abbildung 1.14

26

Button Makrosicherheit

Arbeiten mit Makros

Unter Excel 2010 öffnet sich das Dialogfeld Sicherheitscenter , unter Excel 2007 das Dialogfeld Vertrauenscenter. Nach dem Drücken des Buttons (bzw. nach der Auswahl der Kategorie) Einstellungen für Makros sehen Sie die Standardeinstellung: Alle Makros mit Benachrichti- gung deaktivieren (siehe Abbildung 1.15 für Excel 2010).

1.2

Sicherheitscenter

Abbildung 1.15 für Excel 2010). 1.2 Sicherheitscenter Abbildung 1.15 Sicherheitscenter Die folgende Möglichkeit

Abbildung 1.15

Sicherheitscenter

Die folgende Möglichkeit ist allerdings besser geeignet: Nach Drücken des Buttons (bzw. nach der Auswahl der Kategorie) Vertrauenswürdige Speicherorte (siehe Abbildung 1.15 für Excel 2010) sehen Sie eine Liste der vertrauenswürdigen Verzeichnisse. Die Makros in den hier gelisteten Verzeichnissen können immer ausgeführt werden.

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 dieses Verzeichnis zu der Liste hinzu- fügen. Dazu betätigen Sie den Button Neuen Speicherort hinzufügen . Es erscheint ein Dialogfeld, in dem Sie die gewünschten Eingaben vor- nehmen können.

in de m Sie die gewünschten Eingaben vor- nehmen können. Abbildung 1.16 Vertrauenswürdiges Verzeichnis Vertrauens-

Abbildung 1.16

Vertrauenswürdiges Verzeichnis

Vertrauens-

würdiger

Speicherort

Eigener

Speicherort

Anschließend ist die Liste der vertrauenswürdigen Speicherorte um ein Element ergänzt.

27

1

Tasten Alt + F11

Einführung

1 Tasten Alt + F11 Einführung Abbildung 1.17 Liste der vertrauenswürdigen Verzeichnisse 1.3 Entwicklungsumgebung

Abbildung 1.17

Liste der vertrauenswürdigen Verzeichnisse

1.3 Entwicklungsumgebung »Visual Basic Editor«

Es gibt mehrere Wege, den Visual Basic Editor (VBE), die Entwicklungs- umgebung, aufzurufen, in der man den VBA-Code schreibt. Wie bereits erläutert, gelangen Sie über den Button Makros auf der Registerkarte Ansicht oder der Registerkarte Entwicklertools dorthin. Außerdem können Sie den VBE von der Excel-Oberfläche mit der Tastenkombina- tion (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.

Symbolleiste

»Bearbeiten«

1.3.1 Menüleiste und Symbolleiste

Im oberen Teil des VBE befinden sich eine Menüleiste und die Symbol- leiste Voreinstellung. Nützlich für die Programmierung ist auch die Symbolleiste Bearbeiten, die Sie über das Menü Ansicht Symbolleis- ten einblenden können.

das Menü Ansicht Symbolleis- ten einblenden können. Deklaration erzwingen Abbildung 1.18 Symbolleisten

Deklaration

erzwingen

Abbildung 1.18

Symbolleisten »Voreinstellung« und »Bearbeiten«

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 erforderlich.

28

Entwicklungsumgebung »Visual Basic Editor«

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 Variab- len deklariert werden müssen.

steht und alle Variab- len deklariert werden müssen. Abbildung 1.19 Einstellung »Variablendeklaration

Abbildung 1.19

Einstellung »Variablendeklaration erforderlich«

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. Variablen dienen zur Speicherung von Zahlen, Daten und Texten, die im späteren Verlauf eines Programms noch benötigt werden. Dazu mehr in Kapitel 3, »Grundlagen der Programmierung mit VBA«.

1.3

Option Explicit

Verbesserung des

Programms

1.3.2 Projekt-Explorer und Eigenschaften-Fenster

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

sich der Projekt- Explorer und das Eigenschaften-Fenster. Abbildung 1.20 Projekt-Explorer und Eigenschaften-Fenster 29

Abbildung 1.20

Projekt-Explorer und Eigenschaften-Fenster

29

1

Einführung

Projekt-Explorer

Im Projekt-Explorer werden die Elemente der aktuell geöffneten Dateien angezeigt, in denen man mit VBA programmieren kann. Dies sind:

Modul

Eigene Code-Module, wie z. B. das Modul1, das durch die Aufzeich- nung eines Makros automatisch erzeugt wurde. Ein eigenes, leeres Modul kann auch über das Menü Einfügen Modul erzeugt werden.

Klassenmodul

Vorhandene Klassenmodule, wie DieseArbeitsmappe und Tabelle1 bis Tabelle3, also die gesamte Arbeitsmappe und die aktuell vorhandenen Tabellen. Hier kann VBA-Code notiert werden, der bei Eintritt bestimmter Ereignisse, wie zum Beispiel Öffnen einer Arbeitsmappe, automatisch 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 Programmsteu- erung, die sich über das Menü Einfügen UserForm erzeugen lassen.

Für uns sind zunächst nur die eigenen Code-Module wichtig. Die VBA- Beispiele in diesem Buch werden in Code-Modulen gespeichert, falls kein anderslautender Hinweis erfolgt. Falls Code in UserForms oder eige- nen 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

Im Eigenschaften-Fenster werden die Eigenschaften des aktuell ausge- wählten Moduls bzw. die Eigenschaften des ausgewählten Steuerele- ments eines eigenen Dialogfelds aufgelistet. Die Werte dieser Eigenschaf- ten können verändert werden. Ein Modul wird durch einen einfachen Klick im Projekt-Explorer ausgewählt. Zunächst ist das Eigenschaften - Fenster für uns nicht wichtig.

und Werte

 

1.3.3

Codefenster

Code ausführen

Auf der rechten Seite des VBE befindet sich das bereits bekannte Code- fenster mit dem VBA-Code. Sie können eines der Makros von hier aus direkt ausführen. Setzen Sie dazu den Cursor in die betreffende Proze- dur. Anschließend können Sie entweder

30

Makrocode verstehen und ändern

1.4

im Menü Ausführen den Menüpunkt Sub/UserForm ausführen auf- rufen oder

die Taste (F5) betätigen oder

Taste F5

in der Symbolleiste Voreinstellung das Symbol mit dem grünen Pfeil, der nach rechts weist, betätigen.

mit dem grünen Pfeil, der nach rechts weist, betätigen. Abbildung 1.21 Symbol »Sub/UserForm ausführen« (Taste F5)

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 her wechseln.

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.4 Makrocode verstehen und ändern

Im nächsten Schritt sollen die eigenen Makros verändert werden. Dazu müssen wir ihren Code etwas näher betrachten, zunächst am Beispiel von Makro1:

Sub Makro1()

Range("A1").Select

Selection.Cut

Range("C1").Select

ActiveSheet.Paste End Sub

 

1

Einführung

 

Zur Erläuterung:

Sub

End Sub

Der Code der Makros ist jeweils innerhalb einer Sub-Prozedur zwi- schen 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 Falle 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. selection) wird etwas durchgeführt. In diesem Falle wird die Auswahl ausgeschnitten (engl. cut).

Es wurde also der Inhalt der Zelle A1 ausgeschnitten. Dieser Inhalt befindet sich nun in der Zwischenablage.

Im anderen Makro (KopieE3E5) 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 durch- geführt. In diesem Falle wird der Inhalt der Zwischenablage einge- fügt (engl. paste). Dies wird an der vorher ausgewählten Stelle (Zelle C1) vorgenommen.

Active

Hinweis

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 ver- schoben.

Übung 1 G

Verändern Sie das Makro KopieE3E5 aus Übung 1 A (siehe Abschnitt 1.2.1). 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.

32

Makro per Schaltfläche ausführen

1.5

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 wei- teren Zellen des kopierten Bereichs werden, wie aus Excel gewohnt, in die Nachbarzellen eingefügt.

Aus der Zwischenablage können beliebig viele Kopien eingefügt werden.

Hinweis

In den genannten Beispielen werden Quellbereiche selektiert und Zielberei- che aktiviert. Dadurch bekommt man als VBA-Neuling einen leicht verständ- lichen Einstieg, weil der Code die gleichen Schritte ausführt wie der 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 Verlauf dieses Buchs werden Sie lernen, wie man besseren Code erstellt.

Aktivieren und

selektieren

1.5 Makro per Schaltfläche ausführen

Sie können als Entwickler dem Benutzer das Starten eines Makros Button einfügen erleichtern, indem Sie ihm eine Schaltfläche (engl. button) zur Verfügung stellen. So können Sie ein übersichtlich zu bedienendes Tabellenblatt mit Daten, Formeln und Programmen zur Verfügung stellen.

Zur Erzeugung eines Buttons gehen Sie wie folgt vor:

1. Auf der Registerkarte Entwicklertools betätigen Sie den Button Ein- fügen.

2. Es erscheint eine Sammlung von Steuerelementen; darin wählen Sie das Symbol links oben: Schaltfläche ( Formular-Steuerelement ).

3. Platzieren Sie den Mauscursor an der gewünschten Stelle auf dem Tabellenblatt. 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ünschten Größe auf.

4. Es erscheint das Dialogfeld Makro zuweisen . Suchen Sie das gewünschte Makro heraus, und bestätigen Sie mit OK.

33

Makro und Button verbinden

1

Einführung

1 Einführung Abbildung 1.22 Makro einem Button zuordnen Anschließend erscheint der Button im Bearbeitungsmodus. Klicken

Abbildung 1.22

Makro einem Button zuordnen

Anschließend erscheint der Button im Bearbeitungsmodus. Klicken Sie einmal neben den Button; anschließend können Sie durch Klick auf den Button das Makro ausführen.

Button bearbeiten

auf den Button das Makro ausführen. Button bearbeiten Abbildung 1.23 Neu eingefügter Button Hinweis Sie

Abbildung 1.23

Neu eingefügter Button

Hinweis

Sie können einen Button nachträglich bearbeiten. Dazu klicken Sie mit der rechten Maustaste auf den Button, dann sind Sie wieder im Bearbeitungs- modus. Sie können nun Größe und Ort verändern. Über das Kontextmenü (wiederum Rechtsklick) können Sie ein anderes Makro zuweisen oder den Text auf dem Button verändern.

1.6 Relative Aufzeichnung

Beim Aufzeichnen der Makros ist Ihnen sicherlich schon der Begriff Relative Aufzeichnung aufgefallen. Dabei handelt es sich um einen Schalter, den Sie an zwei Stellen betätigen können:

in dem Menü, das über den Button Makros auf der Registerkarte Ansicht erreicht werden kann

auf der Registerkarte Entwicklertools

Schalter Falls dieser Schalter eingeschaltet wird, dann werden nachfolgende Makros relativ aufgezeichnet. Bei den bisher erstellten Makros war die- ser Schalter nicht eingeschaltet, diese Makros wurden daher absolut auf- gezeichnet.

34

Relative Aufzeichnung

Absolute Aufzeichnung bedeutet, dass im Makrocode absolute Zellan- gaben stehen (Beispiel: A1, C1). Bei der Ausführung eines solchen Makros ist es egal, welche Zelle in Excel aktiv ist, es wird immer mit den Zellen A1 und C1 gearbeitet.

Relative Aufzeichnung bedeutet, dass im Makrocode relative Zellan- gaben stehen. Bei der Ausführung eines solchen Makros werden die Aktionen relativ zu der Zelle ausgeführt, die in Excel aktiv ist.

1.6

Absolut

aufzeichnen

Relativ

aufzeichnen

Zur Verdeutlichung soll ein Makro aufgezeichnet werden, in dem das Gleiche gemacht wird wie im ersten Beispielmakro: Der Inhalt der Zelle A1 wird nach C1 verschoben. Allerdings wird das Makro relativ aufge- zeichnet. Führen Sie folgende Schritte durch:

1. Aktivieren Sie in Excel die relative Aufzeichnung.

2. Tragen Sie in der 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 der Zelle C1 ein.

7. Der Inhalt der Zelle A1 wurde nach C1 verschoben.

8. Beenden Sie die Makroaufzeichnung.

Soweit ist noch kein sichtbarer Unterschied aufgetreten. Falls Sie nun allerdings das Makro ausführen, so wird jeweils der Inhalt der aktuell ausgewählten Zelle um zwei Zellen nach rechts verschoben (z. B. von D10 nach F10) und nicht immer der Inhalt der Zelle A1 nach C1.

Relative

Verschiebung

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

Selection.Cut: Es geschieht das Gleiche wie bei der absoluten Auf- zeichnung, also der Inhalt der aktiven Zelle wird ausgeschnitten. Er liegt nun in der Zwischenablage.

Cut

ActiveCell.Offset(0, 2).Range("A1").Select:

Ausgehend von der aktiven 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) ausge- wählt. Falls die aktive Zelle D10 ist, dann wird demnach die Zelle F10 ausgewählt.

35

Offset

1

Einführung

Zu diesem Versatz wird der Bereich A1 ausgewählt. Dies ist nicht die absolute Zelle A1 des Tabellenblatts, sondern die oberste linke Zelle des Versatzes.

Diese Zelle (gleiche Zeile, zwei Zellen nach rechts) wird ausge- wählt.

Paste

ActiveSheet.Paste: Es geschieht das Gleiche wie bei der absoluten Aufzeichnung, also der Inhalt der Zwischenablage wird eingefügt.

Dieses Makro zeigt ein ganz anderes Verhalten als das Makro, das absolut aufgezeichnet wurde. Beide Makroaufzeichnungsarten 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 Aufzeichnung ü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 Seite 33), allerdings mit relativer Aufzeichnung. Nennen Sie das Makro RelKopie. Testen Sie es, und interpretieren Sie den VBA-Code.

Makros überall

benutzen

1.7 Persönliche Makroarbeitsmappe

Die bisher aufgezeichneten Makros wurden in der aktuell aktiven Arbeitsmappe gespeichert. Daher stehen sie nur dort zur Verfügung. Falls Sie bestimmte Makros für den universellen Einsatz immer zur Ver- fügung haben möchten, so sollten Sie sie in der Persönlichen Makro- arbeitsmappe 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 Persönlichen Makroarbeitsmappe muss beim Aufzeichnen eines Makros im Dialogfeld Makro aufzeich- nen der entsprechende Eintrag in der Liste Makro speichern in ausge- wählt werden.

36

Persönliche Makroarbeitsmappe

Persönliche Makroarbeitsmappe Abbildung 1.24 Speichern in Persönlicher Makroarbeitsmappe Nach der Aufzeichnung erscheint

Abbildung 1.24

Speichern in Persönlicher Makroarbeitsmappe

Nach der Aufzeichnung erscheint ein weiterer Eintrag im Projekt-Explorer des VBE, die Datei personal.xlsb. Ihr Standardspeicherort unter Windows 7 und Vista ist das Verzeichnis C:\Benutzer\[ Benutzername ]\AppData\ Roaming\Microsoft\Excel\XLStart und unter XP C:\Dokumente und Ein- stellungen\[ Benutzername ]\Anwendungsdaten\Microsoft\Excel\XLStart.

[ Benutzername ] \Anwendungsdaten\Microsoft\Excel\XLStart . Abbildung 1.25 Persönliche Makroarbeitsmappe im

Abbildung 1.25

Persönliche Makroarbeitsmappe im Projekt-Explorer

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 stehen die Makros in dieser Datei zur Verfügung.

1.7

Datei

personal.xlsb

Makros immer

verfügbar

Übung 1 I

Erstellen Sie das gleiche Makro wie in der letzten Übung, 1 H, speichern Sie es aber diesmal in der Persönlichen Makroarbeitsmappe. Schließen Sie Excel. Testen Sie das Makro nach dem erneuten Öffnen von Excel in einer beliebi- gen Arbeitsmappe.

37

1

Einführung

1.8 Code schreiben, einfache Ausgabe

Selbst

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

programmieren

aufzeichnung, sondern durch Schreiben des Codes in einer eigenen Sub- Prozedur erstellt. Es entsteht also das erste richtige VBA-Programm. Außerdem werden drei Möglichkeiten zur Ausgabe von Ergebnissen oder Kontrollwerten genannt, die häufig in der VBA-Programmierung benutzt werden:

Ausgabe in einer Zelle

Ausgabe in einer Nachrichtenbox

Ausgabe im Direktfenster des VBE

 

1.8.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

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

durch Editor

Editor Sie bei der VBA-Programmierung unterstützt:

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.

wird eine Trennzeile zwisch en den einzelnen Makros erzeugt. Abbildung 1.26 Neue eigene Sub-Prozedur Der Editor

Abbildung 1.26

Neue eigene Sub-Prozedur

Der Editor bietet dem Programmierer noch umfangreiche weitere Unter- stützung, aber dazu später.

Prozedurname ( Hinter dem Namen einer Sub-Prozedur (oder kurz: Prozedur) stehen immer Klammern, wie auch bei Ihren bisherigen Makros. Diese Klam- mern sind zunächst leer. Später werden wir sehen, dass man innerhalb

)

38

Code schreiben, einfache Ausgabe

1.8

der Klammern Aufrufparameter notieren kann, die eine Prozedur flexib- ler machen können.

1.8.2 Ausgabe in Zelle

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

Bei Ausführung dieser Prozedur, zum Beispiel mit Hilfe der Taste (F5), wird der Text Hallo in der Zelle A1 ausgegeben.

(F5) , wird der Text Hallo in der Zelle A1 ausgegeben. Abbildung 1.27 Ergebnis der eigenen

Abbildung 1.27

Ergebnis der eigenen Sub-Prozedur

Sie haben bereits gesehen, dass Sie einen Bereich, der eine oder mehrere Zellen umfasst, über Range ansprechen können. Wir hatten bereits die Methode Select aufgerufen, um diesen Bereich auszuwählen. Diesmal wird die Eigenschaft Value mit einem Eigenschaftswert versehen, dem Text Hallo. Über Value bekommt die Zelle einen Wert.

Eigenschaft

»Value«

Hinweis

Eine Prozedur sollte einen möglichst sprechenden Namen haben, der etwas über ihre Arbeitsweise aussagt. Außerdem muss der Name innerhalb der Anwendung eindeutig sein. Es darf also kein Prozedurname doppelt vor- kommen.

39

1

Einführung

1.8.3 Ausgabe in Nachrichtenbox

Schreiben Sie eine weitere Prozedur mit folgendem Code:

Sub AusgabeBox() MsgBox "Hallo" End Sub

Nach dem Aufruf erscheint eine kleine Nachrichtenbox mit dem Text

Hallo.

erscheint eine kleine Nachrichtenbox mit dem Text Hallo . Abbildung 1.28 Ausgabe in Nachrichtenbox M s

Abbildung 1.28

Ausgabe in Nachrichtenbox

MsgBox

Eine 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.2, »Einfacher Dialog mit dem Benutzer«, sehen werden.

vbCrLf

Bei 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

Die Ausgabe lautet:

"Hallo" & vbCrLf & "Welt" End Sub Die Ausgabe lautet: Abbildung 1.29 Ausgabe mit Zeilenumbruch 40

Abbildung 1.29

Ausgabe mit Zeilenumbruch

Arbeiten mit Excel vor der Version 2007

1.9

Den Namen dieser Konstanten kann man sich leicht merken, denn es handelt sich dabei um ein Relikt aus der Urzeit: In vbCrLf steht das Cr für Carriage Return, den Wagenrücklauf der Schreibmaschine zum Zeilenan- fang. Das Lf steht für Line Feed, den Zeilenvorschub.

Hinweis

Der Operator & dient zur Verkettung von Zeichenfolgen. Er wird häufig benötigt, um Ergebnisse anschaulich zusammen mit Text darzustellen.

Operator &

1.8.4 Ausgabe im Direktfenster des VBE

Schreiben Sie eine weitere Prozedur mit folgendem Code:

Sub AusgabeKontrolle() Debug.Print "Hallo" End Sub

Nach dem Aufruf erscheint zunächst gar nichts, da das Direktfenster des VBE nicht eingeblendet ist. Zeigen Sie es im VBE an über das Menü Ansicht Direktfenster. Anschließend sehen Sie die soeben erzeugte Ausgabe (siehe Abbildung 1.30).

Sie die soeben erzeugte Ausgabe (siehe Abbildung 1.30). Abbildung 1.30 Ausgabe im Direktfenster Debug.Print Das

Abbildung 1.30

Ausgabe im Direktfenster

Debug.Print

Das Direktfenster (= Direktbereich) können Sie ebenfalls zur Kontroll- ausgabe während der Programmierung nutzen.

1.9 Arbeiten mit Excel vor der Version 2007

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 weitaus meisten Beispiele in diesem Buch laufen auch unter Versio- nen vor Excel 2007. Auf dem Datenträger, der diesem Buch beiliegt, ste-

41

1

Einführung

hen die Dateien zusätzlich im xls-Format für Versionen vor Excel 2007 zur Verfügung.

Als Beispiel für die Arbeit mit den Versionen vor Excel 2007 (genauer:

Excel 97 bis Excel 2003) soll in diesem Abschnitt Excel 2002 dienen. Es werden nur die Unterschiede zu Excel 2010 erläutert, in Anlehnung an die Reihenfolge der bisherigen Abschnitte.

1.9.1 Makro aufzeichnen

Zum Starten einer Aufzeichnung wählen Sie im Menü Extras das Unter- menü Makro , darin den Menüpunkt Aufzeichnen . Zum Beenden der Aufzeichnung wählen Sie im Menü Extras das Untermenü Makro , darin den Menüpunkt Aufzeichnung beenden .

Nach dem Start einer Aufzeichnung erscheint die kleine Symbolleiste Aufzeichnung beenden. Sollte sie nicht von selber erscheinen, so kann sie auf die übliche Art eingeblendet werden: rechte Maustaste im Bereich der Symbolleisten, Häkchen vor der betreffenden Symbolleiste setzen.

Sie beinhaltet zwei Symbole:

Mit Betätigung des linken Symbols können Sie die Aufzeichnung ebenfalls beenden.

Mit Betätigung des rechten Symbols können Sie auf relative Aufzeich- nung umschalten. Diese Einstellung gilt auch für nachfolgende Makro-Aufzeichnungen.

1.9.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 den Button Aus- führen .

1.9.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 den Button Bearbeiten .

Arbeiten mit Excel vor der Version 2007

1.9

Es erscheint der Visual Basic Editor. Sie können ihn über den Menüpunkt Schließen und zurück zu Microsoft Excel im Menü Datei wieder schließen.

1.9.4 Makro speichern

Wie bereits erwähnt, werden Excel-Dateien in diesen Versionen einheit- lich gespeichert, unabhängig davon, ob sie Makros enthalten oder nicht.

Zum Speichern der Datei wählen Sie im Menü Datei den Menüpunkt Speichern . Es erscheint das Dialogfeld Speichern unter. Als Dateityp ist Excel-Arbeitsmappe mit der Dateiendung .xls angegeben.

Sie wählen den gewünschten Dateinamen und das gewünschte Verzeich- nis aus und klicken auf den Button Speichern.

Falls Sie an einem externen PC Excel 2010 zur Verfügung haben und eine dort erstellte Excel-Datei auf Ihrem PC unter einer Version vor 2007 haben wollen, dann rufen sie auf dem externen PC das Dialogfeld Spei- chern unter auf und wählen den Dateityp Excel-97 - 2003 -Arbeitsmappe mit der Dateiendung .xls.

Falls sich in der Datei VBA-Code befindet, der nicht unter älteren Excel- Versionen ausgeführt werden kann, so erscheint das Dialogfeld Kompa- tibilitätsprüfung . Darin wird das Problem genauer erläutert.

Dateityp ändern

Kompatibilitäts-

prüfung

1.9.5 Makrosicherheit

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.

43

1

Einführung

1.9.6 Symbolleiste »Visual Basic«

Nach Einblenden der Symbolleiste Visual Basic haben Sie schnelleren Zugriff auf die wichtigsten Befehle im Zusammenhang mit Makros und der Entwicklung mit Visual Basic.

1.9.7 Entwicklungsumgebung Visual Basic Editor

Zum Aufruf des VBE wählen Sie im Menü Extras das Untermenü Makro, darin den Menüpunkt Visual Basic-Editor oder die Tastenkom- bination (Alt) + (F11).

Das Symbol zum Starten eines Makros aus dem Codefenster heraus ist ein grüner Pfeil. Alternativ kann das Menü Ausführen (Menüpunkt Sub/ UserForm ausführen) oder die Funktionstaste (F5) genutzt werden.

1.9.8 Persönliche Makroarbeitsmappe

Die persönliche Makroarbeitsmappe heißt personl.xls und ihr Standard- speicherort unter Windows 7 und Vista ist das Verzeichnis C:\Benutzer\ [Benutzername]\AppData\Roaming\Microsoft\Excel\XLStart und unter XP C:\Dokumente und Einstellungen\[Benutzername]\Anwendungsdaten\ Microsoft\Excel\XLStart.

In diesem Kapitel lernen Sie den Umgang mit den Objekten »Arbeitsmappe«, »Tabellenblatt« und »Zellbereich« mit ihren jeweiligen Eigenschaften, Methoden und Ereignissen kennen.

2 Grundlagen von Objekten und Ereignissen

VBA ist eine objektorientierte Sprache, das heißt, es wird mit Objekten gearbeitet. Objekte verfügen über Eigenschaften, Methoden und Ereig- nisse.

Objekte

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 Tabellenblatts (z. B. Tabelle1).

Eigenschaft

Methoden bestimmen die Fähigkeiten eines Objekts. Ein Tabellen- blatt verfügt z. B. über die Methode Copy(), das heißt, es kann kopiert werden.

Methode

Ereignisse bestimmen, was mit dem Objekt passiert. Bei einem Tabel- lenblatt kann z. B. das Ereignis Aktivierung stattfinden. Ereignisse kön- nen mit VBA-Code verbunden werden, so dass automatisch weitere Aktionen folgen können.

Ereignis

In diesem Kapitel werden Ihnen zahlreiche Möglichkeiten von VBA vor- gestellt, 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 automati- sierte Bearbeitung von Excel erheblich verbessern.

2.1

Objekthierarchie und Auflistungen

Wie bereits erwähnt, verfügen Objekte über Eigenschaften. Eine Eigen- schaft eines Objekts kann wiederum ein Unterobjekt sein, mit eigenen Eigenschaften, Methoden und Ereignissen. Setzt man diese Überlegung

Hierarchie

45

2

Grundlagen von Objekten und Ereignissen

weiter fort, so erhält man eine Hierarchie von Objekten, ausgehend von einem Hauptobjekt.

Application

Das Hauptobjekt bei Office-Anwendungen ist Application (engl. für Anwendung). 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 Worksheets. Darin befinden sich alle Tabellenblätter einer Arbeits- mappe.

Range

Eine Eigenschaft eines einzelnen Tabellenblatts ist das Objekt Range. Darin befinden sich Zellen und Zellbereiche eines Tabellenblatts.

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

Workbooks

Das Objekt Workbooks ist eine Auflistung. In dieser Auflistung befinden sich alle geöffneten Arbeitsmappen, also alle offenen Excel-Dateien.

Workbook Das Objekt Workbook (ohne ein s am Ende) steht für eine einzelne Arbeitsmappe. Zur Bearbeitung einer bestimmten Arbeitsmappe gibt es verschiedene Möglichkeiten:

ThisWorkbook

Workbooks

("Name")

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.

Workbooks(Index): Index ist die laufende