Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Basiswissen für die Arbeit mit Excel 2007
3 Aufbau von Kalkulationstabellen
4 Entwicklung von Berechnungen mit Formeln
5 Gestaltung von Tabellenblättern
6 Auswertungen und Was-wäre-wenn-Analysen
7 Optimierungen
8 Grafische Präsentation von Daten
9 Diagramme optimal einsetzen
10 Tabellen grafisch aufbereiten
11 Verteilungsvorbereitung
12 Ausdruck und E-Mail-Versand
13 Excel-Daten im Web
14 Gemeinsame Arbeit an Arbeitsmappen
15 Tabellenfunktionen
16 Informationen als Tabellen ordnen und verwalten
17 Datenabfragen und Datenauszüge
18 Pivot–Tabellen und -Diagramme
19 Arbeit mit externen Daten
20 Datenaustausch zwischen Anwendungen
21 Datenaustausch mit anderen Anwendungen
22 Routineaufgaben mit Makros automatisieren
23 Visual Basic für Applikationen
A Tastenkombinationen
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Excel 2007 - Das umfassende Handbuch von Helmut Vonhoegen
Buch: Excel 2007 - Das umfassende Handbuch

Excel 2007 - Das umfassende Handbuch

1012 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-864-4
gp 23 Visual Basic für Applikationen
  gp 23.1 Grundlagen von VBA
    gp 23.1.1 Das Objektmodell von Excel
    gp 23.1.2 Variablen und Konstanten in VBA
    gp 23.1.3 Grundeinheiten und Sprachelemente
  gp 23.2 Die Entwicklungsumgebung
    gp 23.2.1 Projekt-Explorer und Modulfenster
    gp 23.2.2 Editierhilfen
    gp 23.2.3 Programme testen
    gp 23.2.4 Ausdruck von Code und Formularen
  gp 23.3 Ein- und Ausgabe
    gp 23.3.1 Einfacher Eingabedialog
    gp 23.3.2 Meldungsdialoge
    gp 23.3.3 Bereiche in Tabellen auswählen
    gp 23.3.4 Schreiben in Tabellen
    gp 23.3.5 Daten aus Tabellen auslesen
  gp 23.4 Entwurf von Formularen
    gp 23.4.1 Entwicklung eines Eingabeformulars
    gp 23.4.2 Eingabeelemente einbauen
    gp 23.4.3 Einbau von Schaltflächen
    gp 23.4.4 Eingabe der Prozeduren
    gp 23.4.5 Erweiterbare Werkzeugsammlung
  gp 23.5 Eigene Funktionen in VBA
    gp 23.5.1 Per Funktion von DM zu Euro und zurück
    gp 23.5.2 Sicherheit für Makros
  gp 23.6 Musterprozeduren für Standardaufgaben
    gp 23.6.1 Prozedur zum Neuformatieren
    gp 23.6.2 Beispiele für Plausibilitätsprüfungen
    gp 23.6.3 Daten aus einem Formular in eine neue Zeile einer Tabelle übernehmen
    gp 23.6.4 Lesen von Daten aus einer Textdatei
    gp 23.6.5 Einen Bereich neu definieren
    gp 23.6.6 Einen Wert in einer Spalte finden und ersetzen
    gp 23.6.7 In einer Liste von Arbeitsmappen Werte einfügen

23 Visual Basic für Applikationen

Die Aufzeichnung von Makros liefert lediglich die Möglichkeiten, Arbeitsfolgen, die in Excel immer wieder manuell durchgeführt werden, auf einen Tastendruck oder Mausklick zusammenschrumpfen zu lassen. Damit sind aber die Optionen, die Excel in dieser Hinsicht bietet, noch keineswegs erschöpft.

Mit Visual Basic für Applikationen können Sie komplette Anwendungen programmieren. So lassen sich Funktionen verwirklichen, die Excel selbst nicht anbietet. VBA-Programme können sogar über die Grenze von Excel hinaus andere Anwendungen in ein Programm einbeziehen.


Rheinwerk Computing

23.1 Grundlagen von VBA  downtop

Visual Basic für Applikationen ist – wie schon angedeutet – eine spezielle Version von Visual Basic, der an Basic orientierten Programmiersprache, die Microsoft für die Windows-Umgebung entwickelt hat. Die Entwicklungsumgebung von VBA enthält insbesondere leistungsfähige Werkzeuge für die Entwicklung von Formularen.

Dass in diesem Buch nicht mehr als eine Einführung in die Möglichkeiten dieser mächtigen Sprache gegeben werden kann, versteht sich von selbst. Diese Einführung beschränkt sich darauf, einen kurzen Überblick über die Sprache zu geben, die integrierte Programmierumgebung vorzustellen und einige Beispiele der Verwendung von VBA innerhalb von Excel vorzuführen.


Rheinwerk Computing

23.1.1 Das Objektmodell von Excel  downtop

Visual Basic und Visual Basic für Applikationen teilen mit anderen objektorientierten Programmiersprachen die Idee, dass Anwendungen mit Objekten zu tun haben und auch selbst aus Elementen bestehen, die als Objekte ansprechbar sind. Für jedes dieser Objekte gibt es einen bestimmten Satz von Eigenschaften und eine Reihe von Verfahren, mit dem Objekt umzugehen, die Methoden genannt werden. Ein solches Objekt ist beispielsweise ein Zellbereich, eine Pivot-Tabelle oder ein Diagramm. Ein Zellbereich hat z. B. die Eigenschaft, fett formatiert zu sein. Eigenschaften können abgefragt oder verändert werden. Wenn Sie einen Bereich kopieren, wird die Methode Copy auf den Bereich angewendet.

Welche Objekte eine Anwendung bereitstellt und wie diese miteinander zusammenhängen, wird durch das Objektmodell – eine vorgegebene Hierarchie von Objekten – festgelegt, in dem die Application das oberste Objekt darstellt. Die Zuordnung der Objekte kann über den Objektkatalog eingesehen werden.

Der Objektkatalog für Excel 2007

Um einen sicheren Umgang mit den Objekten von Excel oder auch mit den Objekten einer anderen Office-Anwendung, auf die von Excel aus zugegriffen wird, zu erreichen, ist es von grundlegender Bedeutung, das Objektmodell zu verstehen und zu überblicken, das den einzelnen Anwendungen zugrunde liegt.

