© 2005 - 2012 : NoNet - www.excelei.de

Eine Webseite für EXCEL-Freunde mit Beispielen, Tutorials, Downloads etc. von NoNet


PayPal: Spenden

VBA erlernen

Meine Meinung  zum Erlernen von VBA



Vorwort : Meine persönliche  VBA- und Programmiererfahrung


Ich selbst programmiere seit 1984 (seit meiner Schulzeit) in diversen BASIC-Varianten (und teilweise auch in anderen Programmiersprachen) und seit 1994 auch in Excel VBA (jedoch nicht in Word  VBA, Powerpoint VBA und nur wenig in Access VBA). Nach der Schulzeit und noch vor meiner VBA-Zeit absolvierte ich eine Berufsausbildung zum DV-Kaufmann/Organisationsprogrammierer.

In den ersten 5 Jahren nach meiner Berufsausbildung habe ich mich auf die MS-Office-Produkte spezialisiert und erste kleinere bis mittelgroße kommerzielle VBA-Projekte programmiert. Danach bin ich verstärkt in den IT-Schulungsbereich eingestiegen, habe einige Jahre als freiberuflicher IT-Trainer gearbeitet und daher einige Zeit lang nur hin und wieder für private Zwecke oder zur Beantwortung von Fragen in Excel-Foren in VBA programmiert. Seit 2002 arbeite ich hauptberuflich in Vollzeit in einem großen IT-Unternehmen im Software-Support mit Spezialisierung auf MS Office-Produkte. Hier programmiere ich seitdem fast täglich in Excel VBA und erstelle oder bearbeite VBA-Projekte (oftmals AddIns) für Kunden und Kollegen bzw. auch für andere Abteilungen. Weiterhin beschäftige ich mich sowohl privat sowie im Rahmen der Mitarbeit in verschiedenen Excel-Foren mit diesem Thema und habe bereits einige Hunderte bis Tausende Codeschnipsel veröffentlicht.


Seit 2000 halte ich als IT-Dozent auch hin und wieder VBA-Kurse für Einsteiger (Excel-Kurse gebe ich regelmäßig seit 1995).




Voraussetzungen zum Erlernen von VBA


Sicherlich können die meisten Menschen, die einen PC bedienen können auch VBA erlernen - aber dennoch nicht alle !

Wie bei fast allen anspruchsvollen Themen sind auch zum Erlernen einer Programmiersprache bestimmte Mindest-Voraussetzungen unabdingbar, die ein Lernender mitbringen sollte. Hier eine kleine Auswahl :




Am Anfang war der Makrorekorder...ein kleiner Schritt für die Menschheit, aber ein großer Schritt für Sie !


Viele VBA-Programmierer haben irgendwann einmal mit dem Makrorekorder begonnen, der einen zwar meist funktionierenden, dafür jedoch sehr starren und absolut unflexiblen sowie alles andere als optimierten VBA-Code erzeugt (es wimmelt z.B. nur so von absolut überflüssigen .Activate und .Select - Methoden !). Ob jemand tatsächlich VBA erlernen muss oder ob nicht doch der Einsatz des Makrorekorders genügt, hängt ganz vom Anspruch an die zu bewältigenden Aufgaben ab. Um nur eine Abfolge von immer wiederkehrenden Arbeitsschritten zu automatisieren, genügt es manchmal diese Arbeitsschritte per Makrorekorder aufzuzeichnen und den Code im Bedarfsfall wieder „abspielen“ zu lassen - also das Makro erneut zu starten. Schnell wird man dabei jedoch feststellen, dass der Makrorekorder ziemlich „doof“ ist, also keine eigenständige „Denkarbeit“ leistet : Weder erkennt ein Makro automatisch, dass eine zu formatierende Liste nun ein paar Zeilen oder Spalten mehr oder weniger umfasst, noch erkennt es, dass der Name der zu verknüpfenden Datei oder Tabellenblattes nun (da z.B. datumsbezogen) anders heißt als während der Aufzeichnung, dafür zeichnet es jedoch jede noch so unerhebliche Aktion wie z.B. Scrollen im Tabellenblatt,oder Änderung des Zooms auf, was nicht nur den Code erheblich aufbläht und unleserlicher werden lässt, sondern sich in späteren Abläufen bisweilen störend oder sogar fehlerhaft  auswirkt.

