Startseite Inhaltsverzeichnis Nutzungsbedingungen Datenschutz Impressum Weitere Informationen

GRUNDLAGEN

Eigene VBA-Makros im Büro inklusive Grundlagen der Programmierung

VBA und Makros • Codeschnipsel • Grundlagen • Programmierung • Syntax • Schritt für Schritt • Schulung

Inhaltsverzeichnis

Vorwort

Liebe Leserinnen, Liebe Leser,

Jeder kennt den Büro-Alltag mit riesigen Microsoft Excel Tabellen, PowerPoint Präsentationen und Word Dokumenten und den häufig immer wieder gleichen Arbeitsabläufen, die oft ziemlich zeitintensiv sind. Die dort investierte Zeit und Kraft könnte man produktiver nutzen. Ich erinnere mich gerne an meine Arbeitsabschnitte zurück, in der die Datenaufbereitung soviel Zeit eingenommen hat, dass man für die wirkliche „Arbeit mit den aufbereiteten Daten“ nicht mehr viel Zeit übrig hatte. Und genau hier möchte ich gerne ansetzen. Warum sollte uns in der heutigen Zeit nicht ein Computer die ewig wiederkehrenden eintönigen und identischen Arbeitsabläufe abnehmen? Und man braucht keinen studierten Informatiker, um sich einige Arbeit abnehmen zu lassen. Dieses kostenlose Online-Tutorial soll Ihnen das benötigte Wissen von Null auf vermitteln, welches Sie für eine Makroerstellung benötigen. Nach diesem Tutorial werden Sie in der Lage sein, Makros für Ihren Büroalltag zu entwickeln und zu verwenden. Wichtig dabei ist, dass Sie kein Vorwissen zum Thema Programmierung benötigen. Alle benötigten Grundbegriffe und fundamentale Informationen gebe ich Ihnen direkt mit an die Hand.

Aufgrund meiner langjährigen Trainer-Erfahrung im Bereich von IT- und Programmier-Schulungen habe ich mich entschlossen, meine eigene Programmier-Schulung für VBA Anfänger - bzw. eine Auswahl der dort enthaltenen Kapitel - in einem stark verkürzten, jedoch kostenlosen Online-Tutorial festzuhalten. Daher ist dieses Online-Tutorial in der Ich-Form geschrieben. Sie lesen sozusagen die Stimme des Trainers vor, der gerade das Seminar hält. Auch das oft erhaltene Feedback von Schulungsteilnehmern zu fehlender Literatur zu diesem Thema auf dem Markt brachte mich auf die Idee selber ein Buch / Tutorial für meine „Büro-Mitmenschen“ zu schreiben.

Sollten Sie Fragen haben oder auf der Suche nach weiterführenden Informationen über die VBA Programmierung sein, können Sie sich gerne auf meiner Internetseite www.wershovenonline.de umschauen und mich dort mit einem Klick per E-Mail kontaktieren.

Einen herzlichen Dank möchte ich meiner Mitautorin Anika Wershoven aussprechen. Ohne sie wäre das Tutorial nur halb so gut geworden. Vielen Dank auch an alle anderen Freunde und Bekannte, die an der Endfertigung des Tutorials beteiligt waren.

Bitte bedenken Sie, dass dieses Online-Tutorial kostenlos in unserer Freizeit erstellt wurde.

Ich wünsche Ihnen Viel Spaß bei Ihrer persönlichen Entdeckungstour!

Ihr
Marc Wershoven

VBAVBA Codeschnipsel
COACHINGGrundlagenschulung / Tutorial

Einleitung

Was erwartet Sie in diesem Online-Tutorial?

Zuerst möchte ich etwas zu der in diesem Tutorial verwendeten Grundmethodik sagen:
"Von Grund auf! Die Basis muss verstanden sein, der Rest ist selbstständig erlernbar!"

Dieses Online-Tutorial ist für alle Neueinsteiger und Hobby-Makro-Schreiber gedacht, die sich von Grund auf die Technik der Programmierung aneignen möchten, um professionelle Makros im Büro-Alltag erstellen zu können. Aus diesem Grund sind einige Fachbegriffe bewusst erheblich einfacher erklärt, so dass Sie auch als nicht Informatiker mit den Begrifflichkeiten arbeiten können.
Für Profis ist dieses Tutorial nicht geeignet, da lediglich Grundlagenwissen vermittelt wird.

Wie bei einem Hausbau benötigen wir ein gutes Fundament, damit unser Haus auch sicher und lange steht. Genauso verhält es sich mit einem Wissensfundament der Programmierung, wenn man gute Programme und Makros erstellen möchte.
Genau dieses Fundament werden wir zusammen herstellen. Das eigentliche Haus, sprich Ihre Makros und Programme, können Sie später problemlos selbst erstellen und ausbauen.
Das gesamte Wissen für die Entwicklung eigener Programme und Makros wird in diesem Tutorial besprochen.

Der Vorteil einer verstandenen und gut durchgesprochenen Programmierbasis ist, dass Sie sich jederzeit im Internet auf die Suche nach spezifischen Befehlen oder Ideen machen können. Durch die breite Grundlage werden Sie fremde Programme und Makros problemlos verstehen können und sich somit überall neues Wissen selbstständig aneignen können.

Kommen wir nun zu den eigentlichen Inhalten.
Wie immer im Bereich der Computer gibt es Voraussetzungen, die erfüllt sein müssen, damit das in diesem Tutorial vermittelte Wissen auch angewendet werden kann. Diese Voraussetzungen werden wir zuerst besprechen.

Anschließend werden wir uns mit einer breiten Wissensgrundlage über die Programmierung beschäftigen.

Alle weiteren Kapitel sind anschließend modular aufgebaut. Jedes Kapitel setzt auf unserem Fundament auf und erweitert unsere Möglichkeiten. Alle Module / Kapitel können miteinander kombiniert werden. Somit eröffnen sich immer wieder neue Möglichkeiten und Anwendungsgebiete für Ihre Makros und Programme.

Wie immer macht die Übung den Meister. Ich versuche, Ihnen so viele Übungsmöglichkeiten wie möglich an die Hand zu geben. Allerdings lernt man am besten mit eigenen Ideen, die man in die Tat umsetzt.

Kapitel 1: Einstieg und Grundlagen der Programmierung

Womit fangen wir an?
In sehr viel Literatur und/oder sehr vielen Schulungen wird sofort mit dem ersten Makro gestartet. Ich möchte Ihnen zuerst die wichtigsten Begrifflichkeiten erläutern und mit dem Begriff Makro beginnen.

Makro
Makros in der Programmierung sind eigenständige Programmcodes, die in späteren Schritten der Programmierung durch größere und komplexere Programmcodes ersetzt werden. Einfach gesagt sind Makros wie Platzhalter für Programmcode. Das Wort Makro ist aus dem griechischen Wort „makros“ abgeleitet und bedeutet soviel wie Groß-Befehl. In unserem Umfeld der Büro-Programmierung bedeutet Makro allerdings etwas anderes. Laut Definition in der Informatik sind die erstellten Programmcodes in VBA eigentlich keine Makros sondern kleine eigenständige Programme, die unter einem Namen aufgerufen werden können. Sozusagen verbirgt sich hinter einem Makro im Umfeld von Microsoft Office eine Sammlung von Befehlen, welche eine Klasse von Problemen lösen oder die Automatisierung der Benutzeroberfläche veranlassen.

Genauso ist es auch mit der Programmierung selber. Ich könnte direkt mit Programmierbefehlen anfangen. Stattdessen werde ich mit einem guten Fundament beginnen. Schließlich würden Sie Ihr Haus auch nicht einfach auf einer Rasen- oder Sandfläche platzieren. Das Fundament stellt eine stabile Grundlage dar. Und genau diese Grundlage brauchen wir auch für gute Programmierarbeiten. Dazu werde ich Ihnen eine grundlegende Methodik an die Hand geben und sämtliche Grundbegriffe der Programmierung durchgehen. Das Kapitel ist somit sehr Theorie-lastig. Der Vorteil davon ist aber, dass Sie anschließend bei den Folgekapiteln keine Probleme mit den verwendeten Begriffen haben werden und auch bei Eigenrecherchen im Internet oder anderer Literatur werden Sie nun deutlich mehr der dort publizierten Informationen verstehen, wenn Sie die Begriffe nicht nur gehört sondern auch wirklich verstanden haben. Ein weiterer wichtiger Schritt, bevor ich überhaupt mit einer Programmierung starten kann, ist die Konzeption einer Lösung. Ich muss mir Gedanken machen, was soll mein Makro, meine Programmierung, überhaupt leisten? Auch hier möchte ich Ihnen Grundlagen vermitteln, wie eine richtige Programmierung abläuft. Ich verwende schon wieder einen Begriff, der auch noch nicht erläutert wurde.

Was ist überhaupt eine Programmierung?
- eine Wegbeschreibung erstellen
- eine längere Rechenaufgabe mit einem Taschenrechner lösen
- den Wecker auf 07:30 Uhr stellen
- dem Videorekorder sagen, die Sendung auf Kanal 1 heute um 20:15 Uhr aufnehmen
- ein Kuchenrezept für Bekannte oder Freunde aufschreiben

Diese Beispiele sind auch bereits alles im weiteren Sinne schon Programmierungen.
In der Informatik unterscheidet man zwei Begriffe.

Programmieren
Einer Maschine sagen, was sie wie und in welcher Reihenfolge selbstständig durchführen soll.

Programmierung
Das Erstellen von Computerprogrammen mit speziellen Programmiersprachen.

Noch ein weiterer Nachtrag, was heißt eigentlich Informatik?

Informatik
Informatik ist die Wissenschaft der systematischen Verarbeitung von Informationen. Die Wurzeln der Informatik liegen in der Mathematik und dem praktischen Wunsch nach einer Automatisierung von komplexen und großen Mengen von Berechnungen. Das Wort "Informatik" wird häufig auf die Zusammensetzung der Worte Information und Mathematik oder alternativ auch Information und Automatik zurückgeführt.

Kapitel 1.1: Sprachbarriere

Der erste Schritt zum eigenen Programm ist es, zu wissen was man überhaupt programmieren möchte. Ich muss mir selber ein Ziel setzen. Das kann ja nicht so schwer sein, denkt man sich dabei. Ist es auch nicht, aber wie erklären Sie einem Computer was er tun soll? "Spricht er nicht unsere Sprache?" - "Nein. Tut er leider nicht.".
Für dieses Problem habe ich ein passendes, frei ins Deutsch übersetztes Zitat gefunden:

Anstatt anzunehmen, unsere Aufgabe sei es dem Computer zu lehren, was er zu tun hat, sollten wir uns lieber darauf konzentrieren, dem Menschen zu erklären, was wir vom Computer wollen.
Donald E. Knuth, Literate Programming, 1984

Denn das eigentliche Problem ist die Verständigung mit den Computern. Grundsätzlich gilt es die Sprachbarriere zu überwinden. Aber um diese Hürde nehmen zu können, müssen wir uns mit der Situation genauer beschäftigen. Die Ansicht des Menschen vom Leben ist geprägt von Dingen und Handlungen. Auch die Interaktion und Kombination der beiden Begrifflichkeiten prägt unser Leben. Beim Computer sieht das ganze Spiel anders aus. Ein Computer arbeitet mit Daten und deren Abläufen. Und genau diese beiden Ansichten müssen wir zusammen bringen. Wie kommunizieren wir nun mit einem Computer über unsere Ansichten?

Abbildung 1.1 - Ansichten der Informatik
Abbildung 1.1 - Ansichten der Informatik

Diese Fragestellung möchte ich noch ein wenig vertiefen und den Begriff des semiotischen Dreiecks ins Spiel bringen.
Abbildung 1.2 - Semiotisches Dreieck
Abbildung 1.2 - Semiotisches Dreieck

Betrachten wir unser Fortbewegungsmittel: Das Fahrrad. Das semiotische Dreieck hat, wie für ein Dreieck üblich, drei Ecken. In einer Ecke wird das Fahrrad als Begriff gesehen ohne eine eigentliche Bedeutung. Schauen wir in die Symbol-Ecke. Hier wird das Fahrrad in verschiedenen Sprachen dargestellt. Die englischen Wörter "bike" oder "bicycle" sind damit Symbole für den Begriff Fahrrad in einer anderen Sprache, gemeint ist aber immer noch unser Drahtesel. In der letzten Ecke sehen wir ein Bild unseres Fahrrads. Hier wird das Objekt gesehen, was aus dem Begriff in unserem Gehirn eine bildliche Visualisierung anstößt. Alle drei Ecken des semiotischen Dreiecks spielen dabei eine Rolle, wenn unser Gehirn das Fahrrad verarbeitet.

Ein kleines Experiment: An was denken Sie, wenn ich "Golf" sage?

Einige von Ihnen werden nun sagen: Ein Auto. Andere werden die Sportart Golf nennen. Und evtl. werden einige sogar sagen, dass es der Golf von Mexico sein kann. Wie Sie sehen, können also hinter einem Begriff mehrere Objekte stecken. Woher soll ein Computer wissen, welches Objekt Sie meinen, wenn Sie Golf sagen? Genauso gut benötigen wir das Symbol zu unserem Begriff. Welche Sprache spricht denn eigentlich unser Computer?