Die Objektmodelle haben eine gewisse Ähnlichkeit mit den bekannten russischen Puppen. Das oberste Objekt ist die Anwendung selbst. Die anderen Objekte sind in diesem Gesamtobjekt eingeschlossen. Die nächsttiefere Ebene bei Excel etwa sind die Arbeitsmappen. Innerhalb der Arbeitsmappen werden verschiedene Auflistungen – collections – von gleichrangigen Objekten unterschieden: Arbeitsblätter, Diagramme, Module. Die einzelnen Elemente einer solchen Auflistung können über Indizes oder über zugeordnete Namen angesprochen werden.

Worksheets(3) 
Worksheets("Prognose")

sind Beispiele, wie ein Element einer Sammlung von Objekten angesprochen werden kann.

Etwas verwirrend ist allerdings, dass in VBA manchmal für ein Objekt und für eine Eigenschaft dieselbe Bezeichnung verwendet wird. Legend ist z. B. eine Eigenschaft, die ein Chart-Objekt hat. Diese Eigenschaft liefert aber als Ergebnis wieder ein Objekt, nämlich das Legend-Objekt, das ein Unterobjekt eines Chart-Objekts ist. In einer Programmzeile wird deshalb oft anstelle eines Objekts die Eigenschaft angegeben, die ein Objekt liefert.

Drei Fragen stellen sich beim Umgang mit Objekten immer wieder:

  • Wie wird ein Objekt oder Unterobjekt korrekt angesprochen?
  • Welche Eigenschaften hat ein Objekt?
  • Welche Methoden können unter welchen Voraussetzungen benutzt werden?

Wenn z. B. in einer Excel-Prozedur das Innere eines Zellbereichs mit einer anderen Farbe belegt werden soll, kann das mit folgender Codezeile erreicht werden:

Worksheets("Tabelle1").Range("A8").Interior.Colorindex = 3

In die Umgangssprache übersetzt, lautet diese Anweisung: Ordne der Eigenschaft Colorindex den Wert 3 zu, und zwar für das Objekt Interior, Hintergrund, das enthalten ist in dem Objekt Range A1, also dem Bereich A1, das wiederum enthalten ist in dem Objekt mit dem Namen »Tabelle1« aus der Objektauflistung Worksheets, Arbeitsblätter.

Die Programmentwicklungsumgebung stellt Ihnen handliche Hilfsmittel zur Verfügung, mit den Objekten zurechtzukommen, insbesondere den angesprochenen Objektkatalog und verschiedene Editierhilfen direkt bei der Programmeingabe.

Als Objekte behandelt werden auch die zahlreichen Steuerelemente – die Controls –, die einfach mit der Maus in ein Formular hineingezogen werden können. Wenn z. B. in einer Anwendung ein Listenfeld benötigt wird, um einen bestimmten Wert – etwa einen Ländernamen – auszuwählen, kann das komplette Listenfeld in das entsprechende Formular übernommen werden. Geklärt werden muss nur noch, wie das Listenfeld mit den Ländernamen verknüpft werden kann und wo diese erscheinen sollen.


Rheinwerk Computing

Ereignisse steuern den Programmablauf  downtop

Die zweite charakteristische Eigenschaft von VBA-Programmen ist, dass der Ablauf einer Anwendung in der Regel keinem fest vorgegebenen Plan folgt, sondern von Ereignissen (Events) gesteuert wird. Wenn Sie diese oder jene Schaltfläche anklicken, passiert etwas; wenn ein Arbeitsblatt aktiviert wird, werden automatisch bestimmte Berechnungen ausgeführt. Eine Datei kann z. B. geöffnet, gespeichert oder geschlossen werden. Ein Arbeitsblatt kann aktiviert, geändert, neu berechnet, ein Fenster kann aktiviert, deaktiviert oder in der Größe geändert werden.

Die Programmierung mit VBA besteht deshalb in den meisten Fällen hauptsächlich aus folgenden Schritten:

  • Entwurf von Formularen, die der Anwender für die Interaktion mit der Anwendung benutzen kann
  • Wahl der Eigenschaften der darin verwendeten Steuerelemente
  • Programmierung der Schritte, die das Programm ausführen soll, wenn bestimmte Ereignisse mit diesen Steuerelementen oder anderen Objekten stattfinden

Rheinwerk Computing

23.1.2 Variablen und Konstanten in VBA  downtop

Variablen werden in VBA wie in jeder anderen Programmiersprache benutzt, um bestimmte Werte, die während des Programmablaufs entstehen, festzuhalten, sodass sie bei Bedarf an einer anderen Stelle weiterverwendet werden können. Um die verschiedenen Werte unterscheiden zu können, werden Namen für die Variablen vergeben. Zusätzlich wird festgelegt, welche Art von Informationen mit Hilfe einer bestimmten Variablen gespeichert werden soll, etwa Zahlenwerte, Texte etc. Diese Festlegung erfolgt mit Hilfe des Datentyps, der zudem auch Bedeutung für die maximale Größe oder Länge der von der Variablen festgehaltenen Information hat.

Variablen können entweder implizit oder explizit deklariert werden. Im ersten Fall wird der Datentyp Variant benutzt. Dieser Datentyp ist besonders flexibel, weil er Daten jeder Art akzeptiert. Allerdings muss darauf geachtet werden, welche Daten einer Variablen dieses Typs tatsächlich zugeordnet werden, bevor damit weitergearbeitet werden kann.


Rheinwerk Computing

Implizit ...  downtop

Implizit wird eine Variable direkt innerhalb einer Prozedur durch Wertzuweisung definiert. So werden beispielsweise durch die beiden Zeilen

wert1 = 3 
wert2 = "xyz"

zwei Variablen mit den Namen wert1 und wert2 definiert und zugleich mit den Werten 3 bzw. xyz, also einer Zahl und einer Zeichenkette, belegt. Diese einfache Art der Variablendefinition ist sehr bequem. Sie definieren eine Variable genau dann, wenn Sie sie benötigen, können also ziemlich intuitiv arbeiten. Es ist nicht festgelegt, was für ein Datentyp (Zahl, Text etc.) für die Variable gilt, d.  h., die Definition ist sehr flexibel. Ein und dieselbe Variable könnte innerhalb einer Prozedur einmal für eine Zahl und einmal für eine Zeichenkette usw. verwendet werden.