In Excel 2007 wird zwar (leider !) weitaus weniger (Wichtiges) aufgezeichnet als in Excel 2003 oder wieder in Excel 2010 (z.B. Änderung der „Adjustments“ von Autoformen) wodurch ein unvollständiges Makro entsteht, die tatsächlich überflüssigen Codezeilen bleiben jedoch auch in dieser Version enthalten.

Wer vor der Anpassung eines aufgezeichneten Makros/VBA-Codes steht, wird sich zurecht fragen, wie er dabei vorgehen sollte und an welchen Stellen im Code er WAS und WIE verändern muss. Spätestens jetzt ist der Augenblick gekommen, an dem man sich ernsthaft die Frage stellt, ob es nicht sinnvoll wäre, sich etwas intensiver mit der Funktionsweise und Methodik von VBA zu beschäftigen. Diese Erkenntnis ist richtig und verständlich , jedoch sollte sich jeder, der an dieser Schwelle steht, bewusst sein, dass das Erlernen von VBA keine Aufgabe für die nächsten 3 Tage ist und nicht so einfach erklärbar ist wie die Bedienung de Makrorekorders, sondern der Eintritt in eine absolut unbekannte - dafür jedoch sehr umfangreiche und faszinierende - Welt sein kann.... Auch wer bereits die ersten Schritte oder gar schon jahrelange Gewaltmärsche in dieser Welt zurückgelegt hat, wird erkennen, dass „der Weg das Ziel“ ist und es offensichtlich kein Ende des Weges gibt....




Meine bescheidene Meinung und Erfahrung zum Erlernen von VBA bzw. der Programmierung  ist :


Methode 1 : "Learning by doing" gepaart mit "Trial & Error" : Autodidaktisches Lernen


Oftmals ist der Anlass des Wunsches, VBA zu erlernen eine durch Vorgesetzte oder andere einflussreiche Personen gestellte Aufgabe oder Anforderung, die entweder ohne VBA nicht oder nur schwer lösbar ist oder explizit per VBA gelöst werden soll. Diese neue Aufgabenstellung wird häufig durch einen neuen Arbeitsplatz, Übernahme neuer Aufgaben oder neue Vorgesetzte initiiert. Aus den Forenbeiträgen kann man manchmal aber auch reines persönliches Interesse oder respektvolle Beachtung der VBA-Lösungen anderer Forenteilnehmer als Ursache für den Wunsch, VBA zu erlernen ausmachen. In beiden Fällen "wächst" man quasi durch die vorhandenen Aufgaben und Anforderungen in diese Materie und erlangt seine Kenntnisse dann durch "Learning by doing".

Bei dieser Methode versucht der Lernende, sich durch vielfaches „Ausprobieren“, Makrorekorder (dessen Einsatz ich auch für legitim erachte, um „mal eben schnell“ den passenden Code zu erstellen) oder „Copy+Paste“ sowie „Abschauen“ aus bestehenden Lösungen die Thematik selbst beizubringen oder zumindest eine halbwegs funktionierende Lösung zu „basteln“.

Obwohl ich mir selbst nach Erlernen einiger weniger Programmiergrundkenntnisse während der Schulzeit (damals : BASIC, COMAL, PASCAL, Assembler) vieles auch durch "Trial & Error" angeeignet habe, halte ich das inzwischen nicht für die effektivste Methode.


Zwar "schwören" viele, die das ebenso gemacht haben auf diese Methode und sie hat auch einige Vorteile :


Aber diese Methode hat wesentlich grössere Nachteile, die klar dagegen sprechen :



Methode 2 : Systematische Schulung durch erfahrenen und didaktisch qualifizierten Lehrer/Trainer/Dozenten :