Noch ein Beispiel: Was ist mit dem Begriff "Band"?
Auch hier können sich verschiedene Bedeutungen verbergen: Eine Musikgruppe, ein Video-Band, ein Band um ein Paket zu verschnüren ... usw.

Schauen wir uns diese Fragestellung noch etwas genauer an.

Abbildung 1.3 - Compiler und Sprache
Abbildung 1.3 - Compiler und Sprache

Auf der linken Seite haben wir unsere deutsche Sprache. Auf der rechten Seite haben wir die Sprache, die der Computer versteht. Die sogenannte Maschinensprache. Sie ist eine eigenständige Sprache, die sich damit beschäftigt einfache boolesche Funktionen auszuführen. Um in der Maschinensprache eine Excel-Zelle zu programmieren benötigt man sehr viele Zeilen Quellcode. Diesen Zeitaufwand können wir im Büro und auch im privaten Bereich zu Hause allerdings nicht aufbringen. Also brauchen wir eine Lösung, wie wir unsere Sprache bzw. auch andere Sprachen wie Englisch, Französisch, etc. aber auch unsere Mimik, Gestik, Empfindungen und Gefühle in die Maschinensprache übersetzen lassen. Ich verweise nochmal auf das semiotische Dreieck. Alles, was wir uns vorstellen können und was unser Gehirn als Visualisierungsmotor für uns produziert, müssen wir dem Computer übersetzen. Dies ist unsere Aufgabe und somit leider auch die schwerste Arbeit bei der Erstellung von Programmen. Die weitere Lücke, die Übersetzung unserer Anweisungen in die Maschinensprache, schließt eine Programmiersprache. Wie beispielsweise Visual Basic for Applications, in Kurzform auch als VBA bezeichnet. In VBA geschriebener Quelltext kann von der Entwicklungsumgebung der Programmiersprache in Maschinensprache übersetzt werden. Diese Übersetzungsarbeit wird vom sogenannten Compiler übernommen. Eine Sorge weniger für uns.

Compiler
Ein Compiler (Englisch für "zusammentragen") ist ein Programm, welches ein anderes Programm, das in einer Programmiersprache geschrieben ist, in eine andere Sprache übersetzt. Das übersetzte Programm kann anschließend vom entsprechenden Computer ausgeführt werden. Der Compiler ist somit der Übersetzer zwischen Mensch und Computer. In der Informatik übernimmt der Compiler jedoch noch weitere Aufgaben, wie z.B. das Zusammentragen einzelner Programmbibliotheken und Bestandteile zum Endprodukt sowie weitere Tätigkeiten, die ich hier aber nicht näher erläutern möchte.
X Abbildung 1.1 - Ansichten der Informatik
X Abbildung 1.2 - Semiotisches Dreieck
X Abbildung 1.3 - Compiler und Sprache

Kapitel 1.2: Vom Problem zum Programm

Somit haben wir die Sprachbarriere zwischen Mensch und Maschine schon einmal überbrückt. Kommen wir noch einmal zurück auf das Thema, einem Computer unsere Wünsche beizubringen.

Ein Beispiel verdeutlicht das Problem:

Wie würden Sie einem Computer beibringen, wie man ein leckeres Rührei herstellt?

Eine Variante könnte sein: „2 bis 3 Eier in einer Pfanne braten und immer kräftig rühren!“

Wunderbar, wir Menschen würden mit dieser Anleitung ein Rührei produzieren können. Der Computer allerdings nicht. Da Maschinen "dumm" sind, wissen diese nicht einmal, was ein Ei ist. Also müssten wir unserem Computer zuerst einmal alle Begriffe erklären. Das ist aber noch lange nicht alles. Was für uns selbstverständlich ist, ist für den Computer unbekannt. Er kann nicht denken. Also ist unser größtes Problem, wie bringen wir dem Computer nun die richtigen Arbeitsschritte bei? Beispielsweise könnten wir dem Computer folgende Befehle geben, vorausgesetzt es gibt eine Programmiersprache, die diese Befehle und Begriffe kennt:
  • Öffne den linken Schrank
  • Nimm eine Pfanne
  • Stelle die Pfanne auf den Herd
  • Schalte den Herd auf Stufe 5
  • Öffne den Kühlschrank
  • Nimm die Eierschachtel heraus
  • Öffne die Eierschachtel
  • Nimm 2-3 Eier heraus
  • usw.
Das ist im Vergleich zu unserer ersten Anweisung schon ein bisschen mehr Arbeit. Aber noch lange nicht unser Ziel. Was ist mit folgenden Fragen:
  • Was ist denn, wenn keine Pfanne im Schrank ist?
  • Was, wenn die Eier leer sind?
  • Wie viele Eier soll der Computer nun nehmen: 2 oder 3?
  • Was machen wir bei einem Gasherd oder wenn wir gar keinen Schrank in der Küche haben?
  • Und was machen wir bei einem Stromausfall?
  • Ist das Licht in der Küche überhaupt an?
  • usw.
Wir müssen also alle Bedingungen und alle evtl. auftretenden Ereignisse bestimmen und dem Computer für jedes Ereignis eine Reaktion beibringen. In Summe kann diese genaue Anweisungsauflistung ganz schön viel Arbeit machen. Man muss ständig aufpassen, dass Robustheit und Verlässlichkeit stets gewährleistet sind. Mit unserem kleinen Koch-Beispiel landen wir ganz schnell auf so vielen Anweisungen und Eventualitäten, dass wir damit auch ein ganzes Buch füllen könnten.

Und wenn wir es vergessen dem Computer zu sagen, steht der Kühlschrank auch immer noch offen und der Herd ist noch auf Stufe 5!

Hierzu habe ich noch eine kleine theoretische Übung für Sie. Wie Sie merken, lege ich viel Wert auf diese Grundlagen. Sie werden im späteren Programmieralltag schnell feststellen, welche Vorteile es für Sie hat. Vertrauen Sie meiner Vorgehensweise, damit Sie immer zuverlässige Programme entwickeln.

Nun zur Aufgabe:
Abbildung 1.4 - Leerzeichen ermitteln
Abbildung 1.4 - Leerzeichen ermitteln

Richtig. Sie haben 7 Stück gezählt. Aber wie haben Sie das gemacht? Versuchen Sie Ihre Vorgehensweise zu beschreiben.

Hier eine Beispiellösung:
  • Ich denke mir eine Zahl und merke mir dabei die 0
  • Von links nach rechts schaue ich mir nun jedes einzelne Zeichen meines Satzes an
    • Für das aktuell betrachtete Zeichen schaue ich, ob es ein Leerzeichen ist,
      • wenn ja erhöhe ich meine gedachte Zahl um 1,
      • wenn nicht gehe ich zum nächsten Zeichen.
Und schon haben Sie ein Programm beschrieben. Diese Art Programme aufzuschreiben ist der erste Schritt zu Ihren eigenen Programmen. Das, was man mit normalen Sätzen beschreibt, ähnelt dem sogenannten Pseudocode. Pseudocode ist unter Programmierern eine Beschreibung des Lösungsbildes. Es handelt sich bei der Notation um eine Mischung aus Mathematik und natürlicher Beschreibung in normalerweise englischer Sprache. Es tut aber niemandem weh, wenn Sie den Pseudocode in deutscher Sprache erstellen.

Gerade die Dokumentation von Programmabläufen wird in der Praxis häufig links liegen gelassen. Es handelt sich aber um eines der wichtigsten Werkzeuge innerhalb der Programmierung. Denn wer sich vor der Umsetzung genug Gedanken gemacht hat, vermeidet in einer „Drauf-Los-Programmierung“ sehr viele Fehler.

Nun haben wir einen Gesamtüberblick zur Vorgehensweise bei einer Programmierung. In einem kleinen Schaubild habe ich die wichtigsten Stationen noch einmal aufgezeichnet.

Abbildung 1.5 - Vom Problem zum Programm
Abbildung 1.5 - Vom Problem zum Programm

Unser Weg vom Problem zum eigentlichen Programm startet bei der Problembeschreibung. Es handelt sich um den eigentlichen Auftrag, das zu erreichende Ziel. Es wird meistens in natürlicher Schriftform aufgeschrieben.

Im nächsten Schritt wird die Spezifikation geschrieben. Hier wird der Lösungsweg betrachtet und dokumentiert. Dazu gehören Prozesse und Rahmenbedingungen zum eingeschlagenen Lösungsweg. Auch hier wird mit natürlichen Sätzen gearbeitet.

Der dritte Schritt ist die genaue Verarbeitungsvorschrift, allerdings unabhängig von einer Programmiersprache. Dieses geschieht häufig mit Ablaufplänen oder sogenannten Struktogrammen. Die aufgeschriebenen Abläufe werden als Algorithmen bezeichnet. Ich werde darauf im späteren Verlauf noch einmal genauer eingehen.

Der vierte Schritt ist die Umsetzung der zuvor ermittelten Algorithmen in eine spezifische Programmiersprache.

Das Ergebnis ist somit Quelltext, der im letzten Schritt mit einem Compiler in die Maschinensprache unseres Computers übersetzt wird. Diesen Schritt nimmt uns der Computer ab, die vier Schritte vorher sind die Aufgabe des Programmierers bzw. auch teilweise des Auftraggebers.

Das Endprodukt in Maschinensprache beseht nur noch aus Nullen und Einsern. Dabei sei angemerkt, dass der vierte Schritt, die eigentliche Programmierung, vom Aufwand der kleinste Schritt ist.

Somit sind wir an unserem Ziel angekommen. Jedenfalls in der Theorie. Was fehlt uns nun noch? Genau, eine Programmiersprache. Und darum kümmern wir uns direkt im Anschluss.

Versuchen Sie die einzelnen Stationen vom Problem zum Programm in Ihren Praxisanwendungen wirklich bewusst durchzugehen. Sie vermeiden durch die dort investierte Zeit garantiert Fehler bei der Programmierung, die Sie später mit hohen Aufwänden ausbügeln müssen.
X Abbildung 1.4 - Leerzeichen ermitteln
X Abbildung 1.5 - Vom Problem zum Programm

Kapitel 2: Programmiersprachen und VBA

Dazu möchte ich zuerst ein paar allgemeine Informationen zu Programmieransätzen und den verschiedenen Sprachgenerationen geben.
Abbildung 2.1 – Generationen der Programmiersprachen
Abbildung 2.1 – Generationen der Programmiersprachen

Die erste Generation der Programmiersprachen ist die Maschinensprache. Sie besteht ausschließlich aus Nullen und Einser. Wieso besteht eine Sprache eigentlich aus Nullen und Einser? Es gibt eine ganz einfache Erklärung dafür. Wenn wir mit elektronischen Geräten arbeiten, die mit Strom betrieben werden, kann es nur zwei Situationen geben: Es fließt Strom oder es fließt kein Strom. Sprich: Null bedeutet, es fließt kein Strom und Eins bedeutet, es fließt Strom. Mit Hilfe von Schaltkreisen und der booleschen Mathematik konnte somit der erste Computerschaltkreis entwickelt werden. Und durch die Veränderung von verschiedenen Schaltern, die wiederum mit zwei Zuständen beschrieben werden können, war auch die erste Programmiersprache geboren. Das Lernen dieser Sprache ist allerdings mit sehr viel Aufwand verbunden. Auch in der Maschinensprache sind kleine geschriebene Programme oft viele Seiten lang und schwer zu lesen. Diese Aufgabe nimmt uns ja glücklicherweise der Compiler ab.

Die zweite Generation sind die sogenannten Assemblersprachen. Hier werden logische Adressen und einige wenige Befehle verwendet, um Programme zu erstellen. Auch diese Sprache ist sehr System-nah und mit sehr viel Aufwand verbunden.

Kommen wir zur dritten Generation der Programmiersprachen, den sogenannten höheren Programmiersprachen. Diese Sprachen sind um eine eigene Syntax und Semantik erweitert. Sie ähneln alle sehr stark dem Pseudocode. Befehle und Variablen sind an der Tagesordnung. Diese Programmiersprachen sind mit einigem Aufwand zu lernen. Die Programme selber sind um Welten kürzer als Programme in Assembler oder Maschinensprache. Die Übersetzung in lauffähige Maschinenprogramme übernimmt bei den höheren Programmiersprachen der Compiler.

Die vierte Generation der Programmiersprachen umfasst auch die Sprache, die wir mit Hilfe dieses Buches lernen wollen. Die sogenannten Anwendungsorientierten Programmiersprachen versetzen den Programmierer in die Lage auf einer abstrakten Ebene die Problemlösung in den Mittelpunkt seiner Arbeit zu stellen. Sämtliche Übersetzungen werden von der Entwicklungsumgebung und der dort enthaltenen Compiler übernommen. Somit kann ein Programmierer der vierten Generation von Sprachen sich voll und ganz auf die Problemlösung konzentrieren und bekommt mit der dazugehörigen Programmiersprache das Werkzeug an die Hand die Lösung digital umzusetzen.

Zu guter Letzt gibt es noch die fünfte Generation, die sogenannten Sprachen der künstlichen Intelligenz. Bei diesen Programmiersprachen kümmert sich der Computer um die Problemlösung. Die Anwender geben lediglich das zu lösende Problem und einige Rahmenbedingungen vor.