Dieser Bequemlichkeit stehen zwei Nachteile gegenüber. Zum einen hat eine so definierte Variable nur innerhalb der Prozedur Gültigkeit, in der sie definiert ist. Aus anderen Prozeduren können Sie daher die Werte der Variablen nicht abfragen. Zum anderen verlieren Sie bei etwas umfangreicheren Programmen sehr schnell den Überblick, welche Variablen wo verwendet werden. Trotzdem ist diese Methode für die schnelle Entwicklung kleinerer Programme durchaus nützlich.


Rheinwerk Computing

... oder explizit  downtop

Die Variablen werden am Anfang einer Prozedur oder am Anfang eines Moduls – unter Deklarationen – explizit unter Verwendung etwa der Dim-Anweisung definiert. In diesem Fall wird der Datentyp ausdrücklich festgelegt, es sei denn, es wird der Typ Variant verwendet. Diese Form der Variablendefinition ist bei größeren Projekten auf jeden Fall die programmtechnisch sauberste Lösung. Sie gestattet eine übersichtliche Arbeit, bei der Sie auch später noch wissen, was Sie gemacht haben. Als Variablentypen stellt VBA folgende Möglichkeiten zur Verfügung:


Byte

0 – 255
Boolean Wahrheitswerte (WAHR oder FALSCH). Statt der Wahrheitswerte werden auch Zahlen akzeptiert, wobei 0 FALSCH und alle anderen Zahlen WAHR ergeben.
Integer Ganze Zahlen von –32  768 bis 32  767
Long Ganze Zahlen von ca. – 2 Mrd. bis + 2 Mrd
Single Gleitkommazahlen von 1,4 E-45 bis 3,4 E38, positive und negative Werte
Double Gleitkommazahlen von 4,9 E-324 bis 1,79 E308, positive und negative Werte
Decimal 28 Stellen vor und nach dem Komma
Currency Zahlen von –9,22 E15 bis 9,22 E15 auf vier Stellen hinter dem Komma gerundet
String Zeichenfolge (bis ca. 2 Billionen Zeichen)
String * Length Zeichenfolge mit festgelegter Länge; längere Folgen werden auf die vorgegebene Länge gestaucht, und zwar 1 bis 65  400
Date Serielle Zahlen (wie in den Tabellenfunktionen für Datum und Zeit) oder Datums- und Zeitangaben, die zwischen #...# geschrieben werden
Object Verweise auf ein Objekt
Variant Numerische Werte (wie Doppelt) oder Zeichenfolgen
Array, VBA Gruppe indizierter Elemente eines Grunddatentyps (die Anzahl der Elemente ist nicht beschränkt)

Variablen Boolean (Logisch) und Currency

Variablen String und Date

In den abgebildeten Beispielen wird immer so verfahren, dass zunächst eine Variable mit der Dim-Anweisung definiert wird. In der nächsten Programmzeile wird ihr ein Wert zugeordnet, der anschließend in einem kleinen Meldungsfenster ausgegeben wird. Zusammen mit der Wertausgabe wird der Text »Die Variable hat den Wert« abgebildet, der mit der Variablen durch & verknüpft ist. Diese Verknüpfung deutet auf die Flexibilität der Variablendefinition in VBA hin: Da mit & eigentlich nur Zeichenketten verknüpft werden können, behandelt VBA in diesem Moment offensichtlich alle Variablentypen als Zeichenketten.


Rheinwerk Computing

Arrays mit mehreren Dimensionen  downtop

Die Variablen können auch als Arrays definiert werden, die über die Indizes angesprochen werden. Das gestattet es, mit einer Variablendefinition gleich eine große Anzahl gleichartiger Variablen festzulegen. Dies ist natürlich nur sinnvoll, wenn es sich tatsächlich um Arrays gleichartiger Variablen handelt, vergleichbar etwa einer Matrix in Excel. Die einzelnen Elemente eines Arrays werden über die Indizes angesprochen.

Arrayvariable

Ob die Indizes mit 0 oder 1 beginnen, kann generell mit dem Befehl Option Base festgelegt werden. Vorgabe ist 0. Die Anweisung Option Base 1 muss am Anfang eines Moduls noch vor der Deklaration von Datenfeldern eingetragen werden.


Rheinwerk Computing

Benutzerdefinierte Variablen  downtop

Besonders interessant sind die Möglichkeiten, eigene komplexe Variablentypen zu definieren (üblicherweise wird dieser Variablentyp als »record« bezeichnet). Dies gestattet es, mit einem Variablennamen einen ganzen Datensatz (z. B. für eine Tabelle in Excel) festzulegen.

Benutzerdefinierter Variablentyp

Bei der Definition eigener Datentypen ist darauf zu achten, dass zunächst mit der Anweisung Typ lediglich der Datentyp definiert wird, jedoch noch keine Variable. Erst mit der Dim-Anweisung wird die eigentliche Variable deklariert. Diese Deklaration kann sowohl auf Modul- als auch auf Prozedurebene erfolgen. Wie die Variablen angesprochen werden können, zeigt die letzte Abbildung.

Verwendung benutzerdefinierter Variablentypen


Rheinwerk Computing

Der Geltungsbereich von Variablen  downtop

Alle Variablen haben einen Geltungsbereich, mit dem festgelegt wird, für welche Teile des Programms sie gelten und wann sie wieder aus dem Speicher gelöscht werden.

Eine Anwendung in VBA ist meist ein Bündel von Modulen und Formularen. Die Module wiederum sind gegliedert in einzelne Prozeduren. Eine Variable, die innerhalb einer Prozedur deklariert wird, ist normalerweise nur innerhalb dieser Prozedur verwendbar. Sie können mit Hilfe dieser Variablen also nicht einen Wert an eine andere Prozedur oder ein anderes Modul übergeben. Ausgenommen sind allerdings Variable, die mit dem Schlüsselwort Static deklariert worden sind.

Static Variablenname As Datentyp

bewirkt, dass die Variable über den normalen Geltungsbereich hinaus benutzt werden kann. Wenn eine Variable für alle Prozeduren eines Moduls verwendet werden soll, muss sie innerhalb der Declaration Section des Moduls deklariert werden. Diese Sektion wird automatisch im Modulfenster eines Moduls angeboten.

Soll eine Variable innerhalb der gesamten Anwendung benutzt werden, muss sie als globale Variable erklärt werden. Dies geschieht mit dem Schlüsselwort Public, z. B.:

Public Variablenname As Datentyp