Ein VBA-Kurs führt strukturiert an die Materie heran, vermittelt notwendiges Hintergrundwissen und kann so manches Unverständnis klären und bietet damit "Hilfe zur Selbsthilfe" für neue anstehende VBA-Aufgaben.


Aus didaktischer Sicht sollte man zunächst einmal im Schnelldurchgang die Entwicklungsumgebung (in Excel ist das die VBE - Visual Basic Environment, also der „VBA Editor“) kennenlernen um deren Aufgaben und Bereiche zu verstehen. Als nächstes - und das ist wesentlich wichtiger - sollte man die Grundkenntnisse der Programmierung in Form eines Kurses/Unterrichts/Schulung erlernen, um ein Gefühl für die Möglichkeiten zu erhalten und die grundlegenden Begriffe wie Module, Subroutinen, Funktionen, Variablen, Datentypen, Speicherbedarf, Deklaration, Objekte, Methoden, Eigenschaften, Klassen,  Kontrollstrukturen, Abfragen, Schleifen, Debugging, Kommentare, Rekursion, Strukturierte Programmierung, OOP, Compiler, Interpreter etc. kennen zu lernen (und auch zu verinnerlichen). Weiterhin lernt man in einem Kurs die applikationsspezifischen Dinge kennen (in Excel VBA z.B. die Referenzierung von Mappen, Tabellenblätten, Zellen, Zeilen, Spalten, Bereichen, Formulierung von Formeln und Funktionen etc.).

Dies alles kann nicht in einem kurzen Einführungskurs geschehen, sondern muss über einen ausreichend langen Zeitraum passieren und durch praktische Beispiele visualisiert und von den Kursteilnehmern selbst praktiziert werden : ein gezieltes "Learning by doing", um den Effekt zu sehen und zu "erleben".  Fragen und Unklarheiten können gesammelt und im Kurs gezielt nachgefragt oder wiederholt werden. Solche mehrtägigen Kurse bieten entweder (recht kostenintensiv) professionelle Software-Schulungszentren (z.B. Fa. Bechtle) oder (wesentlich kostengünstiger, qualitativ jedoch etwas unsicherer) verschiedene Volkshochschulen (VHS) oder private Bildungsinstitute und zahlreiche regionale Anbieter an. Auch „Fernuniversitäten“ (z.B. Studiengemeinschaft Darmstadt) bieten solche Qualifizierungsmassnahmen meist über einen längeren Zeitraum - dafür jedoch ohne persönliche Präsenz - an.


Ergänzend zu den Kursen sollte man sich ein geeignetes Buch (oder mehrere) kaufen. Welches Buch man sich zulegt, liegt am eigenen Geschmack : Nicht alle Bücher haben den gleichen Aufbau und den gleichen Stil – dem einen gefällt das eine besser, dem anderen das andere - evtl. muss man auch mehrere Bücher kaufen, da kaum ein Buch vollständig ist. Weiterhin behandeln auch nicht alle Büche alle Themen im gleichen Umfang. Bücher zum Erstellen von AddIns oder der Ribbon-Bearbeitung unter Excel 2007/2010 sind z.B. äußerst selten. Die Bücher aus dem Herdt-Verlag werden in Schulungen gerne verteilt und sind im Allgemeinen auch inhaltlich wie didaktisch sehr gut, bzgl. der (VBA-) Programmierung jedoch extrem oberflächlich und daher nicht empfehlenswert. Gerne genommen werden von Einsteigern die Bücher von Bernd Held (Markt und Technik Verlag - www.held-office.de) - von Profis werden diese jedoch (bekanntermassen) oft belächelt und verschmäht, viele Anfänger loben diese Bücher jedoch - und von Fortgeschrittenen die Bücher von Michael Schwimmer (Addison Wesley Verlag) oder Michael Kofler (Addison Wesley Verlag) oder auch das "VBA Codebook" von Melanie Breden (Addison Wesley Verlag) .