In den folgenden Kapiteln möchte ich Ihnen mehr Informationen zur Programmiersprache Visual Basic for Applications (VBA) an die Hand geben. Denn bevor wir mit einem Werkzeug arbeiten, sollten wir uns mit diesem Werkzeug auseinandergesetzt haben.
X Abbildung 2.1 – Generationen der Programmiersprachen

Warum fehlt hier ein Stück?

ANZEIGE
Einige unserer Kapitel sind im kostenfreien Tutorial nicht verfügbar. Vervollständigen Sie Ihre Weiterbildung und erweitern Sie Ihr Wissen mit unseren professionellen Schulungen! Erhalten Sie Zugang zu wertvollen zusätzlichen Tipps und Lehrmaterial, das Ihnen hilft, Ihre Fähigkeiten auszubauen und selbst ein VBA-Profi zu werden. Unser exklusives Angebot bietet Ihnen außerdem die Möglichkeit, tiefer in ein spezifisches Thema Ihrer Wahl einzusteigen. Unser Personal-Training rund um VBA ist genau die richtige Ergänzung, um theoretische Aspekte gemeinsam in der Praxis anzuwenden und umzusetzen. Wir unterstützen und beraten Sie ebenfalls bei der VBA Programmierung in Ihren eigenen Projekten und stehen Ihnen mit Rat und Tat zur Seite. Setzen Sie sich einfach mit uns in Verbindung. Sie finden uns auf unserer Internetseite:

WershovenOnline.de

Kapitel 2.2: Was ist VB oder VBA?

Was bedeutet eigentlich BASIC?
BASIC steht für: BeginnersAll Symbolic InstructionCode
Es handelt sich frei übersetzt um einen für Beginner gemachten Anweisungstext mit symbolischen Anweisungen.

Visual Basic ist ein Produkt der Firma Microsoft und es gibt grundsätzlich drei sogenannte Dialekte dieser Programmiersprache. Aber alle drei Dialekte haben den gleichen Kern und auch die gleichen Kernbefehle und werden durch eigene Objektmodelle und Funktionsbibliotheken erweitert.

Dialekt 1: Visual Basic
Visual Basic ist die vollständige Sprache. Sie erlaubt es, fertige Programme unabhängig von anderen Programmen zu erstellen. Diese laufen direkt unter einem Betriebssystem. Im Falle der .NET Technologie wird allerdings ein sogenanntes .NET-Framework vorausgesetzt.

Dialekt 2: Visual Basic for Applications (VBA)
Visual Basic for Applications ist eine auf Visual Basic basierende Sprache, die in die Softwareprodukte von Microsoft Office, sprich Word, Excel, PowerPoint, Outlook oder auch Access, eingebettet ist. Man benötigt also keine zusätzliche Software, um mit VBA zu programmieren. Lediglich eines der eben genannten Büro-Anwendungen.

Dialekt 3: Visual Basic Script (VBS oder VBScript)
Visual Basic Script ist eine stark eingeschränkte Version von Visual Basic. Sie dient dazu Betriebssystemabläufe zu automatisieren und ähnelt anderen Skriptsprachen.

Somit kennen wir nun die Geschichte und die Herkunft von VBA und schauen uns die Eigenschaften der Sprache etwas genauer an.

Beispielsweise die Vor- und Nachteile von VBA:

Vorteile
  • Einfacher BASIC Dialekt
  • Konsistenter Aufbau durch die gesamte Microsoft Office Produktlinie
  • Verbindung aller Microsoft Office Komponenten
  • Strukturierte Programmierung
  • Modularisierung
  • Parametrisierung
  • (fast) objektorientiert
Nachteile
  • Umfangreiche Objektanzahl
  • Jede Microsoft Office Anwendung hat ein eigenes Objektmodell
  • Interpretersprache = geringe Performance
  • Sicherheitsaspekte
Ich möchte noch einige Punkte der zuvor genannten Aufstellung verdeutlichen.

Kommen wir zum Thema Parametrisierung.
Parametrisierung bedeutet, dass ich meine Programme und Makros so baue, dass ich durch externe Konfigurationsmöglichkeiten die Arbeitsweise meiner Programmierung verändern kann, ohne im Quelltext Anpassungen vornehmen zu müssen. Ein Beispiel wäre z.B. die Schriftart, Form und Farbe, die mein Makro verwenden soll. Diese könnte ich z.B. in einer Parametertabelle festhalten. Mein Programm liest dann aus dieser Parametertabelle die zu verwendende Schriftart aus und verwendet diese dann im Programmablauf. Möchte ich später meine Schriftart ändern, muss ich diese nur in der Parametertabelle ändern. Somit brauche ich später keinen Programmierer mehr, um Veränderungen vorzunehmen. Allerdings bedeutet eine Parametrisierung auch immer mehr Arbeit für einen Programmierer, der seinen Programmquelltext flexibel halten muss.

Das Thema Sicherheitsaspekte spielt eine sehr wichtige Rolle in der heutigen Zeit.
Die Programmiersprache VBA hat grundsätzlich Zugriff auf Ihr gesamtes Dateisystem. Sobald Sie die Makros in einer Arbeitsmappe oder einem anderen Dokument aktivieren, kann es schon passiert sein. Selbst mit dem Öffnen einer Datei können Befehle programmiert sein und ausgeführt werden. Beispielsweise das Löschen von Dateien auf Ihrer Festplatte. Deshalb achten Sie genau auf Dateien mit VBA Quelltexten, die Sie aus dem Internet herunterladen. Aktivieren Sie nur die Makros bei vertrauenswürdigen Dateien.

Wie kann ich mit VBA programmieren?
Die erste und einfachste Möglichkeit ist die Verwendung des eingebauten Makrorekorders. Dieser zeichnet Befehlssequenzen und die Aktionen des Benutzers auf und erstellt daraus VBA Quelltext. Hierbei nimmt der Makrorekorder jedoch "Alles" auf. Auch Fehlklicks oder falsche Eingaben werden aufgezeichnet. Der erzeugte Quelltext des Makrorekorders ist allerdings für Programmierer nicht wirklich zu gebrauchen. Die Makros sind oft ineffizient und können unter anderem keine Wiederholungen oder Entscheidungsmöglichkeiten enthalten, da der Makrorekorder diese nicht aufzeichnen kann. Der einzige wirklich nützliche Verwendungszweck für uns als Programmierer ist es, mit Hilfe des Makrorekorders einzelne Befehle herauszufinden, die wir vergessen haben oder noch nicht kennen. Diese kann man dann als Grundlage für eigene Programme verwenden.
Wir werden daher den Makrorekorder nicht verwenden und wirklich "zu Fuß" programmieren. Und zwar von Anfang an!

Was kann ich mit VBA tun?
Grundsätzlich kann ich nahezu alles mit VBA programmieren, was ich mit einer anderen Programmiersprache auch erstellen kann. Typische Einsatzgebiete für VBA sind allerdings die Büro-Automatisierung sowie die Datenbankanbindung an meine Dokumente oder die Werkzeugerstellung für meinen täglichen Arbeitsbedarf. Dabei hat man die Möglichkeit hübsche Benutzeroberflächen zu gestalten und die Microsoft Office Produkte miteinander zu kombinieren.

Was sollte ich nicht mit VBA tun?
Da VBA eine eher langsamere Programmiersprache ist, sollten Sie keine hochauflösenden Spiele mit VBA erstellen. Denken Sie immer an den vorherigen Absatz. VBA ist eine Sprache, um meinen Büro-Alltag zu erleichtern und teilweise zu automatisieren.

Kapitel 2.3: Microsoft Excel als Entwicklungsumgebung

Um mit VBA zu programmieren, benötigen wir noch eine Entwicklungsumgebung. Diese ist automatisch in allen Microsoft Office Anwendungen und somit auch in Microsoft Excel direkt eingebaut. Schauen wir uns unsere zukünftige Arbeitsumgebung etwas genauer an.

Es gibt mehrere Möglichkeiten in die Entwicklungsumgebung von VBA zu gelangen.

Variante 1: Gehen Sie im Menü auf Entwicklertools - Visual Basic

Wichtiger Hinweis: Bei Microsoft Excel Version 2010 sind die Entwicklertools standardmäßig nicht eingeblendet. Hier gehen Sie bitte auf Datei - Optionen - Menüband anpassen - in der rechten Liste setzen Sie nun einen Haken bei Entwicklertools - OK.

Für andere Versionen gelten folgende Hinweise:
Wenn Sie Microsoft Office für Mac 2010 verwenden, heißt dieser Eintrag Extras - Makros - Visual Basic Editor. Verwenden Sie ältere Versionen von Microsoft Excel finden Sie den Eintrag im Menü unter Extras - Makros - Visual Basic Editor.

Variante 2: Drücken Sie auf der Tastatur ALT + F11. Diese Variante funktioniert bei allen mir bekannten Versionen.

Es öffnet sich ein neues großes Fenster. Damit wir nun alle gemeinsam die gleiche Oberfläche haben, richten wir uns diese kurz gemeinsam ein.

Auf der linken Seite sollten Sie zwei Teilbereiche sehen. Zum einen den Projekt-Explorer und zum anderen das Eigenschaftenfenster. Sollten Sie eines der beiden nicht sehen, schalten Sie sich diese im Menü Ansicht einfach ein.
Abbildung 2.2 – Microsoft Excel als Entwicklungsumgebung
Abbildung 2.2 – Microsoft Excel als Entwicklungsumgebung

Unten sehen Sie ein längliches Fenster, das mit dem Titel Direktbereich beschriftet ist. Auch dieses Fenster können Sie sich im Menü Ansicht einblenden bzw. ausblenden. Die Fensterbereiche können Sie wie bei Microsoft Anwendungen gewohnt verschieben und in Ihrer Größe ändern. Verwenden Sie hier einfach die Maus, um das Fenster größer zu ziehen oder an einer anderen Stelle zu platzieren.

Nun sollte Ihre Entwicklungsumgebung ungefähr wie folgt abgebildet aussehen oder Ihren eigenen Wünschen entsprechen:
Abbildung 2.3 – Unser Arbeitsbereich - der Visual Basic Editor
Abbildung 2.3 – Unser Arbeitsbereich - der Visual Basic Editor

Schauen wir uns den Projekt-Explorer etwas genauer an.
Abbildung 2.4 – Der Projekt-Explorer
Abbildung 2.4 – Der Projekt-Explorer

Im Projekt-Explorer finden wir den obersten Eintrag einer Hierarchie-Ebene. Das VBAProject innerhalb unserer Excel Datei beinhaltet alle Komponenten unserer VBA Programmierung. Diesem untergeordnet gibt es insgesamt vier "Unterordner" bzw. Kategorien. Zum einen sehen wir die bereits vorhandenen "Microsoft Excel Objekte". Dort finden wir einen Eintrag zu unserer Arbeitsmappe und jeweils einen Eintrag zu jedem Arbeitsblatt in unserer Datei.
Anschließend gibt es manchmal auch Benutzeroberflächen. Diese werden unter "Formulare" angezeigt. Weitere Kategorien sind "Module", in denen Programmierer Ihre Makros speichern können, und zu guter Letzt die sogenannten "Klassenmodule", wo man innerhalb der Objektorientierten Programmierung bestimmte Klassenobjekte programmieren und speichern kann. Dazu aber später genauere Informationen, denn zum jetzigen Zeitpunkt ist das noch zu viel des Guten.

Schauen wir uns das Eigenschaftenfenster etwas genauer an.
Abbildung 2.5 – Das Eigenschaftenfenster
Abbildung 2.5 – Das Eigenschaftenfenster

Das Eigenschaftenfenster ist etwas einfacher erklärt. Klicken Sie einfach mal Ihre Tabelle1 im Projekt-Explorer an und betrachten Sie die Einträge welche im Eigenschaftenfenster folglich angezeigt werden. Z.B. finden Sie dort den Namen "Tabelle1". Wenn Sie diese Eigenschaft hier ändern, ändert sich in der Excel Ansicht auch der Registername von "Tabelle1" in Ihren neu eingegebenen Namen.
Weitere Eigenschaften sind z.B. die Sichtbarkeit (Visible) oder ob die AutoFilter eingeschaltet sind oder nicht (EnableAutoFilter). Diese Eigenschaften können Sie im Eigenschaftenfenster zentral verändern. Es gibt für viele Objekte die unterschiedlichsten Eigenschaften. Schauen Sie sich einfach in Ruhe die Möglichkeiten dazu an. Für den Anfang belassen wir es bei dieser kleinen Ausführung.

Den Direktbereich werden wir uns in einem späteren Kapitel widmen. Damit Sie sich an die neue Arbeitsumgebung gewöhnen können, blenden wir dieses allerdings direkt mit ein.

Eine Frage ist jetzt noch offen. Wie kommen wir zurück zur eigentlichen Excel Oberfläche? Schließen Sie einfach den Visual Basic Editor mit Hilfe der "X" Schaltfläche am oberen rechten Fenstereck. Alternativ können Sie auch wie gewohnt bei Microsoft Anwendungen über das Menü das aktuelle Fenster schließen.

Nun kennen wir unsere neue Arbeitsumgebung und können unser erstes kleines Makro erstellen.
X Abbildung 2.2 – Microsoft Excel als Entwicklungsumgebung
X Abbildung 2.3 – Unser Arbeitsbereich - der Visual Basic Editor
X Abbildung 2.4 – Der Projekt-Explorer
X Abbildung 2.5 – Das Eigenschaftenfenster