Benutzerdefinierte Variablentypen müssen auf der Modulebene festgelegt werden (also nicht innerhalb von Prozeduren); ihre Gültigkeit kann sich entweder auf das Modul beschränken oder auf alle Module erstrecken.


Rheinwerk Computing

Spezialfall Objektvariable  downtop

Programmcode in VBA hat – wie schon angesprochen – hauptsächlich mit der Manipulation von Objekten zu tun. Um den Bezug auf Objekte herzustellen, können den Objekten Objektvariable zugeordnet werden. Dabei werden, ähnlich wie bei den anderen Variablen, verschiedene Typen unterschieden. Bei den Objektvariablen sind dies die verschiedenen Objektklassen. Bei Excel gibt es z. B. die Klassen Workbook, Worksheet und Range. Ist der Objekttyp nicht vorweg bekannt, kann der generische Objekttyp Object verwendet werden.

Sollen einem Objekt bestimmte Eigenschaften zugeordnet oder sollen die Eigenschaften abgefragt werden, kann dazu anstelle des Objekts auch eine Objektvariable benutzt werden. Ebenso ist es bei der Verwendung von Methoden eines Objekts. Die Zuordnung einer Objektvariablen zu einem Objekt geschieht mit der Set-Anweisung. Hier ein kleines Beispiel:

Dim topbereich As Objekt 
Set topbereich = Worksheets(1).Range("Topliste") 
topbereich.Copy

Zunächst wird die Objektvariable topbereich deklariert. Dann wird der Variablen ein Range-Objekt aus einem Arbeitsblatt zugeordnet. Mit dem letzten Befehl wird auf das von der Objektvariablen topbereich vertretene Range-Objekt die Methode Copy angewendet. Mit Hilfe der Objektvariablen kann der Bezug auf häufig verwendete Objekte vereinfacht werden, sodass Sie weniger Arbeit beim Schreiben des Programmcodes haben.


Rheinwerk Computing

Zur Wahl der Variablennamen  downtop

In der Wahl der Namen für die Variablen besteht in VBA eine große Freiheit. Der Name muss mit einem Buchstaben beginnen und darf keine Punkte enthalten. In Grenzen ist es sogar möglich, Begriffe aus dem Vokabular von VBA zur Benennung von Variablen zu verwenden.

Trotz dieser Freiheiten sollten Sie einige Dinge vermeiden. Die Verwendung von Visual Basic-Vokabeln kann nur Verwirrung stiften. Sie wissen bald nicht mehr, was eine eigene Variable ist. Aus dem gleichen Grund ist es nicht angebracht, die Variablen so zu schreiben, dass sie wie Visual Basic-Vokabeln aussehen: MeinText mag als Name ganz nett aussehen, ist aber von der Typographie her nicht sofort als Variable zu erkennen. Aus den genannten Gründen ist es sinnvoll, alle Variablen einheitlich zu schreiben. Auf jeden Fall ist zu empfehlen, sie mit Kleinbuchstaben beginnen zu lassen (so sind sie immer von Visual Basic-Wörtern zu unterscheiden).

Soll noch der Datentyp kenntlich gemacht werden, bieten sich zwei Wege an: VBA gestattet es, wie andere Basic-Dialekte auch, am Ende des Namens einer Variablen ein Kennzeichen für den Variablentyp anzuhängen. Das Dollarzeichen etwa legt fest, dass es sich um eine Zeichenfolge handelt. Bei der Dim-Anweisung darf dann nicht mehr stehen ... As ..., sondern lediglich der Variablenname.

Eine andere Möglichkeit besteht darin, am Ende des Namens einen Großbuchstaben anzuhängen, der den Datentyp deutlich macht (diese Möglichkeit wird in diesem Buch des Öfteren benutzt). Welche Buchstaben Sie dabei verwenden, bleibt Ihnen überlassen – hier wird meist T (Text) für Zeichenketten, N (numerisch) für die verschiedenen numerischen Typen und L (lo gisch) für logische (Wahrheitswerte) Variablen verwendet. Hier einige Beispiele:

Beispiel für die Namensvergabe von Variablen


Sprechende Namen sind besser

Es ist zwar möglich, sich bei der Namensvergabe für die Variablen kurz zu fassen: vn und nn für Vor- und Nachnamen lassen sich beim Programmieren schneller schreiben als lange Variablennamen. Derartige Kürzel sind aber nach einiger Zeit gänzlich undurchschaubar.


Die Texte hinter einem Apostroph sind immer Kommentare, die vom Programm nicht beachtet werden.


Rheinwerk Computing

Benutzerdefinierte und eingebaute Konstanten  downtop

Werden immer wieder bestimmte Werte in einer Anwendung benötigt, ist es sinnvoll, sie als Konstanten zu deklarieren. Auch hier muss der Geltungsbereich wie bei den Variablen beachtet werden. Sollen Konstanten für die gesamte Anwendung festgelegt werden, muss mit dem Schlüsselwort Public gearbeitet werden. Ein simples Beispiel sind die beiden Mehrwertsteuersätze.

Public Const MWST1 = 19% 
Public Const MWST2 = 7%

erlaubt, in der gesamten Anwendung mit den beiden Werten zu arbeiten. Ändert sich der Mehrwertsteuersatz, muss nur die Wertzuweisung in der betreffenden Konstantendeklaration geändert werden, nicht jede einzelne Berechnung, die mit den Mehrwertsteuersätzen zu tun hat.

Neben solchen vom Benutzer festgelegten Konstanten können zahlreiche eingebaute Konstanten verwendet werden, die den einzelnen Objekten von Office zugeordnet sind, insbesondere um Eigenschaften festzulegen. Welche vorgegeben sind, kann im Objektkatalog geprüft werden. Ansonsten werden sie wie die anderen Konstanten eingesetzt.


Rheinwerk Computing

23.1.3 Grundeinheiten und Sprachelemente  downtop

Größere Anwendungen in VBA bestehen in der Regel aus mehreren Modulen und meist einigen dazugehörigen Formularen. Die Module wiederum setzen sich aus einzelnen Prozeduren zusammen. Die Kunst der Programmierung besteht insbesondere darin, die Aufgaben, die eine Anwendung erledigen soll, so geschickt in kleine Unteraufgaben zu zerlegen, dass bestimmte Prozeduren möglichst mehrfach verwendet werden können und der Programmieraufwand insgesamt verringert wird.


Rheinwerk Computing

Prozeduren und Funktionen  downtop

