Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel 2016 VBA Grundkurs

Variablen deklarieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Auch wenn VBA als BASIC-Dialekt es erlauben würde, Variablen ohne explizite Ankündigung zu benutzen, wäre das eine häufige Fehlerquelle und daher dringend zu vermeiden. Sinnvolles Deklarieren von Variablen macht Ihr Programm effizienter und fehlerärmer.

Transkript

Ich habe hier bereits ein neues Modul deklarieren angelegt und möchte Ihnen zeigen, wie nett Basic zu Ihnen ist. VBA ist ja auch nur ein Basic-Dialekt, erlaubt Ihnen nämlich Variablen einfach so zu benutzen. Also in einer Prozedur, die nenne ich mal: sub BenutzerNamenAnzeigen oder so was. Da kann ich jetzt direkt eine Variable benutzen, die heißt strBenutzer und ihr einen Wert zuweisen, einen völlig beliebigen Inhalt und entweder viele Zeilen später oder direkt danach diese Variable zu benutzen. Also strB, jetzt erinnere ich mich an IntelliSense, also mit Steuerung und Leertaste ausklappen und die erste Enttäuschung ist, diese Variable steht da gar nicht drinnen. Na ok, das ist mir jetzt auch egal, nehme ich also mit Escape-Taste die Liste weg und schreibe es eben selber zu Ende. Weil ich faul bin, habe ich das natürlich in Kleinschreibung gemacht und jetzt beobachten Sie bitte mal hier das B, wenn ich jetzt diese Zeile verlasse. Der Letzte gewinnt und leider ist er der Schlechteste, der setzt diesen Namen auch in Kleinschreibung um. Das juckt mich aber nicht, sondern ich kann dieses hier speichern und ausführen. Ich bin zufrieden, dass es unten funktioniert. Alles super, frage ich mich? Warum dann der ganze Aufwand, den ich Ihnen gleich erzählen möchte? Weil Basic zu nett zu Ihnen ist. Basic erlaubt Ihnen hier einfach eine Variable zu benutzen, die Sie noch nie angekündigt haben. Da könnte man sich natürlich dazu denken: Ja und, was soll der ganze Aufwand? Also sub NummerFinden, die nächste Prozedur, da erfinde ich eine Variable namens intNummer und die kriegt den Wert 1234 zugewiesen. Sie ist übrigens keine Integer-Variable, genauso wenig, wie die da oben eine String-Variable ist, beide haben noch den Datentyp Variant, aber das nur am Rande. Und jetzt kann ich hier unten das debug. Print machen. Ich weiß ja, die steht sowieso nicht in der Liste, also schreibe ich sie eben selber. Und wenn ich jetzt diese Prozedur ausführen lasse, was glauben Sie, was dann passiert? Schauen Sie mal. Ich habe da drauf geklickt und es ist nichts zu sehen. Da ist oftmals ein Fehler drinnen und zwar keiner, der die Lauffähigkeit verhindert, es ist syntaktisch alles in Ordnung. Haben Sie es gesehen? Hier habe ich Nummer mit Doppel-M geschrieben, zweimal Marta und hier ist einmal Marta, einmal Nordpol drinnen. Hier ist ein falscher Buchstabe. Das ist jetzt extrem auffällig, weil ich geradezu mit der Nase drauf stoße, in sehr kurzen Codes und sehr kurzen Bezeichnungen. Im wirklichen Leben, würden Sie das nicht merken. Und deswegen ist es so gefährlich, Sie handeln sich völlig unnötig Fehlerquellen ein. Wie können Sie die loswerden? Indem Sie sich zwingen oder besser gesagt, indem Sie VBA bitten Sie zu zwingen alle Variablen immer anzukündigen. Das ist eine Option, die pro Modul eingeschaltet wird, die schreibe ich jetzt mal zu Fuß davor. Die heißt Option explicit. Das heißt, dass Sie explizit erforderlich machen, Variablen anzukündigen. Wenn ich jetzt in dieser Prozedur starte, einmal vorher speichern. Wenn ich jetzt hier starte, dann gibt es direkt eine Fehlermeldung, die sagt: Die Variable habe ich ja noch nie gesehen. Und der Compiler stoppt. Also Sie kriegen erstens einen Hinweis und übrigens zweitens sogar korrekt markiert, wo das Problem liegt. Sie müssen gar nicht mehr raten. Nach dem Ok, ist der Compiler allerdings schon losgelaufen. Er ist noch nicht gesprungen sozusagen, aber hat schon viel Anlauf genommen. Hier sagt er vor dem Gelben: Ich würde jetzt gerne diese Prozedur kompilieren. Es wird tatsächlich nur diese eine Prozedur kompiliert. Hier ist nämlich auch ein Fehler drinnen. Ich würde die gerne kompilieren, das darf ich aber nicht. Ich stehe aber schon in Wartestellung. Sie müssen ihn also hier, nicht nur Variablen zurücksetzen, sondern auch das kompilieren stoppen. Und dann reichen Sie nach, was er jetzt verlangt, nämlich die Deklaration von Variablen. Also ein dim. Jetzt kommt str Benutzer, ich schreibe das ausdrücklich mit Großbuchstaben. Und wenn ich schon eine String-Variable haben will, dann sollte ich sie auch as String deklarieren. Und achten Sie jetzt bitte mal darauf, was passiert, wenn ich hier diese Zeile verlasse, die Deklarationszeile gewinnt nämlich. Und jetzt funktioniert auch endlich wieder IntelliSense. Also Steuerung und Leertaste, hat er erkannt, eindeutige Bezeichnung und es wird ergänzt. Sie handeln sich mit Option explicit ein, dass Sie gezwungen sind, Variablen zu deklarieren. Sagen wir mindestens bis hier. Der Datentyp ist dann nicht zwingend, aber wenn schon dann kann man es auch gleich richtig machen. Und Sie gewinnen dabei, dass erstens alle Variablen vernünftig geschrieben sind und zweitens mit IntelliSense auch bekannt sind. Diese Prozedur lässt sich jetzt also fehlerfrei wieder ausführen. Alles wunderbar. Und die andere, wenn ich die jetzt ausführe, die meldet sich sofort und sagt: Die kenne ich nicht! Das hatten wir eben schon, also zwischendurch stoppen. Da kommt jetzt das noch fehlende Dim intNummer as Integer. Und wenn ich jetzt denke es ist alles gut und die wieder starte, dann kommt die zweite Fehlermeldung, die sagt: Da ist die Variable aber immer noch nicht definiert. Und hier sollte man überrascht gucken, weil man denkt, das sei ja die Gleiche, wie da drüben, also wieder stoppen. Es ist aber nicht die Gleiche. Und deswegen erwische ich nämlich ganz viele Programmierer dabei, dass sie ihre Variablen oftmals zu Fuß schreiben und nicht Option explicit drinnen haben, weil der normale Umgang mit Variablen eigentlich ist, Sie schreiben so viel wie nötig, drücken dann Steuerung/Leertaste und der Editor ergänzt den Rest. Der weiß nämlich, wie die Variable heißt, auch wenn Sie sich beispielsweise da oben verschrieben haben. Dann wird immer der gleiche Schreibfehler überall weitergereicht, aber es ist die gleiche Variable. Also ganz ganz dringende Empfehlung in jedem Modul Option explicit. Aber natürlich nicht zu Fuß, sondern das finden Sie unter Extras - Optionen, da gibt es hier eine Deklaration Variablen erforderlich. Wenn ich das jetzt anschalte, sorgt es dafür, dass in jedem neuen, Achtung, neuen Modul Option explicit drinnen steht. Das heißt, bestehende Module werden nicht angepasst. Es sind die meisten Module noch ohne diese Option. Wenn ich ein neues Modul anlege, steht das oben sofort drinnen. Das Modul brauche ich hier nicht, deswegen kann ich es löschen. Aber ab jetzt ist sozusagen alles in Ordnung. Die Option gilt aber je Modul. Ich kann nur dringendst empfehlen, in jedem Modul, wirklich, wirklich in jedem Modul immer oben drinnen stehen zu haben. Und auch wenn Sie alten Code haben, sollten Sie das mal reinschreiben und dann wenn Sie es erzwingen wollen, dass alle getestet wird, hier mit Debuggen - Kompilieren alles prüfen lassen. Und Sie werden 'zig, wenn nicht hunderte Fehlermeldungen bekommen für undeklarierte Variablen und dabei wahrscheinlich auch einige, bisher unverständliche Fehler verstehen.

Excel 2016 VBA Grundkurs

Lassen Sie sich systematisch in die Excel-Programmierung mit Visual Basic for Applications (VBA) einführen.

7 Std. 25 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!