Kapitel 2.4: Das erste VBA Programm ("Hallo Welt!")

Nun wollen wir gemeinsam unser erstes Makro bzw. Programm erstellen. Starten Sie Microsoft Excel und gehen Sie in die Visual Basic for Applications (VBA) Entwicklungsumgebung (ALT+F11). Im Projekt-Explorer sehen Sie ein oder mehrere Tabellenblätter, je nachdem wie Sie Ihre Excel Umgebung eingerichtet haben. Suchen Sie sich ein Tabellenblatt aus und Doppel-Klicken Sie auf dieses. Das Editor Code Fenster wird geöffnet und strahlt in frischem Weiß. Das wollen wir jetzt ändern. Geben Sie den folgenden Quelltext ein.

Sub HalloWelt()
   'Kommentarzeilen werden mit einem führenden ' begonnen.
   MsgBox "Hallo Welt!"
End Sub

Quelltext 2.1 – Hallo Welt, das erste Makro
Das Programm ist nun fertig, aber wie startet man dieses jetzt?
Es gibt mehrere Möglichkeiten, wobei ich zwei davon kurz erläutern möchte.

Variante 1: Um schnell ein Programm zu testen, setzt man den Cursor einfach innerhalb der Sub ab und drückt auf die Play Taste im Menübereich. Der Cursor muss zwischen der Sub ... () und der End Sub Zeile blinken. Das Play Symbol startet immer die Routine, in der sich der aktuelle Cursor befindet.

Variante 2: Alle Makros bzw. Programme, die wir schreiben, werden aufgelistet und sind unter Entwicklertools - Makros (Bei anderen Versionen: Extras - Makros - Makros...) zu finden. Dies gilt allerdings nicht für nicht-öffentliche Prozeduren und Funktionen. Dazu kommen wir aber in einem späteren Kapitel ausführlicher zurück.
Als Shortcut können Sie ALT+F8 ausprobieren.
Abbildung 2.6 – Makros starten
Abbildung 2.6 – Makros starten

Probieren Sie ruhig beide Varianten aus. Das Ergebnis bleibt das Gleiche:
Abbildung 2.7 – Hallo Welt, Ausgabe des ersten Makros
Abbildung 2.7 – Hallo Welt, Ausgabe des ersten Makros

Somit haben wir unser erstes Makro geschrieben und getestet.

Schauen wir uns nun den zuvor geschriebenen Quelltext Schritt für Schritt gemeinsam an.

Die erste Zeile lautet: Sub HalloWelt()
Wie Sie im Editor erkennen, ist das Sub fett und in einem dunklen Blau formatiert.
Diese Formatierung zeigt Ihnen an, dass es sich um einen Systembefehl bzw. einen Systemnamen oder auch um ein sogenanntes Schlüsselwort handelt. Sub bedeutet in diesem Fall Unterroutine oder Sub-Prozedur.

Das darauf folgende HalloWelt ist der Name unserer Unterroutine, den wir selbst bestimmen können. Die Klammern setzt die Entwicklungsumgebung automatisch. Die Verwendung und Bedeutung der Klammern besprechen wir, sobald wir uns mit Prozeduren und Funktionen beschäftigen. Die erste Programmzeile bedeutet also: Hier startet eine Unterroutine mit Namen HalloWelt.

Alles, was einen Anfang hat, hat auch ein Ende. Die letzte Zeile schließt somit unsere Unterroutine ab. End Sub markiert also das Ende unseres Makros. Auch hier erkennen Sie die Formatierung als Systembefehle.

Nun schauen wir uns die zweite Zeile unseres Quelltextes an. Hier finden Sie einen deutschen Satz, der in grüner Schrift formatiert wurde. Grüne Texte sind reine Kommentare, die wir als Programmierer in den Quelltext einarbeiten können. Er wird vom Computer komplett ignoriert. Um Kommentare zu schreiben, verwendet man ein einzelnes führendes Anführungszeichen '. Die gesamte Zeile wird somit als Kommentar interpretiert. Sie können überall Kommentare hinzufügen, auch an das Ende einer Programmzeile können Sie somit Ihre Notizen verewigen. Verwenden Sie einfach das führende einzelne Anführungszeichen ' und alles was rechts von diesem Zeichen steht, ist automatisch grüner Kommentar.

Kommen wir zur dritten Zeile, dem eigentlichen Befehl unseres Makros. Hier verwenden wir den Befehl MsgBox. Dieser öffnet ein Meldungsfenster und zeigt den darauf folgenden Text an. In unserem Fall: "Hallo Welt!". Der auszugebene Text muss immer in Anführungszeichen angegeben werden, damit der Computer weiß, wo der auszugebene Text anfängt und wo er endet. Der Computer gibt die Anführungszeichen nicht mit aus. Das war unser erstes Makro im Detail.

Ein kleines Experiment. Ersetzen Sie MsgBox durch Debug.Print und starten Sie das Makro erneut. Was passiert?
Richtig, das Ergebnis wird im Direktfenster angezeigt. Somit haben wir als Programmierer eine Möglichkeit, um Ausgaben zu erzeugen, die der Benutzer später nicht sieht, aber uns Programmierern zur Verfügung steht. Beispielsweise bei der Fehlersuche.

Um allerdings komplexere Programme und Makros zu schreiben, benötigen wir noch ein wenig Programmiergrundlagen, die wir gemeinsam in den folgenden Abschnitten erarbeiten werden.
X Abbildung 2.6 – Makros starten
X Abbildung 2.7 – Hallo Welt, Ausgabe des ersten Makros

Kapitel 2.5: Programmieransätze

Ich möchte Ihnen einen kurzen Überblick über drei theoretische Programmieransätze geben, die innerhalb der Informatik verwendet werden. Am folgenden Schaubild erkennen Sie, dass Sie mit VBA alle drei Ansätze verwenden können und sogar müssen.
Abbildung 2.8 – Theoretische Programmieransätze
Abbildung 2.8 – Theoretische Programmieransätze

Starten wir mit der prozeduralen Programmierung. In der prozeduralen Programmierung wird der Quelltext in Prozeduren und Funktionen aufgeteilt. Diese können in einem oder mehreren Modulen gespeichert werden. Insgesamt programmiert man mit Hilfe von sogenannten Kontrollstrukturen. Ziel der Kontrollstrukuren ist es, die Ablaufsteuerung unseres Programms zu steuern und festzulegen. Mit ihrer Hilfe lassen sich Fallunterscheidungen programmieren. Was soll beispielsweise unser Programm tun, wenn der spätere Benutzer auf "Ja" geklickt hat oder auf "Nein". Innerhalb des Kapitels der prozeduralen Programmierung werden wir uns auch die Syntax und die Semantik von VBA anschauen. Dazu später Genaueres. Merken wir uns: Mit der prozeduralen Programmierung erstellen wir Prozeduren und Funktionen und steuern den späteren Programmablauf.

Bei der Objektorientierten Programmierung möchte ich aber noch eine Zusatzbemerkung machen. Es handelt sich bei VBA nicht um eine Objektorientierte Programmiersprache, lediglich Ansätze und Teilfunktionalitäten einer Objektorientierung können mit VBA verwendet werden. Dies sollte der Vollständigkeit halber erwähnt werden. In der Objektorientierten Programmierung arbeitet man mit Objekten, Methoden und Eigenschaften. Stellen Sie sich einmal ein Auto vor. Das Auto ist das Objekt. Eine Methode des Autos ist es, das es "vorwärts fahren" kann. Oder auch "rückwärts fahren" ist in diesem Fall eine Methode. Sozusagen etwas, was das Objekt tun oder ausführen kann. Eine Eigenschaft ist einfach zu erklären. Jedes Auto hat eine Farbe, eine Höhe, eine Breite und weitere Eigenschaften, die das Objekt beschreiben. Transferieren wir dies nun auf unsere Programmierung. Wir möchten mit Excel arbeiten. Excel besteht aus vielen vielen Zellen. Eine Zelle ist auch ein Objekt. Was kann man mit einer Zelle machen? Richtig, man kann diese markieren, kopieren, usw.. Damit haben wir schon Methoden einer Zelle gefunden. Die Eigenschaften einer Zelle sind wieder einfach erklärt. Farbe, Größe, Schriftart oder der Rahmen sind Eigenschaften der Zelle. Mit Hilfe des objektorientierten Ansatzes ist es uns möglich mit den Objekten zu arbeiten. Sogenannte Objektmodelle stellen uns alle notwendigen Objekte inkl. der dazugehörigen Methoden und Eigenschaften zur Verfügung. Erinnern Sie sich noch an das Eigenschaftenfenster der Entwicklungsumgebung? Dort werden genau diese Eigenschaften für uns angezeigt und wir können diese schnell und komfortabel editieren.

Zu guter Letzt die Ereignissteuerung. Diese ermöglicht uns als Programmierer, auf Ereignisse zu reagieren und je nach Vorfall von uns gewünschte Befehle oder sogar ganze Makros auszuführen. Dieser Programmieransatz ermöglicht es uns, dass wir auf den Benutzer und dessen Eingaben reagieren können. Ein Beispiel: Unser Benutzer ändert eine Zelle. Er schreibt eine andere Zahl hinein. Wenn er dies tut, wird ein sogenannter Event ausgelöst. Es gibt viele bereits vordefinierte Events in VBA. Diese können wir verwenden um unsere Befehle und Makros bei einer Auslösung eines solchen Events zu starten. Genaueres hierzu behandeln wir ausführlich in einem separaten Kapitel. Eine weitere Möglichkeit der Ereignissteuerung ist es, dass wir Benutzeroberflächen erstellen können. Denn wenn der Benutzer einen Knopf drückt, wird auch hier ein Event ausgelöst hinter welchem wir unsere Befehle programmieren können.

Mit diesen Ansätzen bzw. Theorien können wir nun vollständige Makros und Programme erstellen, die uns das Leben im Büro erleichtern können. Jeder der drei Ansätze wird in einem separaten Kapitel ausführlich mit Beispielen besprochen. Diese Kapitel bauen allerdings aufeinander auf und können daher nicht übersprungen werden.

Konkret für unsere Lernthemen bedeuten die nächsten drei Kapitel die folgenden Inhalte:

Im Kapitel der prozeduralen Programmierung werden wir alle Grundlagen und alle wichtigen Befehle von VBA durchsprechen. Die gesamte Ablaufsteuerung unserer Programme werden wir hier üben und vertiefen. Hier bauen wir gemeinsam das Fundament unseres Programmierwissens.

Im Kapitel der Objektorientierung werden wir uns mit verschiedenen Objekten beschäftigen. Beispielsweise den Tabellenblättern oder den Zellen, die wir in Excel stets verwenden. Somit stellen wir eine Verbindung mit der Ablaufsteuerung und den Grundbefehlen und den eigentlichen Excel-Objekten her. Auch weitere Objekte werden wir uns anschauen.

Im Kapitel der Ereignissteuerung besprechen wir die Möglichkeit, grafische Benutzeroberflächen für unsere Programme zu erstellen. Desweiteren lernen wir, wie wir auf Ereignisse reagieren können. Beispielsweise wenn ein Benutzer eine Zelle verändert, auf ein anderes Arbeitsblatt wechselt oder auf speichern drückt. Es gibt viele Ereignisse auf die wir als Programmierer reagieren können.

Die Summe bzw. das Zusammenspiel aller drei Ansätze versetzt uns anschließend in die Lage, vollständige Programme und Makros inkl. Benutzeroberflächen zu erstellen.
X Abbildung 2.8 – Theoretische Programmieransätze

Kapitel 3: Prozedurale Programmierung und VBA Grundlagen

In diesem Kapitel möchte ich Ihnen den ersten unserer drei Programmieransätze vorstellen. Die prozedurale Programmierung wird auch als problemorientierter Ansatz gesehen. Hierbei rückt zuerst das zentrale und zu lösende Problem in den Mittelpunkt des Programmierers. Wie im vorherigen Kapitel schon angesprochen, wird der Lösungsweg als Algorithmus formuliert und anschließend in einer Programmiersprache codiert. Das codierte Programm kann auch in mehrere kleine Programme zerlegt werden. Diese werden unter anderem als Unterprogramm / -prozeduren (Sub-Procedure) bezeichnet.

In der prozeduralen Programmierung wird die Umsetzung des sogenannten EVA Prinzips vorgenommen.

Abbildung 3.1 – Eingabe - Verarbeitung - Ausgabe
Abbildung 3.1 – Eingabe - Verarbeitung - Ausgabe

Betrachten wir das Bild, dann sehen wir Eingabegeräte und Ausgabegeräte. Unsere Aufgabe als Programmierer ist es, die Eingaben in unser Programm aufzunehmen, diese zu verarbeiten und anschließend die ermittelten oder produzierten Ergebnisse auf bestimmten Ausgabegeräten wiederzugeben. Dieses Verfahren der Programmierung nennt sich das EVA-Prinzip.

Bevor wir uns aber mit den ersten Befehlen und Programmbausteinen beschäftigen, möchte ich Ihnen zunächst einige Programmier- sowie VBA Grundlagen erläutern. Hier sollten wir zuerst die wichtigsten Begriffe verstehen, bevor wir ans eigentliche Programmieren gehen. Gerade bei der Programmierung könnten sonst Fehlermeldungen oder Hinweise der Entwicklungsumgebung ganz schnell in großen Fragezeichen enden.