Die unterste Einheit von Programmen in VBA sind die Prozeduren. Drei Typen werden unterschieden: Sub-Prozeduren, Function-Prozeduren oder Property-Prozeduren.

Sub Prozedurname() 
   .... Anweisungen 
End Sub 
 
Function (Argumente) 
   ... Anweisungen 
End Function 
 
Property Get ... Let ... Set 
   ... Anweisungen 
End Property

Die Property-Prozeduren werden nur verwendet, wenn Sie selbst Eigenschaften im Zuge der Programmierung von Klassen definieren wollen. Get liefert die gesetzte Eigenschaft. Set setzt die Eigenschaft. Let bestimmt, was geschieht, wenn die Eigenschaft gesetzt ist. Klassen sind so etwas wie Schablonen für Objekte, Objekte sind wiederum Instanzen von Klassen. Seit Excel 97 können Anwender eigene Klassen programmieren und mit Objektinstanzen dieser Klassen arbeiten. Doch geht dieses Thema über den Rahmen eines Einstiegs hinaus.

Im Unterschied zu den Sub-Prozeduren liefern die Function-Prozeduren als Ergebnis einen Wert, mit dem im Programmablauf weitergearbeitet werden kann. Innerhalb einer solchen Function-Prozedur sind allerdings nicht alle Anweisungen möglich, die in einer Sub-Prozedur verwendet werden können.

Prozeduren und Funktionen können innerhalb des Programmablaufs von verschiedenen Stellen aus aufgerufen werden. Bei den Sub-Prozeduren reicht dafür der Sub-Prozedurname und die eventuell nötigen Argumente. Befindet sich die Prozedur in einem anderen als dem aktuellen Modul, muss der Modulname noch davor gesetzt werden.

Modulname.Prozedurname Argument1, Argument2, ....

Bei den Funktionen ist das Verfahren etwas anders. Der Wert, den eine verwendete Funktion liefert, wird gleich einer Variablen zugeordnet, damit das Ergebnis der Funktion für den weiteren Programmablauf festgehalten werden kann.

Variablenname = Modulname.Funktionsname(Argument1, Argument2 ...)

Eine Funktion wird meist zusammen mit den Argumenten definiert, die an sie übergeben werden. Es kann auch der Datentyp für den Wert festgelegt werden, den die Funktion zurückgibt. Sollen für die Funktion keine Argumente angegeben werden, müssen trotzdem die Klammern gesetzt werden. Gelten mehrere Argumente, werden sie in der Klammer durch Kommata getrennt.

Eine Funktion und ihr Aufruf

Beachtet werden muss, dass in Funktionen nicht alle Visual Basic-Schlüsselworte auftauchen können. Es ist z. B. nicht möglich, einer Zelle über eine Funktion eine bestimmte Schrift zuzuweisen. Selbst definierte Funktionen können nicht nur innerhalb von Programmen, sondern auch direkt im Tabellenblatt benutzt werden.


Rheinwerk Computing

Programmaufbau  downtop

Auf der Basis des bisher Gesagten können grob drei Bestandteile eines Visual Basic-Programms unterschieden werden:

1 Der allgemeine Teil: Hier stehen allgemeine Einstellungen (wie Option Base), Variablendeklarationen (Dim ...) und Definitionen für eigene Variablentypen (Typ ...).

2 Sub-Prozeduren: Diese bilden den eigentlichen Programmkörper, d.  h. die Anweisungen, die das Programm insgesamt ausführen soll.

3 Funktionen: Funktionen werden definiert, um spezielle Werte zu ermitteln, die im Programm benötigt werden.

Ein Modul in VBA – Programme, die sich über mehrere Module erstrecken, bleiben in dieser Einführung ausgespart – sollte in der Regel so aussehen:

Am Anfang steht der allgemeine Teil. Hier finden sich Überschrift und Beschreibung des Programms und allgemeine Hinweise. Ebenfalls zum allgemeinen Teil gehört die Deklaration derjenigen Variablen, die für das ganze Modul gelten sollen, und die Definition eigener Datentypen.

Dann folgen die Funktionen, auf die von Prozeduren des Moduls zugegriffen werden soll. Diese Funktionen könnten im Prinzip überall stehen, es macht das Modul aber übersichtlicher, wenn sie in einem Block zusammengefasst sind. Kurze Kommentare (beginnend mit Apostroph) erleichtern das Verständnis.

Schließlich folgen die Prozeduren des Moduls, wobei auch hier wieder kurze Kommentare die Übersicht erleichtern.


Rheinwerk Computing

Objekte und ihre Eigenschaften  downtop

Der Umgang mit Objekten spielt in der Programmierarbeit mit VBA die zentrale Rolle. Das Programm schreibt allgemein gesprochen vor, was mit welchen Objekten unter welchen Bedingungen im Lauf der Zeit geschehen soll. Ein Programm soll etwa ein bestimmtes Tabellenblatt aus einer Blattliste (Objekt) auswählen (Methode), die Zellinhalte (Eigenschaften) dort verändern, ein Dialogfeld (Objekt) aktivieren, die Eingaben (Eigenschaften) in bestimmte Elemente des Dialogfeldes lesen und verarbeiten.

Wenn in einer Programmzeile die Eigenschaften eines Objekts ermittelt werden sollen, wird das Ergebnis meist an eine Variable übergeben, sodass damit weitergearbeitet werden kann. Wenn Sie z. B. wissen wollen, welchen Wert eine Zelle im Arbeitsblatt einer Arbeitsmappe hat, können Sie schreiben:

wert1 = Range("F7").Value

Der in einer Zelle eingetragene Wert wird von Excel als eine Eigenschaft des Range-Objekts angesehen. Die Bezeichnung des Objekts und die der Eigenschaft werden durch einen Punkt getrennt. Statt der Übergabe an eine Variable kann aber auch beispielsweise eine Übergabe an ein Dialogfeld erfolgen.

MsgBox Range("F7").Value

Soll der Zelle dagegen ein anderer Wert zugeordnet, die Eigenschaft Wert also geändert werden, lautet die Schreibweise:

Range("F7").Value = "John Haenks"

Soll die Zelle F7 den Wert der Zelle F17 erhalten, können Sie schreiben:

Range("F7").Value = Range("F17").Value

Die meisten Eigenschaften lassen sich sowohl abfragen als auch ändern, einige lassen sich dagegen nur abfragen. Bei vielen Eigenschaften werden die Werte über eingebaute Konstanten festgelegt.