Nach dem zielgerichteten Einstieg in die Programmierung muss man das Erlernte auf jeden Fall "üben" – ähnlich wie beim Erlernen eines Musikinstrumentes oder einer Fremdsprache (hiermit meine ich keine Programmiersprache wie VBA ;-) genügt die reine Theorie hier nicht, sondern es muss auch eine regelmässige Praxis erfolgen. In der Praxis zeigen sich dann oft unvorhergesehene Probleme, durch die man sich durchbeissen muss. Diese Praxis kann man entweder durch Lösung selbst konstruierter Programmier-Aufgaben erlangen (Chefs und Vorgesetzte sind da in der Regel meist sehr kreativ – in der Formulierung der Aufgaben "Ich hätte gerne…" – nicht in der Lösung derselben ;-), oder aber auch – und das können viele langjährige aktive Forumsteilnehmer bestätigen – in der Mitarbeit in einem (oder mehreren) Excel-Foren, da dort die unterschiedlichsten Anforderungen/Anfragen aus den unterschiedlichsten Einsatzgebieten gestellt werden, die man sich selbst niemals gestellt hätte. Positiv an der Mitarbeit in Foren ist, dass man grundsätzlich keinen Druck hat, die Aufgabe in einer vorgegebenen Zeit lösen zu müssen – denn schliesslich ist niemand verpflichtet, die Fragen anderer zu beantworten, und auch, dass man sich über einige Teilprobleme oder auch über verschiedene Lösungsvarianten mit anderen Teilnehmern austauschen kann. Der Lerneffekt durch die Teilnahme an einem  Forum ist riesengross, das können wohl ebenfalls fast alle regelmässige und langjährige Forumsteilnehmer bestätigen. Und - das betone ich hier ausdrücklich - man lernt auch nach Jahren immer noch einiges dazu….


Lerndauer bis zum VBA-Spezialisten :


Nach Besuch eines VBA-Kurses kann man zwar schon nach relativ kurzer Zeit eigene VBA-Programme entwickeln, die dann auch fehlerhaft laufen, bis man sich jedoch zum wahren VBA-Spezialisten mit all seinen Möglichkeiten entwickelt, sollte man jedoch ein paar Jahre mit stetigem praktischen VBA-Bezug einplanen. Nach ca. 1-2 Jahren sollten die meisten typischen Aufgabenstellungen keine Probleme mehr bereiten (Ausnahmen bestätigen allerdings auch hier die Regel), bis eine echte Routine eingekehrt ist, dauert es aber mind. 2, 3 oder mehr Jahre und einige Dinge lernt man möglicherweise nie oder erst zu einem sehr späten Zeitpunkt !

Aus diesem Grund sollte man auch nicht erwarten, dass ein Teilnehmer eines VBA-Kurses nun alle VBA-Aufgaben lösen kann. Ein Kurs kann nur die Grundlagen (oder weiterführende Kurse : punktuelle Themen) lehren, aber niemals die gesamt Vielfalt aller Möglichkeiten - zumal wenn es sich um Anbindung an andere Applikationen wie MS Access, MS Outlook, Lotus Notes, Oracle Datenbanken etc. handelt



Kurz-Zusammenfassung :




Fazit : Nicht alles Wissen fällt immer "sofort und gratis" vom Himmel !


Dies sollte auch Vorgesetzten in Firmen bekannt sein bzw. Klar gemacht werden ! Es sollte daher kein Problem sein, seine Angestellte zu einem VBA-Kurs zu schicken (und die Kosten dafür zu übernehmen), wenn diese eine solche Tätigkeit ausüben sollen. In anderen Bereichen ist das ja auch eine Selbstverständlichkeit (Sicherheitstrainings, Staplerführerschein, etc.).

Ohne adäquate Investition wird es also nicht möglich sein, einen VBA-Anfänger zum Profi „mutieren“ zu lassen :


Und nun wünsche ich allen Interessierten viel Motivation und Erfolg beim Erlernen der Programmiersprache VBA, die unerwartete Möglichkeiten eröffnen wird. Ich hoffe, Sie werden ebenso viel Spaß finden wie die vielen erfahrenen Programmierer in den verschiedenen Excel-Foren :-)


Gruß, NoNet

Gesamten Artikel als PDF herunterladen