Eine Programmiersprache besitzt, wie eine Sprache der Menschen, eine Grammatik und Vokabeln. Auch können wir nicht wie wild Wörter aneinander reihen, einen logischen Zusammenhang sollte es schon geben.

Diese beiden Gegebenheiten werden bei Programmiersprachen als Syntax und Semantik bezeichnet.

Syntax
Die Syntax legt die Äußerlichkeiten der Programmiersprache fest. Beispielsweise das Vokabular, erlaubte Wörter und Befehle und deren Schreibweisen. Beispiel: "Kerze" – besteht aus 5 Zeichen aus den 26 verfügbaren Buchstaben des deutschen Alphabets und der Anfangsbuchstabe wird groß geschrieben.

Semantik
Die Semantik der Programmiersprache deckt die Grammatik und die Logik der Programmiersprache ab. Hier wird die Bedeutung von Wörtern, deren Deklaration und Anweisungen festgelegt. Erinnern Sie sich an das semiotische Dreieck? Beispiel: "Band" – Es kann sich um ein Video-Band eine Musikgruppe oder z.B. ein Haarband handeln.
X Abbildung 3.1 – Eingabe - Verarbeitung - Ausgabe

Kapitel 3.1: Die Syntax bei VBA

Wie in jeder anderen Programmiersprache auch, müssen wir uns bei der Programmierung mittels VBA auch an eine vorgegebene Syntax halten. Auf die wichtigsten Punkte möchte ich kurz eingehen, da wir diese Regeln definitiv einhalten müssen. Sie sind leider nicht optional. Die für Sie als (Neu-)Einsteiger wichtigsten Regeln möchte ich Ihnen folgend erklären.

1) Es wird genau eine Anweisung pro Zeile eingegeben
Somit bedeutet diese syntaktische Vorschrift, dass das Zeilenende auch das Anweisungsende ist. Eine Ausnahme bildet das Sonderzeichen ":" (Doppelpunkt), mit diesem können wir zwei oder mehrere Anweisungen innerhalb einer Zeile platzieren. (Hinweis: Um die Übersichtlichkeit und Lesbarkeit unserer Quelltexte zu erhöhen, sollten wir bei der Regelung "Eine Anweisung pro Zeile" bleiben.) Eine Zeile kann wie in einem Schreibprogramm umgebrochen werden. Dazu verwendet man das Sonderzeichen "_" (Unterstrich) und führt die Anweisung in der nächsten Zeile fort. Zweck dieser Syntaxoptionalität ist erneut die Lesbarkeit unseres Quelltextes. (Hinweis: Unsere Programme sollten immer maximal eine Seite breit sein. Sobald wir im Quelltext auch nach links und rechts scrollen können, wird es bei größeren Programmen sehr schnell unübersichtlich.)

2) Die Groß- und Kleinschreibung ist nicht signifikant
Große und kleine Buchstaben sind in VBA unterschiedliche Buchstaben. Deshalb müssen wir darauf achten, wenn wir Groß- und Kleinschreibung in unseren Programmen verwenden. Unsere Entwicklungsumgebung passt die Schreibweise jedoch automatisch für uns an. Es gibt jedoch auch Optionen, damit die Groß- und Kleinschreibung gleich behandelt wird.

3) Kommentare werden mit einem " ' " (Hochkommata) eingeleitet
Um Kommentare in unseren Quelltext aufzunehmen, wird das Kommentar einleitende Zeichen " ' " (Hochkommata) verwendet. Bis zum Zeilenende wird der nach dem Hochkommata geschriebene Text als reiner Kommentartext gesehen und vom Compiler vollständig ignoriert. Kommentare werden grün dargestellt und dienen dem Programmierer als eine Art Dokumentation im Quelltext, auch Inline-Dokumentation genannt. Machen Sie reichlich Gebrauch von Kommentaren, es erleichtert Ihnen später das Lesen Ihrer Programme und Makros.

4) Regeln für Namen für Objekte, Dinge und Beschriftungen
Namen für Objekte und Beschriftungen müssen nach folgenden Regeln vergeben werden:
  • Die maximale Länge eines Namens beträgt 255 Zeichen
  • Das erste Zeichen muss immer ein Buchstabe sein
  • Nach dem ersten Zeichen sind Buchstaben, Ziffern und Unterstriche erlaubt (Hinweis: Die Umlaute des deutschen Alphabets funktionieren theoretisch, man sollte aber lediglich die 26 Buchstaben ohne Umlaute verwenden, um auch in anderen Sprachen vollständig kompatibel zu bleiben.)
  • Es dürfen keine Leerzeichen oder Sonderzeichen verwendet werden
  • Groß- und Kleinschreibung wird automatisch angepasst
  • Sogenannte Schlüsselwörter dürfen für Namen nicht verwendet werden. (Beispielsweise das Wort Sub (Subprozedur) darf nicht verwendet werden.)
Die Entwicklungsumgebung von VBA beherrscht Maus-Over Effekte und bietet bei Eingabe von Befehlen direkt Hinweise zu diesen an. Des Weiteren wird der Quelltext automatisch eingefärbt. Schlüsselwörter der Programmiersprache werden blau und Kommentare grün gefärbt. Fehler werden rot dargestellt. Auch hier möchte ich Ihnen die dafür vorgesehenen Fachbegriffe nicht vorenthalten. Die automatische Färbung des Quelltextes wird als "Syntax Colorization" und die intelligente Anzeige von Angaben wird "IntelliSense" genannt. Somit unterstützt uns die Entwicklungsumgebung bei der Einhaltung der korrekten Syntax. Nur um die Semantik müssen wir uns leider selbst kümmern.

Kapitel 3.2: Variablen und Konstante

Um mit einer Programmiersprache bzw. einem Computer arbeiten zu können, benötigen wir einige Hilfsmittel. Der wohl wichtigste Bestandteil einer Programmiersprache sind die Variablen und Konstanten.

Eine Variable ist ein Speicherplatz für Informationen im Hauptspeicher unseres Computers. Sie bekommt einen Namen unter den wir die Variable mit unseren Befehlen und Anweisungen ansprechen können. Eine Variable kann abhängig von ihrem Datentyp bestimmte Inhalte und Mengen aufnehmen. Sie bekommt zusätzlich zu ihrem Namen auch eine physikalische Adresse im Arbeitsspeicher unseres Computers. Dies geschieht allerdings automatisch.
Abbildung 3.2 – Visualisierung einer Variable
Abbildung 3.2 – Visualisierung einer Variable

Aber was ist ein Datentyp?
Stellen Sie sich eine große Regalwand vor. Sie ist unser Computerhauptspeicher. Das Regal hat ganz viele verschiedene Schubladen und Fächer. Alle sind verschieden groß und haben unterschiedliche Farben. In der Programmiersprache gibt es für jede Schubladengröße und -form und jede Fachgröße und –form eine Beschreibung. Diese Beschreibung bezeichnet man als Datentyp. Kurz, der Datentyp sagt, wie groß meine Variable ist und was ich in ihr speichern kann. Die genauen Datentypen schauen wir uns später genauer an.

Eine Sonderform der Variablen ist die sogenannte Konstante. Stellen Sie sich eine Konstante wie eine schreibgeschützte Variable vor. Ihr Inhalt wird einmalig festgelegt und bleibt anschließend unveränderlich. Auch Konstanten haben Datentypen und bekommen einen einzigartigen Namen um sie ansprechbar zu machen. Natürlich werden auch Konstanten im Arbeitsspeicher abgelegt und erhalten automatisch eine physikalische Adresse zugewiesen.

Das klassische Einsatzgebiet einer Konstanten ist die sogenannte Parametrisierung. Wir werden in späteren Kapiteln Einsatzgebiete der Konstanten kennenlernen und auch die Parametrisierung noch genauer unter die Lupe nehmen. Für den Augenblick reicht es, Konstanten für feste Werte wie zum Beispiel Faktoren zu verwenden. Ein klassisches Beispiel ist die mathematische Zahl PI. Sie wird einmal festgelegt und bleibt anschließend unverändert. Ein weiteres Beispiel kann die Mehrwertsteuer sein, wenn wir mit Rechnungen und Geldbeträgen arbeiten.
X Abbildung 3.2 – Visualisierung einer Variable

Kapitel 3.3: Datentypen in VBA

Beschäftigen wir uns nun mit den VBA typischen Datentypen, damit unsere Variablen und Konstanten mit Inhalt gefüttert werden können.

Ich habe Ihnen eine kleine Tabelle aufbereitet, in der Sie die wichtigsten Datentypen für Ihre tägliche Arbeit finden. Die Datentypen mit dem Kürzel (!) hinter dem Namen sind Datentypen, mit denen man eigentlich jederzeit auskommt. Trotzdem schreibe ich Ihnen einige Weitere auf, damit Sie bei fremden Quelltexten wissen, was gemeint ist. Es gibt allerdings mehr Datentypen als hier aufgeführt. Eine kleine Anmerkung zum nicht markierten Datentyp für ein Datum. Ich habe schon oft schlechte Erfahrungen mit dem Datentyp Date gemacht. Gerade bei großen Firmen oder der Verwendung von mehreren Datumsformaten. Daher empfehle ich ein Datum einfach als Text zu speichern. Es gibt später Umwandlungsfunktionen um mit dem Datum rechnen zu können. Dazu zeige ich Ihnen an der entsprechenden Stelle beide Varianten im Vergleich. Es bleibt also Ihnen überlassen, wie Sie persönlich mit Datumsinformationen umgehen möchten.

Datentypname Bedeutung Wertebereich Speicherbedarf (in Bytes)
Byte Ganzzahl 0 bis 255
Beispiel: 177
1
Boolean (!) Boolescher Wert True, False (Ja, Nein)
Beispiel: True
2
Integer (!) Ganzzahl -32768 bis 32767
Beispiel: -2755
2
Long (!) Ganzzahl Ca. -2 bis +2 Milliarden
Beispiel: 379999
4
Single Kommazahl Beispiel: 31,99 4
Double (!) Kommazahl Beispiel: 31,999998 8
Currency Währung   8
Date Datum 01.01.100 bis 31.12.9999 8
String (!) Zeichenketten / Text Text und Zeichen jeglicher Art.
Beispiel: "ABC/123!"
8 + Anzahl Zeichen
Variant Dynamischer Datentyp Passt sich den Informationen automatisch an. >= 16
Object (!) Datentyp für Objekte Passt sich der Größe des Objektes an. Je nach Objekt

Abbildung 3.3 – Übersicht der wichtigsten Datentypen

Die Spalte Datentypname enthält den VBA Namen für den entsprechenden Datentyp. Alle Datentypnamen sind auch Schlüsselwörter und dürfen nicht als Namen für Konstanten oder Variablen oder andere Objekte verwendet werden. Die Spalte Bedeutung zeigt einen umgangssprachlich verwendeten Namen für den Datentyp. Die Spalte Wertebereich zeigt Ihnen, was in einer Variablen von diesem Datentyp gespeichert werden kann. In der letzten Spalte sehen Sie den Speicherbedarf eines solchen Datentyps.

Ein Beispiel: Schauen wir uns den Datentyp Integer an. Er steht für eine Ganzzahl und kann eine Zahl im Wertebereich von -32768 bis 32767 speichern. Dafür benötigt der Datentyp 4 Bytes vom Arbeitsspeicher. Sie sehen zusätzlich, dass andere Datentypen, z.B. der String oder Double, bereits 8 und mehr Bytes verbrauchen.

Einen Hinweis möchte ich noch bezüglich des Datentyps Variant geben. Der Datentyp Variant ist, wie der Name schon andeutet, ein variabler Datentyp, der sich automatisch der Information anpasst, die er aufnehmen soll. Dafür benötigt er allerdings auch sehr viel Speicherplatz im Vergleich zu anderen Datentypen. Daher meine Bitte: Verwenden Sie immer die passenden Datentypen für Ihre Programme. Wenn Sie wissen, dass Sie Zahlen von 1 bis 10 speichern möchten, verwenden Sie den Datentyp Byte. Damit sparen Sie 3 Bytes pro Zahl, die Sie in Variablen speichern. Bei großen Programmen kommen dort schnell einige Bytes zusammen. Auch in der heutigen Zeit, wo wir Gigabytes an Arbeitsspeicher zur Verfügung haben, sollten wir trotzdem effizient arbeiten und nicht zu verschwenderisch mit unseren Ressourcen umgehen.

Einfache und Komplexe Datentypen
Neben normalen Datentypen können wir die Datentypen auch kombinieren und somit komplexe Datentypen schaffen. Diese Datentypen komplexer Natur werden in der VBA Programmierung mit dem Schlüsselwort Type eingeleitet. Wir werden allerdings in unseren VBA Makros lediglich normale Datentypen verwenden. Sollten Sie Interesse an Details zu komplexen Datentypen haben, können Sie im Internet ganz einfach nach dem Schlagwort VBA und Type suchen. Mit den hier erlernten Grundlagen und Begriffen sollten Sie problemlos in der Lage sein, die im Internet publizierten Informationen zu verstehen. Im normalen Alltag benötigt man eigentlich keine komplexen Datentypen. Diese könnten in der Datenbankprogrammierung oder in höheren Objektorientierungen sinnvoll sein.