Hier ein Beispiel, in welchem der Schriftgrad einer Zelle in einer Tabelle in der aktuellen Anwendung (das ist Excel) auf 12 Punkt gesetzt, der vergebene Schriftgrad ermittelt und in einem Meldungsfenster ausgegeben wird.

Setzen und Ermitteln von Eigenschaften


Rheinwerk Computing

Einsatz von Excel-Konstanten  downtop

Für die Bestimmung der Eigenschaften werden häufig Excel-interne Konstanten eingesetzt, die gemeinsam haben, dass sie mit »xl« (für Excel), »mso« für MS Office oder »vb« (für Visual Basic) beginnen. Diese Konstanten lassen sich in vielen Zusammenhängen verwenden. Sie stehen meistens für Kennziffern, die an sich schwerer zu durchschauen sind. Beim Aufzeichnen von Makros werden sie automatisch verwendet, ihre Anwendung beim Programmieren macht ein Programm übersichtlicher, ist aber etwas aufwändiger.


Rheinwerk Computing

Einsatz von Methoden  downtop

Wenn eine Methode benutzt werden soll, die auf ein bestimmtes Objekt anwendbar ist, sind verschiedene Schreibweisen möglich. Die meisten Methoden verlangen bestimmte Argumente, die näher spezifizieren, wie die Methode eingesetzt werden soll. Meistens sind einige dieser Argumente notwendig, andere dagegen können zwar verwendet werden, müssen es aber nicht. Einige Methoden kommen dagegen ohne Argumente aus.

Worksheets(1).Columns("D:F").AutoFit

wendet z. B. die Methode AutoFit auf die drei Spalten des ersten Blatts einer Mappe an. Damit wird die Spaltenbreite automatisch angepasst.

Bei einigen Methoden werden, wenn keine Argumente angegeben werden, bestimmte Standardvorgaben verwendet.


Rheinwerk Computing

Benannte Argumente  downtop

Hat eine Methode mehrere Argumente, gibt es zwei Möglichkeiten. Die erste ist, alle Argumente in der richtigen Reihenfolge anzugeben bzw. wenigstens Platzhalter für Argumente vorzusehen, die nicht angegeben werden. Zum Beispiel hat die SaveAs-Methode, mit der Arbeitsmappen gespeichert werden, fast ein Dutzend Argumente. Sie könnten in der Form

Workbook.SaveAs(Dateiname, DateiFormat, , Schreibkennwort ...)

eingegeben werden. Diese Eingabetechnik wäre aber sehr umständlich und fehleranfällig. Die Alternative ist die Verwendung von benannten Argumenten. In diesem Fall werden nur die Argumente aufgeführt, für die Werte bestimmt werden, und diese Argumente werden einzeln benannt und durch Kommata getrennt. Dabei spielt die Reihenfolge keine Rolle, was eine große Erleichterung ist!

Workbook.SaveAs Filename:="Plan97.xls", _ 
WriteResPassword:="geheim"

wäre ein Beispiel. Der VBA-Editor hilft Ihnen bei der Wahl der Argumentnamen, wie Sie weiter unten noch sehen werden.

Das Beispiel in der folgenden Abbildung nutzt die Methode BorderAround, die vier Argumente haben kann: LineStyle, Weight, ColorIndex und Color. LineStyle und Weight bzw. ColorIndex und Color sind hierbei alternativ. Bei dieser Methode werden benannte Argumente verwendet. Das ist auch dann empfehlenswert, wenn es nicht zwingend erforderlich ist, da das Programm dadurch übersichtlicher wird.

Methode mit Argumenten


Rheinwerk Computing

Methoden mit Erfolgsmeldung  downtop

Methoden geben, wenn sie eingesetzt werden, gegebenenfalls Rückmeldungen, die Sie im Programm verwerten können. Wenn Sie z. B. die Methode CheckSpelling auf einen Zellbereich anwenden, also eine Rechtschreibprüfung durchführen, kann das Prüfungsergebnis abgefragt werden. Wenn kein Fehler gefunden wird, liefert die Methode den Rückgabewert True, der an eine Variable übergeben werden kann.

korrekt = Worksheets("Plan99"). _ 
CheckSpelling(IgnoreUppercase:=True)

Wie Sie an der Zeile sehen, sind diesmal die Argumente der Methode in Klammern gesetzt. Das ist notwendig, wenn der Rückgabewert einer Methode verwendet werden soll.


Rheinwerk Computing

Methoden, die Objekte liefern  downtop

Bestimmte Methoden liefern selbst wieder ein neues Objekt. Sehen Sie sich etwa folgendes Beispiel an:

Anwendung von Methoden

Diese Prozedur kopiert den Inhalt der über der aktiven Zelle liegenden Zelle in die Zwischenablage und fügt sie von dort aus in die Ausgangszelle (die anfangs aktive Zelle) ein. In diesem Beispiel werden die Methoden Offset und Select so angewandt, dass die Methode Offset ein neues Objekt liefert, zu dem ein Unterobjekt (Range) existiert, auf das wiederum eine Methode angewandt wird. Auch diese Methode führt zu einem neuen Objekt, nämlich Selection, auf das dann die Methode Copy angewandt wird.

Die Tatsache, dass viele Methoden ihrerseits wieder ein Objekt liefern, also innerhalb eines Programms wie ein Objekt gehandhabt werden können, schafft die Möglichkeit, die von Methoden gelieferten Objekte in Objektvariablen zu übernehmen und im Programm mit diesen Variablen weiterzuarbeiten. Das folgende Beispiel funktioniert ganz ähnlich wie das vorhergehende: Es kopiert den Inhalt der über der aktiven Zelle liegenden Zelle in die Zwischenablage und fügt den Inhalt in die unter der aktiven Zelle liegende ein:

Verwendung von Objektvariablen

Es werden zwei Objektvariablen (kopierbereich und einfügebereich) definiert und über die Set-Anweisung mit von der Methode Offset zurückgegebenen Objekten belegt. Anschließend werden beide Variablen benutzt, um auf die Objekte, auf die sie verweisen, die Methoden Copy und Select anzuwenden.


Rheinwerk Computing

Bereichsobjekte  downtop

Bereiche gehören in einem Tabellenblatt zu den Objekten, die wohl am häufigsten verwendet werden. Sie verfügen über fast 60 Eigenschaften und über 85 Methoden. Die folgende Abbildung zeigt einige Beispiele:

Beispiele für die Arbeit mit einem Bereichsobjekt

Zunächst wird in diesem Beispiel zweimal die Methode Select (Auswählen) angewandt, einmal auf Sheets(), die Liste der Blätter, und einmal auf Range() – einen Bereich also. Bei beiden handelt es sich um Objekte, wobei Sheets ein Unterobjekt einer Arbeitsmappe (z. B. ActiveWorkbook) ist und selbst wieder Unterobjekte enthält, nämlich die einzelnen Blätter einer Arbeitsmappe. Auch der ausgewählte Range ist seinerseits wieder ein Unterobjekt zu dem ausgewählten Blatt.


Rheinwerk Computing

Diagrammobjekte  downtop

Eine ebenfalls sehr häufige Art von Objekten in Excel sind solche, die mit Diagrammen zusammenhängen. Hierzu gehören alle denkbaren Bestandteile von Diagrammen. Auch hier wieder ein kleines Beispiel:

Arbeiten mit Diagrammobjekten

Auch dabei wird wieder die Objekthierarchie deutlich: An oberster Stelle steht das gerade aktive Blatt (Sie könnten noch die Arbeitsmappe darüber setzen), aus der zu diesem Blatt gehörenden Liste von Zeichnungsobjekten wird ein bestimmtes (diagramm 1) ausgewählt, welches damit zum aktiven Diagramm wird. Hier werden wieder einzelne Unterobjekte (z. B. die Wände des Diagramms) ausgewählt, deren Eigenschaften bestimmt werden.


Rheinwerk Computing

Zum Einsatz von Operatoren  downtop

In vielen der vorhergehenden Beispiele sind Operatoren verwendet worden, ohne dass dies weiter kommentiert wurde. Das war auch insofern nicht erforderlich, als die bis jetzt verwendeten Operatoren weitgehend identisch waren mit denen, die Sie schon bei der Bildung von Formeln in den Excel-Tabellen kennen gelernt haben.

Da sie aber nicht völlig identisch sind und da bei der Aufstellung von Bedingungen für den Programmablauf häufig Operatoren benötigt werden, folgt hier ein kurzer Überblick. VBA unterscheidet zwischen arithmetischen, logischen, Vergleichs- und Verkettungsoperatoren.

  • Arithmetische Operatoren: »+«, »-«, »*«, »/« und »^« sind identisch mit den in Tabellen verwendeten Operatoren. »\« ist der Operator für die ganzzahlige Division (5\3 liefert 1), »Mod« liefert den Rest einer derartigen Division (5 Mod 3 liefert 2).
  • Logische Operatoren: Die logischen Operatoren dienen (mit der Ausnahme von »Not«) der Verknüpfung von Ausdrücken, die Wahrheitswerte liefern, und führen selbst wieder zu Wahrheitswerten. Ihre Funktion lässt sich am besten in so genannten Wahrheitstafeln erfassen.

Wahrheitstafeln für die logischen Operatoren

In dieser Tabelle sollen a und b Ausdrücke sein, die Wahrheitswerte liefern. Die Möglichkeit, solchen Ausdrücken den Wert Null (d.  h. gar keinen Wert) zuzuordnen, wird hier nicht berücksichtigt. Für die Operatoren gilt:

  • Not a ist wahr, wenn a falsch, und falsch, wenn a wahr ist.
  • a Eqv b (a ist äquivalent b) ist wahr, wenn a und b den gleichen Wahrheitswert haben.
  • a Imp b (a impliziert b) ist wahr, wenn b wahr ist oder wenn a falsch ist.
  • a Or b ist wahr, wenn mindestens einer der beiden Ausdrücke wahr ist.
  • a And b ist wahr, wenn beide Ausdrücke wahr sind.
  • a XOr b (a exklusiv-oder b) ist wahr, wenn genau einer der beiden Ausdrücke wahr ist.

Wenn die logischen Operatoren in Kombinationen verwendet werden, müssen die zusammengehörenden Elemente eingeklammert werden (ähnlich wie bei arithmetischen Operatoren). Wer sich die Klammerregeln nicht eigens merken will, kann einfach prinzipiell einklammern.

  • Vergleichsoperatoren dienen dem Vergleich von Werten. Sie sind identisch mit den in Tabellen verwendeten: »<«, »>«, »<=«, »>=«, »=« und »<>«. Sie stehen für kleiner, größer, kleiner/gleich, größer/gleich, gleich und ungleich. Bei Zahlen ist die Bedeutung klar, bei Zeichenfolgen heißt »>« später in der alphabetischen Reihenfolge (»a« > »b« ist demnach falsch).
  • Verkettungsoperatoren: »&« und »+«. Mit »&« lassen sich (wie in Tabellen) Zeichenketten verknüpfen. »+« sollte als Verkettungsoperator nicht verwendet werden.

Rheinwerk Computing

Anweisungen und VBA-Funktionen  downtop

Anweisungen steuern ganz allgemein gesagt den Programmablauf. Die Deklarierung und Definition von Variablen, die Festlegung von Anfang und Ende einer Prozedur oder Funktion, die Konstruktion von Verzweigungen und Schleifen – dies alles wird über Anweisungen erledigt.

Neben den schon angesprochenen Funktionen, die Sie selbst programmieren können, bietet VBA noch ein große Zahl von integrierten Funktionen. Auch diese Funktionen dienen dazu, Werte zu liefern oder umzuwandeln. Im Allgemeinen werden an eine Funktion Werte übergeben und die Funktion liefert Werte zurück. Hierher gehören die mathematischen Funktionen, Funktionen, die Datums- und Zeitwerte verarbeiten, Funktionen, die Zeichenketten manipulieren oder auswerten usw.


Rheinwerk Computing

Mit Verzweigungen und Schleifen Abläufe steuern  downtop

Unabhängig von der programmtechnischen Realisierung lassen sich viele Arbeitssituationen innerhalb eines Programms als Verzweigungen oder Schleifen betrachten. Ein Programm soll etwa auf unterschiedliche Eingaben unterschiedlich reagieren, das heißt: Wenn die Eingabe so ist, dann diese Reaktion, wenn sie anders ist, dann jene Reaktion usw. Ein Programm soll eine bestimmte Aktivität so lange ausführen, bis der Benutzer eine bestimmte Aktion unternimmt oder bis ein bestimmtes Ereignis eintritt, das heißt: Solange etwas nicht der Fall ist, wird diese Aktivität ausgeführt; sobald es der Fall ist, erfolgt eine andere.