Benennung von Variablen und Konstanten
Wie in einem früheren Abschnitt besprochen, gelten für uns syntaktische Regeln, wenn wir mit VBA programmieren. Zusätzlich möchte ich Ihnen jedoch noch einen Vorschlag unterbreiten, der die Lesbarkeit unserer Makros enorm steigert und vereinfacht. Mit sogenannten Namenskonventionen können wir direkt erkennen, mit was wir gerade arbeiten.

Als konkretes Beispiel: Sie haben eine Integer Variable, die Sie verwenden um Zellen zu zählen.
Mein Namensvorschlag wäre in diesem Fall iZellenZaehler oder nach der sogenannten ungarischen Notation auch intZellenZaehler. Wenn Sie mehr über die ungarische Notation wissen möchten, können Sie jede Suchmaschine mit diesem Begriff "füttern" und bekommen einige Ergebnisse präsentiert. Für kleine Makros, die Sie im Büro verwenden, würde es theoretisch nicht notwendig sein eine solche "offizielle" Notation zu verwenden, es kann aber nicht schaden diese trotzdem zu lernen und anzuwenden.
Am Präfix int oder auch nur einem i erkennt man den Datentyp Integer der Variablen. ZellenZaehler ist in diesem Fall die Funktion oder die Bestimmung der Variablen. Allerdings verwende ich keinen Umlaut, sondern ein "ae" für das zweite Wort. Ganz schlechte Namen sind z.B. einzelne Buchstaben oder ein Buchstabe mit einer laufenden Nummer. Quelltexte werden so ganz schnell unleserlich. Und im Fehlerfall sucht man durch solche nicht funktionalen Namen erheblich länger nach einem Fehler als mit der Verwendung von Namen für Variablen und Konstanten, welche Auskunft über die Funktion und den jeweiligen Datentyp geben.

Ich habe Ihnen eine kleine Übersichtstabelle für Präfixe erstellt, welche Sie gerne so übernehmen können aber nicht müssen. Es handelt sich um eine rein kosmetische Option. Sie können selbstverständlich Ihre eigenen Präfixe und Namenskonventionen entwickeln. Es hilft definitiv bei der Lesbarkeit der Quelltexte. Vor allem, wenn Sie einige Zeit nicht mehr in Ihre Makros reingeschaut haben. Dabei habe ich nur die am häuftigsten verwendeten Datentypen aufgenommen.

Datentyp Präfix-Vorschläge Beispiel Namen - individuelle Notation Beispiel Namen - ungarische Notation
Integer i oder int iAnzahl, iEingabeZahl intAnzahl, intEingabeZahl
Long l oder lng lZeilenNummer, lAnzahlDateien lngZeilenNummer, lngAnzahlDateien
Double d oder dbl dRechnungsbetrag, dBruchzahl dblRechnungsbetrag, dblBruchzahl
String s oder str sBenutzerEingabe, sMeinBerichtsText strBenutzerEingabe, strMeinBerichtsText
Boolean b oder bln bSpeichern, bFehlerGefunden blnSpeichern, blnFehlerGefunden
Object o oder obj oExcelDatei, oArbeitsblatt objExcelDatei, objArbeitsblatt

Abbildung 3.4 – Vorschlag für Variablennamen-Präfixe

Das Arbeiten mit Variablen und Konstanten
Damit wir Variablen und Konstanten verwenden können, müssen wir diese im Arbeitsspeicher anlegen. Dieses Anlegen nennt man deklarieren bzw. eine Deklaration. Schauen wir uns eine Deklaration einer Integer Variablen an.

Die Deklaration:
Dim intZellenZaehler As Integer

Eingeleitet wird die Deklaration mit dem Schlüsselwort Dim. Ausgeschrieben bedeutet dies "Dimension" bzw. "dimensionieren". Anschließend kommt der Name der Variablen, gefolgt vom Schlüsselwort As und dem gewünschten Datentyp. In unserem Fall eine Ganzzahl vom Datentyp Integer.

Ähnlich funktioniert die Deklaration bei Konstanten:
Const dblUMRECHNUNG_EUR_DM As Double = 1.95583

Achtung: In VBA ist das Dezimaltrennzeichen der Punkt und nicht das Komma!

Eingeleitet wird eine Konstantendeklaration durch das Schlüsselwort Const. Gefolgt vom Konstantennamen dblUMRECHNUNG_EUR_DM. Sie sehen, ich verwende erneut den Datentyp-Präfix und schreibe die Konstante zusätzlich vollständig in Großbuchstaben. Somit erkenne ich direkt im Quelltext, ob ich eine Konstante oder eine Variable vor mir habe. Anschließend kommt, genau wie bei der Variablendeklaration, das Schlüsselwort As gefolgt vom Datentyp Double (Kommazahl). Bei Konstanten legt man außerdem direkt den dazugehörigen Wert / Inhalt fest. Deshalb folgt anschließend im obigen Beispiel das Gleichheitszeichen (auch Zuweisungsoperator genannt) und der Umrechnungsfaktor von DM auf EUR.

Nun können Sie beliebig viele Variablen und Konstanten in Ihren Makros deklarieren und verwenden.

Um auch hier wieder die Übersichtlichkeit unserer Makros zu erhöhen, werden wir alle Variablen als Erstes in unseren Prozeduren und Funktionen deklarieren. Damit man auch keine vergisst, gibt es eine sogenannte Compileroption, die uns dazu zwingt.
Dazu schreiben Sie ganz oben in jedes Ihrer Code-Module als erste Zeile den folgenden Befehl Option Explicit. Diese Option erzwingt dann für dieses Code-Modul die Variablendeklaration. Wenn das Programm gestartet wird und eine oder mehrere Variablen nicht deklariert wurden, wird eine Fehlermeldung ausgegeben. Sie können alternativ auch in der Entwicklungsumgebung die folgende Einstellung im Menü Extras - Optionen vornehmen:
Abbildung 3.5 – Option Explicit
Abbildung 3.5 – Option Explicit

Variablen und Konstanten im Einsatz
Folgend habe ich Ihnen noch einmal einige Beispiele zur Deklaration und zur Verwendung von Variablen und Konstanten zusammengestellt. Kopieren Sie dieses Beispiel in ein leeres Modul und probieren Sie es in Ruhe aus. Versuchen Sie auch einmal Teile abzuändern und herauszufinden, was dann passiert und warum es passiert.

Option Explicit

Sub ArbeitenMitVariablenUndKonstanten()
   'Deklaration von Variablen
   Dim iZahl As Integer
   Dim bAntwort As Boolean
   Dim sText As String

   'Deklaration von Konstanten
   Const iMWST As Integer = 19
   Const dFAKTOR As Double = 0.5

   'Verwendung von Variablen und Konstanten
   iZahl = 5
   iZahl = iZahl + dFAKTOR 'Achtung bei verschiedenen Datentypen
   iZahl = iMWST
   bAntwort = True
   bAntwort = False
   sText = “Hallo, ich bin ein Satz in einer Variablen.“
   sText = “Hallo,“ & “mit einem kaufmännischen & kann“ & _
      “ ich Texte miteinander verknüpfen!“

   'Ausgabe von Variableninahlten
   MsgBox iZahl
   MsgBox sText

End Sub

Quelltext 3.1 – Arbeiten mit Variablen und Konstanten

Dieser kleine Beispielquelltext zeigt Ihnen, dass Sie mit Variablen und Konstanten auch rechnen können. Dabei müssen Sie auf die Datentypen achten! Wenn Sie z.B. eine Multiplikation von zwei Kommazahlen in eine Integer Variable speichern, wird alles hinter dem Dezimaltrennzeichen abgeschnitten.
X Abbildung 3.5 – Option Explicit

Kapitel 3.4: Einfache Ein- und Ausgaben

Ich möchte Ihnen in diesem Abschnitt zwei VBA Befehle / Funktionen an die Hand geben. Ich werde Ihnen allerdings zuerst diese Funktionen stark verkürzt vorstellen, da wir für die korrekte Erklärung Begriffe und Inhalte aus späteren Kapiteln benötigen. Allein der Begriff Funktion würde an dieser Stelle schon zu viel sein. Aber seien Sie beruhigt, die vollständigen Erklärungen werden wir nach und nach zu den zwei Funktionen hinzufügen. Mit Hilfe dieser können wir unsere ersten EVA-Programme erstellen.

Wie können wir Daten ausgeben? Dazu verwenden wir die Funktion MsgBox.

Ein kleines Beispiel:

Option Explicit

Sub IchTesteEineMessageBox()
   Dim sAusgabetext As String
   sAusgabetext = "Hallo, ich bin die Zeichenkette, die der Programmierer ausgeben möchte!"
   MsgBox sAusgabetext
End Sub

Quelltext 3.2 – Ausgaben mit MsgBox

Gehen wir den Quelltext kurz gemeinsam durch. Option Explicit benutzen wir wie immer in jedem Modul als Erstes ganz oben. Damit wir das nicht vergessen, schreibe ich es am Anfang auch immer wieder als Erstes hin. Als Zweites haben wir uns eine Variable vom Typ String deklariert. Anschließend haben wir einen Text in der Variablen gespeichert. Und nun kommt die Ausgabe des Variableninhaltes mit dem Befehl: MsgBox sAusgabetext.

Das Ergebnis des Programms ist folgendes:
Abbildung 3.6 – Ausgabebeispiel einer MsgBox
Abbildung 3.6 – Ausgabebeispiel einer MsgBox

Um etwas ausgeben zu können, müssen wir zuvor auch etwas eingeben können. Dazu verwenden wir die Funktion InputBox.

Ein kleines Beispiel:

Option Explicit

Sub NunTestenWirEinUndAusgabe()
   Dim sEingabeText As String
   sEingabeText = Inputbox("Bitte geben Sie etwas Text ein:")
   MsgBox sEingabeText
End Sub

Quelltext 3.3 – Ein- und Ausgaben mit InputBox und MsgBox

Gehen wir erneut den Quelltext zusammen Schritt für Schritt durch.
Als Erstes deklarieren wir uns eine Variable vom Typ String um einen Eingabetext darin zu speichern. In dieser Variablen möchten wir nun die Eingabe speichern. Dazu verwenden wir die Funktion InputBox wie eine Variable. Wenn der Computer den Befehl InputBox sieht, erstellt er die Benutzereingabe mit Hilfe eines kleinen Fensters. Die Eingabe, die der Benutzer dann tätigt, wird sozusagen in der InputBox gespeichert. Und genau diesen Inhalt kann ich einer anderen Variablen mit Hilfe des Gleichheitszeichen zuweisen. Also: sEingabetext = InputBox(...). Anschließend gebe ich die Eingabe direkt noch einmal mit MsgBox aus, um zu kontrollieren, ob es auch funktioniert hat.

Das Ergebnis sieht schließlich so aus:
Abbildung 3.7 – Ein- und Ausgabebeispiel mit einer InputBox und einer MsgBox
Abbildung 3.7 – Ein- und Ausgabebeispiel mit einer InputBox und einer MsgBox
X Abbildung 3.6 – Ausgabebeispiel einer MsgBox
X Abbildung 3.7 – Ein- und Ausgabebeispiel mit einer InputBox und einer MsgBox

Übungsaufgabe - Ein einfaches EVA-Programm

Kommen wir zu einer kleinen Übungsaufgabe:
Fragen Sie in einem Programm drei Ganzzahlen vom Benutzer nacheinander ab. Anschließend addieren Sie diese und geben das berechnete Ergebnis wieder an den Benutzer aus.

Ein Lösungsvorschlag:

Option Explicit

Sub DieErsteAufgabe()

   'Variablen fuer die Eingabe des Benutzers
   Dim lEingabeZahl1 As Long
   Dim lEingabeZahl2 As Long
   Dim lEingabeZahl3 As Long

   'Eine Variable um das Ergebnis zu speichern
   Dim lErgebnis As Long

   'Abfrage der 3 Ganzzahlen vom Benutzer
   lEingabeZahl1 = Inputbox("Bitte geben Sie die erste Ganzzahl ein:")
   lEingabeZahl2 = Inputbox("Bitte geben Sie die zweite Ganzzahl ein:")
   lEingabeZahl3 = Inputbox("Bitte geben Sie die dritte und letzte Ganzzahl ein:")

   'Die Berechnung
   lErgebnis = lEingabeZahl1 + lEingabeZahl2 + lEingabeZahl3

   'Das Ergebnis dem Benutzer anzeigen
   MsgBox "Das Ergebnis der Addition lautet: " & lErgebnis

End Sub

Quelltext 3.4 – Lösungsvorschlag zu Übungsaufgabe - Ein einfaches EVA-Programm

Ich möchte noch einige Anmerkungen hinzufügen. Es gibt bei Programmierungen nicht "die richtige oder die falsche Lösung". Wenn ein Algorithmus bzw. ein Programm seine Aufgabe erfolgreich löst, ist die Lösung bzw. das Programm funktionell und somit einsetzbar. Wie der Programmierer dabei vorgeht, ist normalerweise ihm selbst überlassen. Genau wie jeder Handwerker seine eigenen Werkzeuge und Vorlieben sowie Kniffe und Tricks bei der Vorgehensweise hat. Natürlich gibt es oft Verbesserungspotential im Bezug auf Effizienz oder Performance. Aber lassen Sie sich davon nicht entmutigen, sondern nehmen Sie Vorschläge und Verbesserungen dankend an und bauen Sie diese in Ihren Erfahrungsschatz ein. Ein guter Programmierer hat niemals ausgelernt!

Was passiert eigentlich, wenn der Benutzer keine Ganzzahl eingibt, sondern z.B. ein "A", sprich eine Zeichenkette?
Abbildung 3.8 – Was passiert bei Fehleingaben?
Abbildung 3.8 – Was passiert bei Fehleingaben?

Es gibt eine Fehlermeldung. Denn einen String in eine Long Variable zu speichern - das klappt leider nicht! Daher müssen wir als Programmierer dafür Sorge tragen, dass alle Eingaben geprüft werden und keine Fehlermeldungen provoziert werden können. Diese Prüfung wird auch als Plausibilisierung von Benutzereingaben bezeichnet. Dafür benötigen wir aber noch einige Inhalte der folgenden Kapitel. Daher werden wir uns später ausführlich um das Thema Plausibilisierung kümmern.

Nun sind wir in der Lage Informationen im Computer zu speichern und wieder abzurufen. Als nächstes beschäftigen wir uns mit den sogenannten Kontrollstrukturen, um den Programmablauf steuern zu können.
X Abbildung 3.8 – Was passiert bei Fehleingaben?

3.5: Kontrollstrukturen (Programmablauf)

Das Entscheidenste bei der prozeduralen Programmierung ist der sogenannte Programmablauf. Die Steuerung des Computers, welche Befehle er wann und in welcher Reihenfolge ausführen soll, müssen vom Programmierer festgelegt werden. Dazu verwenden wir die sogenannten Kontrollstrukturen. Es gibt lediglich vier Kontrollstrukturen, die wir benötigen um vollständige Abläufe zu erstellen.
  • Die Folge, Sequenz
  • Die Wiederholung (Schleife), Iteration
  • Die Alternative (Auswahlentscheidung), Selektion
  • Der Aufruf von Programmen und Unterprogrammen
Nehmen wir uns die erste der vier Kontrollstrukturen, die sogenannte Folge oder auch Sequenz genannt, vor. Hier werden Befehle einfach chronologisch, sprich von oben nach unten, ausgeführt und abgearbeitet. Grafisch dargestellt sieht eine Sequenz wie folgt aus.
Abbildung 3.9 – Kontrollstruktur - Sequenz / Folge
Abbildung 3.9 – Kontrollstruktur - Sequenz / Folge

Die zweite Kontrollstruktur ist die sogenannte Wiederholung oder auch Iteration genannt. Mit ihr können wir beliebige Abläufe mehrfach ausführen, ohne die Befehle mehrfach im Quelltext programmieren zu müssen.

Abbildung 3.10 – Kontrollstruktur - Wiederholung / Iteration
Abbildung 3.10 – Kontrollstruktur - Wiederholung / Iteration

Jede Schleife hat einen Startpunkt, auch Schleifenkopf genannt, sowie ein Ende, den sogenannten Schleifenrumpf. Alles, was zwischen Kopf und Rumpf an Befehlen oder auch anderen Kontrollstrukturen programmiert wird, ist Wiederholungsbestandteil. Wir markieren somit den zu wiederholenden Bereich unseres Quelltextes. Es gibt zwei Typen von Iterationen. Zum Einen die sogenannte Zählschleife. Hier wissen wir als Programmierer wie oft wir etwas wiederholen möchten. Beispielsweise 10 mal. Die zweite Art ist die Bedingungsschleife. Wie der Name schon sagt, handelt es sich um eine Schleife, die an eine Ablaufbedingung geknüpft ist. Beispielsweise werden Befehle solange wiederholt, bis das Programm am Seitenende angekommen ist. Egal ob 10 mal oder bis zum Seitenende, beides sind sogenannte Durchlaufbedingungen.

Kommen wir zur vorletzten der vier Kontrollstrukturen. Mit Hilfe der Alternative, oder auch Selektion genannt, können wir den Programmablauf splitten und Fallunterscheidungen in unseren Ablauf bringen. Ein einfaches Beispiel: Der Benutzer klickt auf "Ja" oder auf "Nein". Je nach seiner Auswahl sollen unterschiedliche Dinge passieren bzw. sollen unterschiedliche Programmteile durchlaufen werden.

Abbildung 3.11 – Kontrollstruktur -  Einfache Selektion / Alternative
Abbildung 3.11 – Kontrollstruktur - Einfache Selektion / Alternative

Es gibt auch hier zwei Typen von Selektionen. Zum Einen eine einfache Selektion, welche zwischen zwei Ablaufwegen entscheidet, und zum Anderen eine komplexe Selektion, welche zwischen vielen Möglichkeiten unterscheidet.

Abbildung 3.12 – Kontrollstruktur -  Komplexe Selektion / Alternative
Abbildung 3.12 – Kontrollstruktur - Komplexe Selektion / Alternative

Zu guter Letzt die einfachste Kontrollstruktur: Der Aufruf. Diese wird verwendet, um andere Programme oder Unterroutinen unserer Programmierung aufzurufen.

Somit haben wir alle vier Kontrollstrukturen besprochen. Jetzt verbinden wir die Theorie mit VBA Befehlen und Anweisungen und schauen uns konkrete Beispiele an. Anschließend habe ich auch wieder eine kleine Übung für Sie.

Beispiel für eine Sequenz / Folge

Schauen wir uns den folgenden Ablaufplan sowie den dazugehörigen Quelltext an:
Abbildung 3.13 – Visualisierte Sequenz zum Quelltextbeispiel
Abbildung 3.13 – Visualisierte Sequenz zum Quelltextbeispiel

Hier sehen Sie eine einfache Sequenz. Ein simpler chronologischer Ablauf von oben nach unten. Wir beginnen mit Variablendeklarationen, fragen Informationen vom Benutzer ab, begrüßen ihn, bearbeiten ein paar Berechnungen und geben ein Ergebnis aus. Erinnern Sie sich noch an das EVA Prinzip? (Eingabe-Verarbeitung-Ausgabe)

Als Quelltext könnte man diesen Ablauf wie folgt darstellen:

Option Explicit

Sub MeineErsteSequenz()

   'Variablen anlegen
   Dim sEingabeName As String
   Dim iGanzeZahl As Integer

   'Namen abfragen
   sEingabeName = InputBox(“Bitte geben Sie Ihren Namen ein:“)

   'Begruessung
   MsgBox “Hallo “ & sEingabeName

   'Rechnen
   iGanzeZahl = 4
   iGanzeZahl = iGanzeZahl + 2

   'Ergebnis ausgeben
   MsgBox “Die Ganze Zahl hat den Wert: “ & iGanzeZahl

End Sub

Quelltext 3.5 – Kontrollstruktur – Sequenz / Folge

Beispiel für eine einfach Alternative / Selektion

SYNTAX:

   If <Bedingung> Then
      'Dieser Teil wird ausgeführt wenn die Bedingung erfüllt ist.
   [Else
      'Dieser Teil wird ausgeführt wenn die Bedingung nicht erfüllt ist.
       Man kann den ELSE Zweig jedoch auch weglassen, dieser ist optional.
]
   End If

Quelltext 3.6 – Kontrollstruktur Syntax: Einfache Selektion

Hinweise:
Für die Syntaxbeschreibungen gelten: Werte und Texte in diesen eckigen Klammern "<>" werden später durch den entsprechenden Inhalt ersetzt. Bereiche, die mit diesen eckigen Klammern "[ ]" eingegrenzt sind, sind optional und können auch vollständig weggelassen werden. Wie immer erklärt es sich mit Beispielen einfacher. Ergänzend dazu sehen Sie, das bestimmte Zeilen nach rechts eingerückt wurden. Durch das Einsetzen der Tabulator Taste können Sie solche Einrückungen vornehmen und untergeordnete Zeilen darstellen. Dieses kleine Hilfsmittel erhöht erneut die Lesbarkeit Ihres Quelltextes. Sie erkennen sofort, was zu welchem Programmteil und welcher Kontrollstruktur gehört.

Sub EinfacheSelektion()
   Dim sEingabeAnrede As String
   Dim sEingabeName As String
   sEingabeAnrede = InputBox("Bitte geben Sie Ihre Anrede ein (Herr oder Frau):"
   sEingabeName = InputBox("Bitte geben Sie Ihren Namen ein:"
   If sEingabeAnrede = "Herr" Then
      MsgBox "Hallo Herr " & sEingabeName
   Else
      MsgBox "Hallo Frau " & sEingabeName
   End If
End Sub

Quelltext 3.7 – Beispiel: Einfache Selektion

Eine If Abfrage kann sich aber auch auf Zahlen beziehen. So können Sie z.B. auch abfragen, ob eine Variable eine positive Zahl enthält oder nicht. Dazu verwenden Sie einfach mathematische Ausdrücke als Bedingung:

If iVariableMitZahl >= 0 Then
Hier wird geprüft: Ist der Inhalt der Variablen iVariableMitZahl größer oder gleich (>=) 0?

Oder wenn Sie nur prüfen möchten, ob eine Zahl eine gewisse Grenze nicht überschritten hat:

If iVariableMitZahl < 100 Then
Hier wird geprüft: Ist der Inhalt der Variablen iVariableMitZahl kleiner (<) 100?

Es gibt allerdings noch einen Sonderfall, welchen ich der Vollständigkeit halber trotzdem erwähnen möchte. Ich würde Ihnen nicht empfehlen, diese Schreibweise zu verwenden. Es macht den Quelltext wirklich unübersichtlicher. Eine Selektion mit auszuführenden Befehlen kann man, mit Hilfe des Doppelpunktes, in einer Zeile ohne einen alternativen Else-Zweig schreiben.

If <Bedingung> Then <Befehl1> : <Befehl2> : <Befehl3> 'Bitte nicht verwenden :)

Quelltext 3.8 – Kurzform der einfachen Selektion mit If

Beispiel für eine komplexe Alternative / Selektion

SYNTAX:

   Select Case <Variable>
      Case <Variableninhalt1>
         'Dieser Teil wird ausgeführt wenn Variableninhalt1 vorliegt.
      Case <Variableninhalt2>
         'Dieser Teil wird ausgeführt wenn Variableninhalt2 vorliegt.
      [Case Else
         'Dieser Teil wird ausgeführt wenn keiner der anderen Cases dem Inhalt entspricht.]
   End Select

Quelltext 3.9 – Kontrollstruktur Syntax: Komplexe Selektion

Und wieder mit etwas echtem VBA Inhalt als Beispiel:

Sub KomplexeSelektion()
   Dim sAmpelfarbe As String
   sAmpelfarbe = InputBox("Bitte geben Sie eine Ampelfarbe ein (z.B. Rot oder Gelb):"
   Select Case sAmpelfarbe
      Case "Rot"
         MsgBox "Die Ampel ist rot! Bitte warten!"
      Case "Gelb"
         MsgBox "Die Ampel wird gleich rot - Achtung!"
      Case "RotGelb"
         MsgBox "Die Ampel wird gleich grün..."
      Case "Grün"
         MsgBox "Die Ampel ist grün - Abfahrt!"
      Case Else
         MsgBox "Die Ampel ist leider defekt!"
   End Select
End Sub

Quelltext 3.10 – Beispiel: Komplexe Selektion

Beispiel für eine zählende Wiederholung / Iteration / Schleife

SYNTAX:

   For <Zählvariable> = <Startwert> To <Endwert> [Step <Schrittweite>]
      'Der Inhalt wird so oft ausgeführt bis der Endwert erreicht ist.
      'Wird Step verwendet, kann man die Schrittweite individuell einstellen.
   Next <Zählvariable>

Quelltext 3.11 – Kontrollstruktur Syntax: Zählschleife

Und weil es so schön ist - wieder ein paar Beispiele:

Sub ZaehlschleifenBeispiele()

   Dim iZaehler As Integer

   'Beispiel 1 "vorwaerts zaehlen":
   For iZaehler = 1 To 10 Step 1
      MsgBox "Jetzt ist der Inhalt der Zählvariablen: " & iZaehler
   Next iZaehler

   'Beispiel 2 "rueckwaerts zaehlen":
   For iZaehler = 10 To 1 Step -1
      MsgBox "Jetzt ist der Inhalt der Zählvariablen: " & iZaehler
   Next iZaehler

End Sub

Quelltext 3.12 – Beispiele: Z&aum;hlschleifen

Beispiel für eine bedingte Wiederholung / Iteration / Schleife

SYNTAX:

   Do While <Bedingung>
      'Der Inhalt wird so oft ausgeführt bis die Bedingung nicht mehr erfüllt ist.
      'Ganz wichtig: Die zaehlende Variable muss vom Programmierer erhoeht werden!
   Loop

Quelltext 3.13 – Kontrollstruktur Syntax: Bedingungsschleife

Und ein letztes Mal - ein Beispiel:

Sub BedingteSchleifeBeispiel()

   Dim iZaehler As Integer

   'Manuell den Startwert setzen
   iZaehler = 1
   Do While iZaehler <= 10
      MsgBox "Jetzt ist der Inhalt der Zählvariablen: " & iZaehler
      'Achtung: iZaehler manuell erhoehen!
      iZaehler = iZaehler + 1
   Loop

End Sub

Quelltext 3.14 – Beispiele: Bedingungsschleife

Wichtiger Hinweis: Denken Sie bei der bedingten Schleife immer daran, die zählende Variable zu erhöhen! Denn sonst landet man in einer Endlosschleife. Sollten Sie einmal in diese Situation kommen, können Sie die Ausführung Ihres Makros mit der Tastatur und der folgenden Tastenkombination unterbrechen: STRG + PAUSE

Beispiel für einen Aufruf (von Unterprogrammen / Unterroutinen)

Sub Hauptprogramm()
   Call Unterprogramm1
   Call Unterprogramm2
End Sub

Sub Unterprogramm1()
   MsgBox "Diese Meldung kommt aus dem Unterprogramm1!"
End Sub

Sub Unterprogramm2()
   MsgBox "Diese Meldung kommt aus dem Unterprogramm2!"
End Sub

Quelltext 3.15 – Beispiele: Aufruf einer anderen Prozedur

Der Aufruf einer anderen Prozedur (Sub) erfolgt einfach mittels des Befehls Call und dem Namen der auszuführenden Prozedur. In unserem Beispiel die Unterroutinen Unterprogramm1 und Unterprogramm2. Nach der jeweiligen Ausführung der Unterprogramme springt das Programm wieder zurück in das Hauptprogramm.
X Abbildung 3.9 – Kontrollstruktur - Sequenz / Folge
X Abbildung 3.10 – Kontrollstruktur - Wiederholung / Iteration
X Abbildung 3.11 – Kontrollstruktur -  Einfache Selektion / Alternative
X Abbildung 3.12 – Kontrollstruktur -  Komplexe Selektion / Alternative
X Abbildung 3.13 – Visualisierte Sequenz zum Quelltextbeispiel

Übungsaufgaben - Kontrollstrukturen

1) Sequenz:
Erstellen Sie eine Benutzerabfrage. Fragen Sie den Benutzer nach seinem Name und seinem Alter. Anschließend soll folgende Ausgabe erzeugt werden: Begrüßung mit Name und Ausgabe, wie alt der Benutzer ist, sowie sein Alter in 10 und 20 Jahren?

2) Alternative:
Fragen Sie den Benutzer nach einer Zahl und geben Sie aus, ob es sich um eine positive oder negative Zahl handelt.

3) Iteration:
a) Zählschleife: Zählen Sie im Direktfenster von 1 bis 1000.
b) Bedingungsschleife: Multiplizieren Sie solange eine Zahl mit dem Faktor 2, wie diese kleiner oder gleich 200 ist. Die Zahl soll vom Benutzer eingegeben und im Direktfenster alle Zwischenwerte aufgeführt werden. Das Endergebnis soll an den Benutzer ausgegeben werden.

4) Aufruf:
Schreiben Sie eine Prozedur (Sub), welche die von Ihnen erstellen Prozeduren (Übungen 1-3) nacheinander aufruft.

Ein Lösungsvorschlag zu den Übungen

Option Explicit

'Aufgabe 1: Sequenz
Sub Aufgabe_Sequenz_EVA()
  'Variablen
  Dim sName As String
  Dim iZahl As Integer
  Dim iZahlp10 As Integer
  Dim iZahlp20 As Integer
  
  'Konstanten
  Const ADDITION1 As Integer = 10
    
    'Eingabe
    sName = InputBox("Wie ist Dein Name?")
    iZahl = InputBox("Wie alt bist Du?")
    
    'Verarbeitung
    iZahlp10 = iZahl + ADDITION1
    iZahlp20 = iZahl + 20
    
    'Ausgabe - Hinweis: vbCrLf bedeutet einen Zeilenumbruch (Return)
    MsgBox "Hallo " & sName & vbCrLf & "Du bist jetzt: " & iZahl & vbCrLf & _
        "Du bist in " & ADDITION1 & " Jahren: " & iZahl + 10 & vbCrLf & _
        "Du bist in 20 Jahren: " & iZahlp20
    
End Sub

'Aufgabe 2: Alternative - 1. Variante
Sub Aufgabe_Alternative_Variante_1()
  Dim iZahl As Integer
    
    iZahl = InputBox("Bitte eine Zahl eingeben:")
    
    If iZahl >= 0 Then
        'positive Zahl
        MsgBox "Die Zahl ist positiv!"
    End If
    
    If iZahl < 0 Then
        'negative Zahl
        MsgBox "Die Zahl ist negativ!"
    End If
    
End Sub

'Aufgabe 2: Alternative - 2. Variante
Sub Aufgabe_Alternative_Variante_2()
  Dim iZahl As Integer
    
    iZahl = InputBox("Bitte eine Zahl eingeben:")
    
    If iZahl >= 0 Then
        'positive Zahl
        MsgBox "Die Zahl ist positiv!"
    Else
        'negative Zahl
        MsgBox "Die Zahl ist negativ!"
    End If
    
End Sub

'Aufgabe 3a: Iteration - Zaehlschleife
Sub Aufgabe_Zaehlschleife()
  Dim iZaehler As Integer
    
    For iZaehler = 1 To 1000 'Step 1
        Debug.Print iZaehler
    Next iZaehler
    
End Sub

'Aufgabe 3b: Iteration - Bedingungsschleife
Sub Aufgabe_Bedingungsschleife()
  Dim iZahl As Integer
  'Faktor festlegen
  Const iFAKTOR As Integer = 2
    
    'Benutzerabfrage einer Zahl
    iZahl = InputBox("Bitte eine Zahl eingeben:")
    
    'Solange Eingabe mit Faktor multiplizieren bis <= 200 ueberschritten ist
    Do While iZahl <= 200
        iZahl = iZahl * iFAKTOR
        'Ausgabe im Direktfenster jeder einzelnen Multiplikation
        Debug.Print "Zwischenergebnis: " & iZahl
    Loop
    
    'Endergebnis an Benutzer ausgeben
    MsgBox "Das Ergebnis ist: " & iZahl
    
End Sub

'Aufgabe 4: Aufruf aller Prozeduren
Sub Aufgabe_AufrufAllerProzeduren()
    Call Aufgabe_Sequenz_EVA
    Call Aufgabe_Alternative_Variante_1
    Call Aufgabe_Alternative_Variante_2
    Call Aufgabe_Zaehlschleife
    Call Aufgabe_Bedingungsschleife
End Sub

Quelltext 3.16 – Lösungsvorschläge zu Übungsaufgaben - Kontrollstrukturen

Warum fehlt hier ein Stück?

ANZEIGE
Einige unserer Kapitel sind im kostenfreien Tutorial nicht verfügbar. Vervollständigen Sie Ihre Weiterbildung und erweitern Sie Ihr Wissen mit unseren professionellen Schulungen! Erhalten Sie Zugang zu wertvollen zusätzlichen Tipps und Lehrmaterial, das Ihnen hilft, Ihre Fähigkeiten auszubauen und selbst ein VBA-Profi zu werden. Unser exklusives Angebot bietet Ihnen außerdem die Möglichkeit, tiefer in ein spezifisches Thema Ihrer Wahl einzusteigen. Unser Personal-Training rund um VBA ist genau die richtige Ergänzung, um theoretische Aspekte gemeinsam in der Praxis anzuwenden und umzusetzen. Wir unterstützen und beraten Sie ebenfalls bei der VBA Programmierung in Ihren eigenen Projekten und stehen Ihnen mit Rat und Tat zur Seite. Setzen Sie sich einfach mit uns in Verbindung. Sie finden uns auf unserer Internetseite:

WershovenOnline.de

3.13: Reflexion der prozedualen Programmierung

Nun haben wir unser erstes vollständiges VBA Programm erstellt und ein gutes Fundament unseres Programmierwissens hergestellt. Allerdings sind wir bei den Kernfunktionalitäten von VBA geblieben. Viel schöner würde sich beispielsweise unser Taschenrechner mit einer eigenen Benutzeroberfläche machen oder die Ein- und Ausgabe mit Hilfe von Excel-Zellen.

Im Kapitel "Objektorientierte Programmierung" möchte ich mit Ihnen über die Verbindung von Excel und VBA sprechen. Hier werden wir die ersten Makros entwickeln, die im täglichen Büroleben uns einiges an Arbeit abnehmen können. Für diese Arbeitszeitersparnis müssen wir allerdings auch einiges an Zeit investieren.

Im Kapitel "Ereignisorientierte Programmierung" werden wir uns die eigenen Benutzeroberflächen anschauen und auf Ereignisse reagieren. Beispielsweise können wir auf Aktionen des Benutzers reagieren, wie das Drücken auf eine Schaltfläche oder die Eingabe einer Zahl. Somit sind Sie nach den nächsten zwei Kapiteln in der Lage, den Taschenrechner in beiden Varianten zu verschönern und weitere Versionen unseres Taschenrechnerprojektes zu realisieren. Auch wenn es nur ein Übungsprojekt ist, werden Sie schnell Analogien zu Ihren Arbeitsabläufen herstellen und schnell auf Ideen kommen, was Sie bei sich automatisieren oder durch Benutzeroberflächen verschönern könnten.

PERSONAL-COACHING IN VBA?

ANZEIGE
Vervollständigen Sie Ihre Weiterbildung und erweitern Sie Ihr Wissen mit unseren professionellen Schulungen! Erhalten Sie Zugang zu wertvollen zusätzlichen Tipps und Lehrmaterial, das Ihnen hilft, Ihre Fähigkeiten auszubauen und selbst ein VBA-Profi zu werden. Unser exklusives Angebot bietet Ihnen außerdem die Möglichkeit, tiefer in ein spezifisches Thema Ihrer Wahl einzusteigen. Unser Personal-Training rund um VBA ist genau die richtige Ergänzung, um theoretische Aspekte gemeinsam in der Praxis anzuwenden und umzusetzen. Wir unterstützen und beraten Sie ebenfalls bei der VBA Programmierung in Ihren eigenen Projekten und stehen Ihnen mit Rat und Tat zur Seite. Setzen Sie sich einfach mit uns in Verbindung. Sie finden uns auf unserer Internetseite:

WershovenOnline.de

Anmerkungen und Hinweise ...

Dieses Schulungsmaterial wurde geschrieben von Marc Wershoven im Jahr 2013.

Es gelten die Nutzungsbedingungen von Online-VBA.de.

Wichtige Hinweise:
Wir möchten ausdrücklich darauf hinweisen, dass die Autoren gemeinsam sorgfältig die Inhalte vor der Veröffentlichung prüfen, aber auch wir sind nur Menschen. Daher können wir keine Fehlerfreiheit garantieren. Wir sind aber immer froh und dankbar, wenn Sie uns gefundene Fehler einfach formlos via E-Mail zukommen lassen und wir diese beim nächsten Update korrigieren können!
Alle Texte, Beispiele, Quellcodes und Bilder in diesem kostenlosen Online-Tutorial sind von freiwilligen Autoren, welche sich auch regelmäßig ehrenamtlich in Internet-Foren engagieren, in deren Freizeit erstellt worden. Bitte sehen Sie uns daher nach, dass wir keinen kostenlosen Support für die Dienste von www.Online-VBA.de anbieten können.

Die Verwendung der Quelltexte / Makros erfolgt stets auf eigene Gefahr.

Bitte denken Sie an eine ausreichende Datensicherung.

Markenrechtliche Hinweise
Alle innerhalb dieses Online-Tutorials genannten und gegebenenfalls durch Dritte geschützte Produktnamen und Marken unterliegen uneingeschränkt den Bestimmungen des jeweils gültigen Kennzeichenrechts und den Besitzrechten der jeweiligen eingetragenen Eigentümer. Allein aufgrund der bloßen Nennung ist nicht der Schluss zu ziehen, dass Markenzeichen nicht durch Rechte Dritter geschützt sind!
Apple®, Mac®, Mac OS®, Mac OS X® sind eingetragene Marken der Apple® Inc.
Microsoft®, Windows®, Word®, PowerPoint®, Access® und Excel® sind entweder registrierte Marken oder Marken der Microsoft® Corporation in den Vereinigten Staaten und/oder anderen Ländern. Alle Screenshots sind mit freundlicher Genehmigung von Microsoft® erstellt worden.
Weitere verwendete Marken- oder Produktnamen sind Handelsmarken und/oder eingetragene Marken der entsprechenden Inhaber.

Die erstellten Bildschirmaufnahmen wurden mit der Microsoft® Office Professional Version 2013 und Microsoft® Windows® 7 Professional erstellt. Je nach den von Ihnen verwendeten Versionen können die Bildschirmaufnahmen leicht abweichen und ggf. ein anderes Layout haben.

Zur Erhöhung der Lesbarkeit wird in diesem kostenlosen Online-Tutorial auf die ®, TM und weitere markenrechtliche Symbole verzichtet, trotzdem sind verwendete Marken- oder Produktnamen Handelsmarken und/oder eingetragene Marken der entsprechenden Inhaber! Des Weiteren wird auf die männlich-weibliche Doppelform zur besseren Lesbarkeit verzichtet.

Diese Schulungsunterlage ist eine unabhängige Publikation und ist weder angegliedert noch ist diese autorisiert, gesponsert oder ansonsten bestätigt durch die Microsoft® Corporation.

Jede Weiterübermittlung, Veröffentlichung oder Verbreitung der Inhalte ist untersagt!

Eine gewerbliche / kommerzielle Nutzung ist ausdrücklich untersagt.

Copyright: © 2013-2024 Marc Wershoven und Anika Wershoven
TOTOP
ANZEIGE