Oder: Ein Programm soll eine bestimmte Aktivität in einer bestimmten Häufigkeit durchführen, das heißt: Es wird mitgezählt, wie oft die Aktivität durchgeführt wurde; wenn die vorgegebene Zahl erreicht ist, wird mit anderen (oder keinen) Aktivitäten fortgefahren.


Rheinwerk Computing

If-Then  downtop

Eine häufige Aufgabe besteht darin, auf das Eintreten einer Situation zu reagieren. Diese Aufgabe wird in VBA im einfachsten Fall mit einer Wenn-dann-Struktur gelöst. Angenommen, eine Berechnung sei davon abhängig, ob eine eingegebene Zahl durch drei teilbar ist. Eine Prozedur, die dies überprüft und entsprechend reagiert, könnte so aussehen:

Verzweigung mit If-Then

Anstelle der beiden Test-Unterprogramme könnten entweder andere Prozeduren oder eine Reihe von Anweisungen stehen. Um die Bedingung (im Beispiel a Mod b = 0) zu formulieren, werden häufig die logischen Operatoren gebraucht, etwa wenn eine eingegebene Zahl zwischen zwei Werten liegen soll. Als Bedingung würde dann formuliert:

If zahlN < 100 And zahlN > 50 Then

Derartige Strukturen können auch ineinander verschachtelt sein. Hierfür wieder ein Beispiel:

Verschachtelte If -Then-Struktur

Da sich Unterverzweigungen auch noch mit Else-IF aufbauen lassen, können beliebig komplexe Entscheidungsstrukturen in einem Programm konstruiert werden, was aber schnell dazu führt, dass Sie die Übersicht verlieren. Bei komplexen Verzweigungen sollten Sie deshalb prüfen, ob sich das Problem nicht mit der folgenden Struktur lösen lässt.


Rheinwerk Computing

Select Case  downtop

Wenn die Verzweigung davon abhängt, welchen Wert ein Ausdruck annimmt, können Sie mit einer Struktur arbeiten, die für verschiedene Werte eines Ausdrucks unterschiedliche Reaktionen anbietet.

Beim folgenden Beispiel können Sie sich vorstellen, dass mehrere Benutzer eines Programms unterschiedliche Situationen vorfinden sollen (etwa dass unterschiedliche Ordner gewählt, dass unterschiedliche Briefköpfe verwendet werden oder dass unterschiedliche Programmteile zugänglich sind).

Verzweigung durch Fallprüfung

Diese Art der Verzweigung bleibt immer übersichtlich. Natürlich kann die Übersichtlichkeit auch durch Verschachtelung innerhalb dieser Struktur zerstört werden, aber das muss hier nicht vorgeführt werden.


Rheinwerk Computing

While  downtop

Eine oft beim Programmieren auftretende Aufgabe besteht darin, dass ein Programmteil so lange ablaufen soll, bis eine bestimmte Bedingung eintritt. Das ist zum Beispiel der Fall, wenn Benutzereingaben in eine Liste oder eine Feldvariable eingelesen werden sollen, bis der Benutzer den Vorgang beendet, oder wenn eine Operation so lange durchgeführt werden soll, bis ein bestimmter Wert erreicht ist.

Schleife mit While

In dieser Schleife wird die Variable eingabeT zunächst mit einem Leerzeichen belegt. Die Schleife selbst wird so lange durchlaufen, solange die Variable nicht den Wert "" annimmt (d.  h. gar kein Zeichen). Dies geschieht, wenn das Eingabefenster ohne Eingabe oder mit Abbrechen beendet wird. Innerhalb der Schleife ist der Aufruf des Unterprogramms – in dem der eigentliche Einlesevorgang stattfinden würde – davon abhängig, dass tatsächlich etwas eingegeben wurde.


Rheinwerk Computing

Do-Loop  downtop

Besonders elegant lassen sich derartige Aufgaben mit einer ähnlichen, aber flexibleren Struktur lösen. Sie gestattet es, die Bedingung für die Schleife an den Anfang oder an das Ende der Schleife zu setzen (im vorhergehenden Beispiel muss die Bedingung am Anfang stehen). Außerdem können innerhalb der Schleife noch Abbruchbedingungen formuliert werden. Das vorhergehende Beispiel könnte so formuliert werden:

Schleife mit Do-Loop

Sowohl am Anfang als auch am Ende der Schleife könnte eine Bedingung stehen, wodurch die Schleife fast universell verwendbar wird. Näheres hierzu finden Sie in der Beschreibung der Visual Basic-Anweisungen.


Rheinwerk Computing

For-Next  toptop

Wenn der Fall auftritt, dass eine Anweisung oder eine Folge von Anweisungen in einer definierten Häufigkeit wiederholt werden soll, wird eine For-Next-Schleife verwendet. Ein Beispiel hierfür haben Sie oben schon kennen gelernt. Diese Struktur wurde verwendet, um Werte in eine Matrix einer Tabelle zu schreiben. Hier folgt noch ein Beispiel, das den umgekehrten Prozess bewerkstelligt: Eine Anzahl von Daten aus einer Tabelle wird in eine Feldvariable eingelesen. Das ist nützlich, wenn mit diesen Daten Berechnungen durchgeführt werden sollen, ohne dass VBA für jeden Wert auf die Tabelle zugreifen soll.

Einlesen von Tabellendaten in eine Feldvariable

Für diese Prozedur, die aus dem die Daten enthaltenden Tabellenblatt gestartet werden muss, wurden in einer Tabelle in den Zellen A20 bis A32 Monatsnamen eingetragen. Das zur Kontrolle in die Prozedur aufgenommene Meldungsfenster gibt »Januar« aus.

Mit diesem Überblick über die Programmstrukturen in VBA soll die allgemeine Einführung in VBA erst einmal abgeschlossen sein. Im Folgenden wird die Entwicklungsumgebung für VBA vorgestellt.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Excel 2007 - Das umfassende Handbuch
Excel 2007 -
Das umfassende
Handbuch

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: VBA mit Excel






 VBA mit Excel


Zum Rheinwerk-Shop: Einstieg in VBA mit Excel






 Einstieg in VBA
 mit Excel


Zum Rheinwerk-Shop: Excel 2010 im Controlling






 Excel 2010
 im Controlling


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Visual C# 2012






 Visual C# 2012


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern