4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung...

32
Grundlagen der Visual Basic-Programmierung Microsoft ® Visual Basic 6.0 29 4 Grundlagen der Visual Basic- Programmierung Ziele dieses Kapitels $ Sie sehen, in welchen Objekten Ihr Programmcode gespeichert wird. $ Sie arbeiten mit dem Visual Basic-Editor und lernen die wichtigsten Elemente zur Programmentwicklung kennen. $ Sie erfahren etwas über Datentypen und die Möglichkeit der Speicherung mit Variablen und Konstanten. $ Sie erweitern Ihre Kommunikationsmöglichkeiten mit Hilfe von Standard- Dialogen. $ Sie lernen, Ihren Programmablauf mit Hilfe von Verzweigungen und Schleifen zu steuern. 4.1 Wo wird der Programmcode hinterlegt? Wenn Sie jetzt anfangen, Visual Basic-Code zu entwickeln, brauchen Sie Objekte, in denen der Programmcode entwickelt wird. Eine Codezeile wird in einer Prozedur eingebettet, diese wiederum benötigt zur Speicherung ein Modul. Die Module sind schließlich Bestandteile eines Projekts, aber das kennen Sie ja bereits. Trotzdem lohnt es sich, die verschiedenen Möglichkeiten unter die Lupe zu nehmen. 4.1.1 Module Betrachten Sie zunächst zwei verschiedene Modularten. Objekt-Module (z.B. das Formular-Modul) Der Code, der in einem Objekt-Modul gespeichert wird, bezieht sich auf die Steuerelemente des Objektes, z.B. eines Formulars. Wenn beim Klicken einer Schaltfläche bestimmte Aktionen ablaufen sollen, muß der dafür erforderliche Code in einem Formularmodul hinterlegt werden. Die Speicherung dieses Objektmoduls erfolgt zusammen mit dem Objekt, hier dem Formular in der Datei mit der Endung FRM. Sie aktivieren ein Objektmodul mit Hilfe des Befehls $QVLFKW&RGH oder dem Tastaturkürzel .

Transcript of 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung...

Page 1: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 29

4 Grundlagen der Visual Basic-Programmierung

Ziele dieses Kapitels

$ Sie sehen, in welchen Objekten Ihr Programmcode gespeichert wird.

$ Sie arbeiten mit dem Visual Basic-Editor und lernen die wichtigstenElemente zur Programmentwicklung kennen.

$ Sie erfahren etwas über Datentypen und die Möglichkeit der Speicherung mitVariablen und Konstanten.

$ Sie erweitern Ihre Kommunikationsmöglichkeiten mit Hilfe von Standard-Dialogen.

$ Sie lernen, Ihren Programmablauf mit Hilfe von Verzweigungen undSchleifen zu steuern.

4.1 Wo wird der Programmcode hinterlegt?

Wenn Sie jetzt anfangen, Visual Basic-Code zu entwickeln, brauchen SieObjekte, in denen der Programmcode entwickelt wird. Eine Codezeile wird ineiner Prozedur eingebettet, diese wiederum benötigt zur Speicherung ein Modul.Die Module sind schließlich Bestandteile eines Projekts, aber das kennen Sie jabereits. Trotzdem lohnt es sich, die verschiedenen Möglichkeiten unter die Lupezu nehmen.

4.1.1 Module

Betrachten Sie zunächst zwei verschiedene Modularten.

Objekt-Module (z.B. das Formular-Modul)Der Code, der in einem Objekt-Modul gespeichert wird, bezieht sich auf dieSteuerelemente des Objektes, z.B. eines Formulars. Wenn beim Klicken einerSchaltfläche bestimmte Aktionen ablaufen sollen, muß der dafür erforderlicheCode in einem Formularmodul hinterlegt werden. Die Speicherung diesesObjektmoduls erfolgt zusammen mit dem Objekt, hier dem Formular in der Dateimit der Endung FRM. Sie aktivieren ein Objektmodul mit Hilfe des Befehls$QVLFKW�→�&RGH oder dem Tastaturkürzel .

Page 2: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

30 © Microsoft GmbH 1999

Allgemeines ModulDagegen wird in einem allgemeinen Modul Programmcode gespeichert, der nichtdirekt einem Objekt zugeordnet wird. Sie fügen ein neues allgemeines Modul mitHilfe des Befehls 3URMHNW�→�0RGXO�KLQ]XI�JHQ dem Projekt hinzu. Sollte dasModul bereits existieren, aktivieren Sie das Codefenster des allgemeinen Modulsmit einem Doppelklick auf dem Moduleintrag des Projekt-Explorers. Gespeichertwird das allgemeine Modul in einer separaten Datei mit der Endung BAS.

4.1.2 Prozeduren

Innerhalb von Modulen brauchen Sie Prozeduren, in denen der Programmcodeeingebettet wird. Betrachten Sie zuerst die Syntax einer Prozedurdefinition mitder 6XE-Anweisung, nachzulesen auch in der Online-Hilfe unter dem Index 6XE.

Abb. 4.1: Syntax Sub-Prozedur

Sie sehen, daß Ihre Anweisungen zwischen 6XE und (QG�6XE eingeschlossenwerden. Mit den optionalen Anweisungen 3ULYDWH bzw. 3XEOLF bestimmen Sieden Gültigkeitsbereich Ihrer Prozedur. 3XEOLF-Prozeduren stehen immer zurVerfügung, während 3ULYDWH-Prozeduren nur im definierten Modul angesprochenwerden können. Auf das Thema der Argumentenübergabe wird zu einemspäteren Zeitpunkt näher eingegangen.

4.1.3 Ereignisprozeduren

Ereignisprozeduren sind, wie der Name bereits aussagt, Programmroutinen, dieaufgrund eines ausgelösten Ereignisses aktiviert werden und dann ablaufen. DieNamen der Ereignisprozeduren sind nicht frei wählbar, sondern werdenzusammengesetzt aus dem Namen des Objektes und dem Ereignis, für das derProgrammcode bestimmt ist. Um dies besser zu verstehen, sollten Sie eine kleineEreignisprozedur erstellen.

Sie lernen den Umgang mit einer Ereignisprozedur kennen.

1. Fügen Sie in einem Formular eine Befehlsschaltfläche mit der Beschriftung(Eigenschaft: Caption) Hallo ein.

2. Mit einem Doppelklick auf die eingefügte Schaltfläche haben Sie eineEreignisprozedur angelegt, die beim Klicken auf den Button aktiviert wird.

Ereignis-prozeduren

Page 3: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 31

3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges aus mitder Anweisung MsgBox „Hallo“.

Abb. 4.2: Ereignisprozedur

4. Sie sehen, daß die Ereignisprozedur den Namen &RPPDQG�B&OLFN erhaltenhat, bestehend aus dem Objektnamen &RPPDQG� und dem Ereignis &OLFN.Besonders aussagefähig ist der Name nicht, da Sie den Namen des Objektesnicht verändert haben. Doch was passiert, wenn Sie im nachhinein denNamen verändern?

5. Vergeben Sie den Namen cmdHallo und doppelklicken Sie anschließend aufdie Schaltfläche.

Abb. 4.3: Ereignisprozedur nach einer Namensänderung

6. Nach der Namensänderung ist der hinterlegte Programmcode nicht mehr demObjekt zugeordnet, sondern hängt quasi in der Luft. Auch an einer anderenStelle können Sie feststellen, daß die Prozedur keinem Objekt mehrzugeordnet ist.

7. Positionieren Sie den Cursor in der Ursprungsprozedur und kontrollieren Siedas Objekt-Kombinationsfeld.

Abb. 4.4: Heimatlose Ereignisprozedur

Page 4: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

32 © Microsoft GmbH 1999

8. Verschieben Sie die 0VJ%R[-Anweisung, und löschen Sie die nicht mehrbenötigten Prozedurdefinitionen.

9. Testen Sie Ihr Programm mit Hilfe der Funktionstaste .

Sie haben eine Ereignisprozedur erstellt und haben die Bedeutung derNamensvergabe erkannt.

In Ihrer Online-Hilfe haben Sie ein Kapitel, aus dem Sie Tips zur Vergabe vonNamen finden. Nachschlagen können Sie dies im Hilfeindex über dasSchlüsselwort %HQHQQXQJVNRQYHQWLRQHQ.

4.1.4 Funktionsprozedur

Im Gegensatz zu einer normalen Prozedur liefert die Funktionsprozedur einenWert zurück. Bereits der Befehlsumfang von Visual Basic beinhaltet eine Mengevon integrierten Funktionen, die jede(r) gestandene Programmierer(in) in einerProgrammiersprache erwartet. Dazu zählen Textfunktionen wie 0LG��5LJKW�/HIW��/HQ�und 7ULP. Oder Konvertierungsfunktionen: 6WU��9DO��&'DWH�und &'EO,um nur einige zu nennen. Wenn in diesem Kapitel von einer Funktionsprozedurgesprochen wird, so sind nicht die integrierten, sondern die benutzerdefiniertenFunktionen gemeint. Als Entwickler können Sie sich einen eigenen Befehlsvorratanlegen, auf den Sie bei Bedarf zurückgreifen können.

Betrachten Sie auch hier zunächst die Syntax, deren wichtige Unterschiede zur6XE-Prozedur umrahmt sind:

Abb. 4.5: Syntax Funktionsprozedur

Außer der grundsätzlichen Änderung des Namens der Anweisung (aus 6XEwurde )XQFWLRQ), sehen Sie, daß vor dem Verlassen der Prozedur noch einmaleine Zuweisung, in diesem Fall 1DPH� �$XVGUXFN, erscheint. Damitveranlassen Sie die Funktion, den Wert zurückzugeben, der im Ausdruckermittelt worden ist. Der Zusatz bei der Funktionsdeklaration $V�7\S�istoptional, bedeutet aber, daß Sie den zurückgegebenen Datentyp damit bestimmenkönnen. Da Sie die verschiedenen Datentypen noch nicht kennengelernt haben,wird jetzt nicht näher darauf eingegangen.

Sie definieren Ihre erste benutzerdefinierte Funktion. Sie soll das Datum desnächsten Tages zunächst nur im Direktfenster des Editors anzeigen.

Benutzer-definierteFunktionen

Page 5: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 33

Die Funktion soll den Namen MORGEN erhalten. Für die Lösung brauchen Sienoch die Information, daß die integrierte Visual Basic-Funktion 'DWH dasSystemdatum liefert.

1. Legen Sie mit Hilfe des Befehls 3URMHNW�→�0RGXO KLQ]XI�JHQ einallgemeines Modul an.

2. Für die Anlage einer neuen Prozedur hilft Ihnen der Befehl ([WUDV�→3UR]HGXU KLQ]XI�JHQ. Dort können Sie sowohl den Namen der Prozedur alsauch die Art )XQFWLRQ festlegen. Da die Funktion von allen anderen eventuellvorhandenen Modulen ebenfalls aufgerufen werden soll, vergeben Sie denGültigkeitsbereich 3XEOLF.

Abb. 4.6: Funktionsprozedur definieren

3. Nach der Bestätigung mit erwartet der Editor von Ihnen die Eingabe desgewünschten Codes. Dieser besteht im aktuellem Beispiel lediglich aus einerBefehlszeile:

Morgen = Date + 1'DWH���� ist ein Rechenausdruck, der mit der gleichzeitigen Zuweisung zumFunktionsnamen dafür sorgt, daß der Wert zurückgeben wird.

4. Testen Sie die Funktion, indem Sie im Direktfenster, zu erreichen mit demMenübefehl $QVLFKW�→�'LUHNWIHQVWHU oder dem Tastaturkürzel + ,die Funktion aufrufen:

? Morgen

Sie haben Ihre erste benutzerdefinierte Funktion definiert und sie imDirektfenster, auch Testfenster genannt, auf Funktionsfähigkeit überprüft.

4.1.5 Event- und Property-Prozedur

Mit einer 3URSHUW\-Prozedur können Sie eine benutzerdefinierte Eigenschaft, mit(YHQW ein benutzerdefiniertes Ereignis definieren. Diese Art von Prozedurenwird hier der Vollständigkeit halber aufgeführt. Mehr dazu finden Sie in einemder nachfolgenden Kapitel.

Page 6: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

34 © Microsoft GmbH 1999

4.2 Der Visual Basic-Editor

Für die Programmentwicklung können Sie auf ein komfortables Toolzurückgreifen, den Visual Basic-Editor. Er hilft bei der Programmierung, indemer Ihnen so oft wie möglich unterstützende Hilfethemen und Auto-Funktionenanbietet, die eine Programmentwicklung vereinfachen.

4.2.1 Wie durch Zauberhand

Der Visual Basic-Texteditor verwendet IntelliSense®, um das Schreiben vonCode einfacher und so fehlerfrei wie möglich zu machen. Zu den IntelliSense-Optionen zählt nicht nur die Anzeige der Syntax des aktuellen Befehls, sondernauch die Vervollständigung von Anweisungen.

Sie lernen die Syntaxhilfe des Visual Basic-Editors kennen.

1. Positionieren Sie den Cursor in einem Modulfenster. Wenn Sie z.B. einenDoppelklick in das Formularobjekt vornehmen, wird die Ereignisprozedur/RDG aufgerufen – eine Prozedur, die durchläuft, wenn das Formulargeöffnet wird.

2. Dort tippen Sie die Dialog-Anweisung msgbox. Sobald Sie eine Leerstelle(oder ein Komma) erfaßt haben, erscheint die QuickInfo zur Anweisung0VJ%R[.

Abb. 4.7: Beispiel zur QuickInfo-Anzeige der Syntax im Editor

3. Der fett angezeigte Bereich zeigt Ihnen den Teil der Anweisung, den Sie jetztvervollständigen müssen. Mit 3URPSW�erwartet der Compiler den Text, derspäter im Dialog erscheinen soll, und zwar „Das Formular wird geladen“.

4. Da die anderen Argumente optional sind, sollten Sie erst durch die Eingabeeines Kommas bekunden, daß Sie noch mehr Argumente verwenden wollen.Sobald Sie das Komma erfaßt haben, erscheint ein weiterer Hilfetext in Formeiner Auswahlliste.

Syntaxhilfe

Page 7: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 35

Abb. 4.8: Visual Basic-Editor: Auswahlliste zum Vervollständigen von Code

5. Um zum Beispiel zu der Meldung noch das Informationszeichen zu erhalten,brauchen Sie die Konstante YE,QIRUPDWLRQ. Um sie nicht komplett eintippenzu müssen, gibt es mehrere Alternativen:

$ Sie wählen die Konstante mit Hilfe der Maus aus der Auswahlliste aus undfügen diese durch einen Doppelklick endgültig ein.

$ Sie tippen die Buchstabenfolge vbi und haben sich dadurch mit der Tastaturpositioniert. Die Einfügung erfolgt dann mit Hilfe der Taste , der Cursorsteht anschließend hinter dem Befehl, oder mit Hilfe der Taste . Indiesem Fall können Sie in einer neuen Zeile einen weiteren Befehl eingeben.

$ Selbstverständlich können Sie auch bei einem aufgeklapptenKombinationsfeld die Cursorsteuertasten + zur Positionierungverwenden. Die endgültige Eingabe sollte aber auch dann mit den Tasten

bzw. erfolgen.

6. Versehen Sie den Dialog noch mit einem Titel und testen Sie IhreAnweisungen, indem Sie das Programm starten. Es müßte sofort Ihre0VJ%R[-Anweisung erscheinen.

Sie haben die Vervollständigung von Texten mit IntelliSense kennengelernt.

Auch wenn die gerade kennengelernten Hilfsmittel nicht sichtbar sind, ärgern Siesich nicht. Die nachfolgenden Tips zeigen Ihnen vielleicht an warum.

$ Haben Sie sich vertippt?Wenn Sie beispielsweise mgsbox anstelle von msgbox getippt haben, kenntder Compiler das Schlüsselwort nicht und kann Ihnen folglich auch keineHilfe anbieten.

$ Haben Sie ein Trennzeichen vergessen?Wenn Sie direkt hinter der Anweisung (ohne Leerstelle, Komma oderKlammer) weitertippen, weiß der Editor nicht, daß ein Teil beendet ist, undkann Ihnen darum auch keine Hilfe für den nächsten Part anzeigen.

Page 8: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

36 © Microsoft GmbH 1999

$ Haben Sie vielleicht zwischendurch das Programm verlasssen?Schon ein kurzes Wechseln zur Online-Hilfe oder zum Explorer reicht aus,um beim anschließenden Rücksprung die QuickInfo bzw.Vervollständigungslisten nicht mehr zu sehen. Hier helfen Ihnen Symbole ausder Bearbeitungs-Symbolleiste, diese Hilfen wieder sichtbar zu machen.

Abb. 4.9: Bearbeitungs-Symbolleiste

$ Sind die Editor-Optionen richtig eingestellt?Sollten Sie alle bisher aufgeführten Tips überprüft haben und die Anzeigeerfolgt immer noch nicht, so könnten auch die Optionen falsch eingestelltsein. Kontrollieren Sie diese mit Hilfe des Befehls ([WUDV�→�2SWLRQHQ���und der Registerkarte .

Abb. 4.10: Allgemeine Optionen für QuickInfo und Vervollständigen im Editor

4.2.2 Groß- oder Kleinschreibung?

Haben Sie sich schon einmal die Frage gestellt „Muß ich die Groß-/Kleinschreibung bei der Erfassung berücksichtigen?“ Diese Frage ist sehreinfach zu beantworten. Wenn Sie Ihren Programmcode tippen, schreiben Siealles in Kleinbuchstaben. Sobald Sie die Zeile fertig erfaßt haben, analysiert derCompiler Ihre Eingabe und korrigiert Ihre Kleinschreibung in korrekte Groß- undKleinschreibung. So haben Sie ein weiteres Hilfsmittel an der Hand, mit dem Sie,falls Sie darauf achten, Ihre Tippfehler bereits während der Erfassung erkennenkönnen.

Aber auch hierbei gibt es eine Ausnahme. Falls Sie eigene Namen anlegen, zumBeispiel bei der Deklaration von Prozeduren mit 6XE oder )XQFWLRQ, sollten Sieeine gemischte Schreibweise verwenden. Nur so kann später bei der Ansprachedieser Namen eine Umsetzung erfolgen.

4.2.3 Und was sonst noch wichtig ist!

Neben den bereits erwähnten Besonderheiten zur Erfassung von Anweisungen imEditor gibt es noch einige allgemeine Hinweise, die, falls Sie noch unbekanntsind, auf jeden Fall beachtet werden sollten.

Page 9: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 37

$ TastaturbefehleFalls Sie die Tastaturbefehle im Editor nicht beherrschen, sollten Sie dieseetwas unter die Lupe nehmen. Nur so können Sie schnell und sicher Texteerfassen bzw. kopieren und verschieben.

$ Drag & DropAuch eine Textverschiebung bzw. das Kopieren (Taste zusätzlichgedrückt halten) mit Drag & Drop ist möglich.

$ Automatische SyntaxüberprüfungWenn Sie sich ein bißchen mit der Sprache vertraut gemacht haben, solltenSie auf die automatische Syntaxüberprüfung verzichten (auszustellen über([WUDV�→�2SWLRQHQ���). Wohlgemerkt! Die Kennzeichnung desSyntaxfehlers mit roter Schriftfarbe ist dann weiterhin sichtbar. Es entfälltnur die manchmal lästige Meldung mit dem Fehlerhinweis.

$ KommentareGeizen Sie nicht mit Kommentaren. Gut dokumentierte Prozedurenerleichtern nicht nur die Einarbeitung in fremdes Programmiergut. Auch Sieals Entwickler können sich nicht alles merken. Hinterlegen Sie IhreAnmerkungen direkt in den Programmcode. Dazu schreiben Sie zu BeginnIhres Kommentars ein einfaches Hochkomma (Taste + ). DieserKommentar darf auch hinter einer Anweisung stehen. Wenn Sie einen ganzenBlock auskommentieren wollen, so steht dafür ein Symbol in derSymbolleiste %HDUEHLWHQ�zur Verfügung, mit dem Sie nur dieProgrammzeilen markieren müssen. Den Rest erledigen die Icons%ORFN�DXVNRPPHQWLHUHQ bzw. $XVNRPPHQWLHUXQJ�GHV�%ORFNV�DXIKHEHQ.

Abb. 4.11: Bearbeitungs-Symbolleiste mit umrahmten Einrück- und Kommentar-Icons

$ EinrückungenStrukturieren Sie Ihren Programmcode, indem Sie abhängige Befehle jeweilseinrücken. So können Sie auf den ersten Blick erkennen, ob noch eineAbschlußanweisung fehlt. Auch die Ausrede „Einrückungen im Nachhineinsind zu aufwendig“ zählt nicht. Schließlich stehen auch hierfür Symbole zurVerfügung, die Ihnen die Arbeit wesentlich erleichtern.

4.3 Variablen und Konstanten

Variablen und Konstanten werden benötigt, wenn sich ein Programm etwas„merken“ soll. Während eine Variable ihren Wert jederzeit ändern kann, ist diesbei einer Konstante nicht möglich (daher auch der Name). Bevor auf dieDeklaration und Anwendung näher eingegangen wird, kommen Sie leider nichtan einem kleinen theoretischen Teil vorbei.

Page 10: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

38 © Microsoft GmbH 1999

4.3.1 Gültigkeitsbereiche

Betrachten Sie zunächst die Gültigkeitsbereiche von Variablen und Konstanten.Kommt Ihnen dieses Thema bekannt vor? Richtig! Sie haben es inZusammenhang mit den Prozedurdeklarationen näher kennengelernt. Bei derDeklaration von Variablen und Konstanten haben die Gültigkeitsbereiche fastnoch mehr Bedeutung. Hinzu kommt noch eine neue, lokale Gültigkeitsstufe. Zuwissen, welchen Gültigkeitsbereich Ihre Variable erhalten soll, ist insofern vonBedeutung, als es bei der Deklaration mit angegeben werden muß.

$ Mit 'LP deklarieren Sie eine lokale Variable. Sie ist nur innerhalb einerProzedur bekannt und muß darum auch zwischen 6XE und (QG�6XE angelegtwerden.

$ Mit 3ULYDWH wird eine Modulvariable (oder eine Modulkonstante) deklariert.Auch hier sagt der Name schon viel aus, nämlich daß sie innerhalb desgesamten Moduls bekannt ist. Modulvariablen sollten am Anfang desModuls, vor der ersten Prozedur, jedoch hinter den Kompileroptionendeklariert werden.

$ Mit 3XEOLF deklarieren Sie eine öffentliche bzw. globale Variable (oderKonstante). Sie ist im gesamten Projekt bekannt, allerdings auch nur dann,wenn sie in einem allgemeinen Modul deklariert worden ist.

$ Eine mit 6WDWLF deklarierte Variable hat einen lokalen Gültigkeitsbereich. ImUnterschied zu der mit 'LP deklarierten behält sie ihren Wert während dergesamten Laufzeit, während sonst der Wert beim Verlassen der Prozedurverloren ist.

Hinweise zur Verwendung von globalen VariablenIn einer Visual Basic-Anwendung sollten globale Variablen nur verwendetwerden, wenn es keine andere Möglichkeit gibt, auf Daten aus mehrerenFormularen zuzugreifen. Wenn es unumgänglich ist, globale Variableneinzusetzen, ist es sinnvoll, alle in einem einzigen Modul zu deklarieren, nachder Funktion gruppiert. Geben Sie dem Modul einen kategorisierenden Namenwie z.B. PUBLIC.BAS.

Hinweise zur Verwendung von ModulvariablenSie sollten nach Möglichkeit modularen Code verwenden. Wenn in IhrerAnwendung z.B. ein Dialogfeld angezeigt wird, sollten Sie alle Steuerelementeund den Code für die Ausführung der Dialogfeldfunktionen in einem Formulardefinieren. Auf diese Weise erleichtern Sie sich die Organisation des Codes derAnwendung durch praktische Komponenten, und der Verwaltungsaufwand zurLaufzeit wird minimiert.

Page 11: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 39

4.3.2 Datentypen und die Geschichte von Basic

Die Erstentwickler von BASIC, Kemeny und Kurtz, benutzten nur 2 Datentypen,nämlich Zahlen und Strings. Wenn der Variablenname nicht gerade mit einemDollarzeichen endete, war sie eine Zahl, ansonsten ein String. Die Zahl war eineFließkommazahl, also eine Zahl, in der auch Dezimalstellen gespeichert werdenkonnten. So etwas wie eine Ganzzahl, auch Integer genannt, existierte nicht.Kemeny und Kurtz behaupteten sogar, daß eine Ganzzahl nur so etwas wie einFormat wäre.

Wer jedoch die Prozessor-Architektur kennt, weiß, daß der Unterschied zwischenGanz- und Fließkommazahlen nicht nur ein Relikt aus der Vergangenheit ist. DieEntwickler der anderen BASIC-Compiler haben auch nicht an dieBelanglosigkeit geglaubt und fügten Ihrem BASIC-Wortschatz andere Typenhinzu. Dies geschah zunächst durch die Erweiterung der Typkennzeichen ($, &,%!,# @), die dann dem Namen vorangestellt wurden. Daneben konnte man auchmit einer speziellen 'HI-Anweisung festlegen, welches Anfangszeichen zuwelchem Typ paßte.

Microsoft brachte die Welt der Datentypen wieder etwas durcheinander, als derTyp 9DULDQW ins BASIC-Geschehen eingriff. Mit diesem Typ wählt nicht derProgrammierer den Typ, sondern BASIC. Damit war die Grundlage für eineautomatische Typkonvertierung geschaffen. Varianten können auch Spezialfälleenthalten wie 1XOO, d.h. die Variable enthält keine gültigen Daten, oder (PSW\,wodurch der Variablen kein Anfangswert zugewiesen wird, und 1RWKLQJ, um dieVerbindung einer Objektvariablen zum zugehörigen Objekt aufzuheben.

4.3.3 Typkennzeichen Ja oder Nein?

Wäre jede Frage nur mit einem Ja oder Nein zu beantworten, wäre zumindest dieProgrammierwelt etwas einfacher zu verstehen. Aber wie immer hat eineAntwort viele Gesichter.

Im vorherigen Abschnitt haben Sie aus der BASIC-Vergangenheit gelernt, daßdie Verwendung von Typkennzeichen in älteren Versionen sein mußte. So kannes durchaus passieren, daß Sie bei übernommenen Programmroutinen nochTypkennzeichen vorfinden, die man heute in dieser Form nicht mehr verwendet.Stammt das Programm vielleicht von einem „alten“ BASIC-Hasen? In dem Fallist die Verwendung auch einfach Gewohnheit.

Doch wie sollen Ihre neuen Programme aussehen?

Visual Basic selbst entfernt sich langsam von Typkennzeichen (wohlgemerkt nurvon den Kennzeichen, nicht von den Typen). So gibt es ab Version 4 zwei neueTypen %\WH und %RROHDQ, die über keine Typkennzeichen verfügen (schließlichist auch der Vorrat an Sonderzeichen einmal zu Ende). Sie sollten also in Zukunftauf die Verwendung verzichten.

Page 12: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

40 © Microsoft GmbH 1999

Wie so oft bestätigt auch hier eine Ausnahme die Regel. So gibt es inVerbindung mit BASIC-Funktionen diese oft zweimal, einmal als nackteVariante und einmal mit einem anschließenden Dollarzeichen (z.B.: 0LG und0LG�). Die Funktion 0LG liefert einen Teilstring im Typ 9DULDQW zurück, währenddie gleichnamige Funktion mit einem Dollar einen Teilstring vom Typ 6WULQJzurückgibt. Sollten Sie vorhaben, das Ergebnis dieser Funktion mit anderenStrings zu verketten, so ist die Dollar-Variante besser geeignet, da VB keineKonvertierung vornehmen muß. Es sieht zwar nicht so schön aus, doch solltenSie in diesem Fall auf die kosmetischen Gründe verzichten und lieber denGeschwindigkeitsvorteil nutzen.

4.3.4 Vorhandene Datentypen

Jede Variable (und Konstante) besitzt einen Datentyp. Dieser gibt an, welcheArten von Daten gespeichert werden können. Nachfolgend sind die wichtigstenDatentypen in einer Tabelle zusammengefaßt:

Datentyp Speicher-bedarf

Wertebereich Abk.

%\WH 1 Byte 0 – 255 byt

,QWHJHU 2 Bytes -32.768 bis 32.767 int

%RROHDQ 2 Bytes 7UXH (0) oder )DOVH�(-1) bln

/RQJ 4 Bytes -2.147.483.648 bis 2.147.483.647 lng

6LQJOH 4 Bytes Kleine Gleitkommazahl mit einfacherGenauigkeit (siehe auch Online-Hilfe)

sng

'RXEOH 8 Bytes Große Gleitkommazahl mit doppelterGenauigkeit (siehe auch Online-Hilfe)

dbl

&XUUHQF\ 8 Bytes Skalierte Ganzzahl-922.337.203.685.477,5808 bis922.337.203.685.477,5807

cur

'DWH 8 Bytes 1. Januar 100 bis 31. Dezember 9999. dtm

6WULQJ je nachInhalt

Texte, Zahlen und Sonderzeichen. str

2EMHFW 4 Bytes Beliebiger Verweis auf ein Objekt. obj

Page 13: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 41

Datentyp Speicher-bedarf

Wertebereich Abk.

9DULDQW min16 Bytes

Universeller Datentyp, der jeden anderen Typaufnehmen kann

vnt

In der Online-Hilfe finden Sie einen Datentyp 'HFLPDO, den Sie nicht direkt alsVariablentyp deklarieren können. Er kann nur mit einem Wert vom Typ 9DULDQWbenutzt werden. Mit der &'HF-Funktion können Sie jedoch einen Wert vom Typ9DULDQW erstellen, dessen Untertyp 'HFLPDO ist.

4.3.5 Namenskonventionen

Die Vergabe von Variablen- oder Konstantennamen ist selbstverständlich nachBelieben möglich. Trotzdem sollten Sie, falls in Ihrer Firma hierfür noch keineRichtlinie existiert, sich gewisser Regeln bedienen, die Sie auch in Ihrer Online-Hilfe wiederfinden.

Abb. 4.12: Weg zur Online-Hilfe für Namenskonventionen

Hier wird empfohlen, dem Variablennamen ein Präfix voranzustellen, damitjederzeit der Datentyp und der Gültigkeitsbereich erkannt werden kann.Nachfolgend ein Beispiel:

Gültigkeitsbereich Präfix Beispiel

Global g gstrBenutzername

Modulebene m mblnZwischenergebnis

Lokal in Prozedur Keines dblBeschleunigung

Page 14: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

42 © Microsoft GmbH 1999

Bei der Konstantennamensvergabe wird im Gegensatz zur Online-Hilfe nochempfohlen, einen Zusatzpräfix FRQB�zu vergeben. So könnte eine globaleKonstante mit dem Inhalt des Firmennamens FRQBJVWU)LUPHQQDPH heißen.

4.3.6 Variablendeklaration

Wie sieht die Syntax aus? Der nachfolgende Auszug aus der Online-Hilfe zeigtdie verschiedenen Anweisungen dazu.

Abb. 4.13: Syntax der Variablendeklarationen

Die optionalen Argumente :LWK(YHQWV und 1HZ werden zu einem späterenZeitpunkt näher erklärt. Ansonsten können Sie erkennen, daß Sie mehrereVariablen vom gleichen Gültigkeitsbereich in einer Anweisung deklarierenkönnen. Wenn der Typ weggelassen wird, verwendet Visual Basic den Datentyp9DULDQW. Mit ,QGL]HV können Sie Datenfelder deklarieren. Damit können Siemehrere Informationen vom gleichen Typ mit einem Namen ansprechen.Unterschieden werden die einzelnen Felder nur durch die Angabe des Indexes.Einige Beispiele verdeutlichen die Syntax:

$ 3XEOLF�JYQW,QIR��JLQW$Q]DKO�$V�,QWHJHUMit dieser Anweisung werden zwei öffentliche Variablen deklariert, die erstevom Typ 9DULDQW, die zweite vom Typ ,QWHJHU.

$ 'LP�VWU$EWHLOXQJ���7R����$V�6WULQJDeklaration eines lokalen Datenfeldes zur Speicherung von bis zu fünfverschiedenen Texten.

$ 3ULYDWH�PFXU3UHLV�$V�&XUUHQF\��PGWP.DXIGDWXP�$V�'DWHMit dieser Anweisung deklarieren Sie zwei Modulvariablen.

4.3.7 Variablendeklaration, muß das sein?

Variablen müssen nicht deklariert werden, sie können einfach direktangesprochen werden. Diese Art der Variablenverwendung ist nicht nurunprofessionell, sie kann auch zu Fehlern führen, deren Suche sich als äußerstschwierig erweisen kann. Dazu ein kleines Beispiel.

Page 15: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 43

Sie wollen die Notwendigkeit zur erzwungenen Variablendeklaration erkennen.

1. Schreiben Sie in der Ereignisprozedur beim Öffnen eines Formulars denfolgenden Programmcode:

curPreis = 1.25intAnzahl = 50MsgBox „Gesamtpreis = „ & curPreis * intAnzah1

Beachten Sie bitte, daß Sie das Dezimalkomma als Punkt eingeben müssen.Außerdem sehen Sie, daß eine Textverkettung mit dem Verkettungsoperator realisiert wird.

2. Testen Sie das Programm. Wenn Sie den Programmcode im Start-Formularhinterlegt haben, erscheint direkt das folgende Ergebnis:

Abb. 4.14: Richtiges Ergebnis der Preisberechnung

3. Bauen Sie jetzt einen Fehler ein, indem Sie in der 0VJ%R[-Anweisung dieVariable LQW$Q]DKO in intAnzahll ändern.

4. Lassen Sie das Programm erneut ablaufen. Wie sieht jetzt das Ergebnis aus?

Abb. 4.15: Falsches Ergebnis durch die Verwendung einer falschen Variable

5. Durch die Verwendung der falschen Variablen LQW$Q]DKOO wird diese neuangelegt. Die Multiplikation erfolgt dann mit dem Wert 0. Darum also dasfalsche Ergebnis. Erweitern Sie Ihren Programmcode um dieVariablendeklaration, die Sie hinter der Sub-Anweisung wie folgt einfügen:

Dim curPreis As Currency, intAnzahl As Integer

6. Testen Sie Ihr Programm erneut. Sie werden feststellen, daß immer noch dasfalsche Ergebnis erscheint. Schließlich verwenden Sie immer noch denfalschen Variablennamen im Ausdruck. Abhilfe schafft hier eineCompileroption. Fügen Sie als erste Anweisung im Modul, vor der erstenProzeduranlage, den nachfolgenden Code ein:

Option Explicit

Variablen-deklaration

Page 16: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

44 © Microsoft GmbH 1999

7. Und wie sieht’s jetzt aus? Das Programm läuft zwar immer noch nicht richig,jedoch erscheint jetzt eine Fehlermeldung

9DULDEOH�QLFKW�GHILQLHUWund nach einer Bestätigung mit steht der Cursor auf dem falschgeschriebenen Variablennamen.

Verwenden Sie doch ab sofort in jedem Modul 2SWLRQ�([SOLFLW, oder nochbesser, lassen Sie diese Option immer automatisch einfügen. Sie erreichen diesmit Hilfe des Befehls ([WUDV�→�2SWLRQHQ... In der Registerkarte aktivieren Sie die Option ã 9DULDEOHQGHNODUDWLRQ�HUIRUGHUOLFK.

4.3.8 Konstanten

Eine Konstante ist ein benanntes Element, das während der gesamtenProgrammausführung den gleichen Wert behält. Sie können Konstanten anstellevon literalen Werten einsetzen. Eine Konstante darf nie auf der linken Seite einerZuweisung stehen.

Für den Ablauf von Programmen sind Konstanten nicht unbedingt erforderlich.Trotzdem gibt es einige Gründe, warum Sie auf Konstanten nicht verzichtensollten:

$ Konstanten machen Ihren Code lesbarer.

Als Beispiel betrachten Sie den Dialog 0VJ%R[. Hier können Sie über einennumerischen Wert die Form der Schaltflächen bestimmen. Die Zahl 4 bedeutet,daß zwei Schaltflächen erscheinen: eine mit und eine mit . DasFragezeichen im Dialog ist mit dem Wert 32 sichtbar zu machen. Beide Elementeerreichen Sie durch eine Addition von 4+32=36. Doch wissen Sie auch nochnach einem Jahr oder noch später, welche Bedeutung in diesem Zusammenhangder Wert 36 hat?

$ Auch die Entwickler von VBA haben die Bedeutung von Konstanten erkanntund dem System bereits einige vordefinierte Konstanten mitgegeben. Siekönnen anstelle des Wertes 4 in Verbindung mit 0VJ%R[ auch die Konstante9E<HV1R verwenden und für das Fragezeichen 9E4XHVWLRQ. Anstelle von4+32 können Sie 9E<HV1R + 9E4XHVWLRQ schreiben. Wenn Sie nachgeraumer Zeit diesen Code betrachten, können Sie ihn sicherlich besserverstehen als die entsprechende Zahlenkombination.

$ Konstanten machen Ihr Programm pflegbarer.

Page 17: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 45

Haben Sie vor, Ihre Anwendung mehrsprachig einzusetzen? Stellen Sie sich indiesem Fall einmal den Aufwand vor, die Texte, die sich dem Anwenderpräsentieren, zu suchen, um Sie dann zu übersetzen. Falls Sie mit Konstantenarbeiten, ist die Umstellung fast kinderleicht. Sie schreiben allesprachabhängigen Texte in ein separates Modul als globale Konstanten undmüssen dann nur die Texte übersetzen lassen. Der Austausch eines Modulssichert die Sprachunabhängigkeit.

$ Konstanten verhindern Fehler.

Datenfelder haben Sie bereits ansatzweise kennengelernt. Die Angabe der Größewurde in den Beispielen immer mit einem Literal gezeigt. Dabei ist in denseltensten Fällen bei einer Änderung nur die Zahl zu ändern. Oft sindÜberlaufprüfungen mit dieser Zahl verbunden. Bei einer Änderung "vergißt" manoft gerade diese Prüfungen. Wenn Sie sich angewöhnen, anstelle einer Zahl eineKonstante, z.B. 0$;3(56$1=, sowohl bei der Deklaration als auch bei denPrüfungen zu verwenden, brauchen Sie vor einer Änderung keine Angst zuhaben. Die Umstellung funktioniert dann problemlos.

Es ließen sich sicherlich noch mehr Beispiele konstruieren, doch zunächst solltenSie die Syntax der Konstanten-Deklarationen näher kennenlernen:

>3XEOLF�_�3ULYDWH@�&RQVW�.RQVW1DPH�>$V�7\S@� �$XVGUXFN

Wie Sie der Syntax entnehmen können, gibt es keine lokalen Konstanten (dasSchlüsselwort Dim ist nicht vorgesehen), sondern nur modulare(Standardeinstellung) und globale Konstanten. Im Gegensatz zu Variablen wirdeiner Konstanten direkt ein Wert zugewiesen und das darf nur einmal, außerhalbeiner Prozedur, auf Modulebene passieren.

Beispiele$ &RQVW�0$;:(57� ����

Definiert eine Modulkonstante vom Typ Variant.

$ 3XEOLF�&RQVW�7(;7�� ��+,/)(�

Deklariert eine globale Konstante.

$ 3ULYDWH�&RQVW�*$1=��$V�,QWHJHU� ��

Bezeichnet eine Modulkonstante vom Typ Integer.

$ &RQVW�7(;7�� ��+DOOR���'RXEOH��$V�'RXEOH� �������

Deklariert mehrere Konstanten innerhalb einer Zeile.

Page 18: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

46 © Microsoft GmbH 1999

AnmerkungNeben der "normalen" Konstanten-Deklaration kann die &RQVW-Anweisung zumDefinieren von Visual Basic-Konstanten für eine bedingte Kompilierungverwendet werden. Mehr dazu erfahren Sie wieder in der Online-Hilfe.

4.4 Kommunikation mit dem Anwender

Gleichgültig welche Art von Programm Sie entwickeln - die Kommunikation mitdem Anwender ist äußerst wichtig. Informationen müssen eingeholt werden,Aktionen bestätigt, Sicherheitsabfragen sollten Löschvorgängen vorausgehen. Siesehen, immer benötigen Sie die Verbindung mit dem Anwender, und dazubrauchen Sie spezielle Befehle.

4.4.1 Einfacher Eingabedialog InputBox

InputBox ist keine Anweisung, sondern eine Funktion. Das bedeutet für Sie, daßdieser Befehl nie alleine in einer Zeile stehen darf, sondern nur zusammen mitanderen Befehlen, zum Beispiel einer Zuweisung:

,QSXW%R[��:LH�ODXWHW�,KU�1DPH"�ist darum falsch. Richtig wäre:

VWU1DFKQDPH� �,QSXW%R[��:LH�ODXWHW�,KU�1DPH"�

Betrachten Sie zunächst wieder die Syntax:

Abb. 4.16: Syntax InputBox-Funktion

Der anstelle von SURPSW angegebene Text wird als Eingabeaufforderung ineinem Dialogfeld angezeigt. Falls vorhanden, wird der als WLWOH deklarierteParameter als Überschrift im Dialog eingetragen. Mit dem Parameter GHIDXOWkönnen Sie dem Dialog einen Standardwert vorgeben und mit [SRV und \SRVden Dialog plazieren (ohne Angabe wird er zentriert). Mit KHOSILOH und FRQWH[Wkönnen Sie eine benutzerdefinierte Hilfe entwickeln, die durch die Funktionstaste

im Dialog abgerufen werden kann. Der Dialog zeigt die Schaltfläche und an. Klickt der Benutzer auf , gibt die Funktion eine leere String-

Zeichenfolge ���� zurück.

Der Name des Benutzers soll im Hauptformular Ihres ersten Programmes MEPals Bezeichnungsfeld immer sichtbar sein und gleichzeitig in einer öffentlichenVariablen für einen eventuellen späteren Bedarf gespeichert werden.

1. Öffnen Sie Ihr Projekt MEP.

InputBox

Page 19: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 47

2. Richten Sie ein neues Modul ein über3URMHNW�→�0RGXO�KLQ]XI�JHQ���, in der Registerkarte 0RGXOauswählen und mit bestätigen.

3. Geben Sie im Eigenschaftsfenster dem Modul einen Namen: → MEP_Public

4. Falls noch nicht vorhanden, verwenden Sie die Compileroption zur explizitenVariablendeklaration:Option Explicit

5. Definieren Sie eine öffentliche Variable zur Speicherung desBenutzernamens:Public gstrBenutzername As String

6. Aktivieren Sie Formular MEP_START mit einem Doppelklick auf denNamen im Projekt-Explorer und definieren Sie ein Labelfeld mit dem NamenlblBenutzername und der Caption MEP grüßt.

Abb. 4.17: Labelfeld einfügen

7. Wechseln Sie mit zum Code-Fenster, und erfragen Sie denBenutzernamen mit der InputBox-FunktiongstrBenutzername = InputBox("Ihr Name?“, „Anfrage Benutzername")Me.lblBenutzername.Caption = Me.lblBenutzername.Caption & _

gstrBenutzernameDas Schlüsselwort 0H wird zur Kennzeichnung des aktuellen Objektesverwendet (hier das Formular MEP_START). Es würde zwar auch ohnefunktionieren, jedoch hilft Ihnen der Editor durch Vervollständigungwährend der Erfassung, wenn Sie 0H verwenden. Der Unterstrich leitet eineFolgezeile ein. Selbstverständlich können Sie die Anweisung auch komplettin einer Zeile schreiben.

8. Speichern und testen Sie Ihr Programm.

Sie haben die Kommunikation mit Hilfe der InputBox-Funktion kennengelernt.

Um den Netzwerkanmeldenamen zu erfragen, brauchen Sie eine API-Funktion.

Page 20: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

48 © Microsoft GmbH 1999

4.4.2 Der MsgBox-Dialog

Der Dialog 0VJ%R[ kann in zwei Variationen benutzt werden. Die ersteMöglichkeit ist die der MsgBox-Anweisung. Diese Alternative wird benutzt, umdem Anwender eine gezielte Meldung in Form eines Windows-Fensterszukommen zu lassen. Als Beispiel:

0VJ%R[�Ä)HUWLJ�³

In diesem Fall teilen Sie dem Anwender mit, daß das Programm mit seinenAktionen fertig ist. Mit der zweiten Variante können Sie noch Information inForm von Standardschaltflächen einholen, die dann ausgewertet werden können.Betrachten Sie die Syntax:

Abb. 4.18: Syntax der MsgBox-Funktion

Bis auf das Argument EXWWRQV sind alle Argumente bekannt und mehrmals,zuletzt im vorherigen Kapitel, beschrieben worden. Mit dem Argument EXWWRQVkönnen Sie unterschiedliche Schaltflächen aktivieren. Je nachdem, mit welcherSchaltfläche der Anwender die 0VJ%R[ bestätigt, erhalten Sie unterschiedlicheRückgabewerte, auf die Sie im Programmcode reagieren können.

Page 21: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 49

Möglichkeiten des Arguments buttonsKonstante Wert Beschreibung

YE2.2QO\ 0 Schaltfläche wird angezeigt.

9E2.&DQFHO 1 Schaltflächen und anzeigen.

9E$ERUW5HWU\,JQRUH 2 Schaltflächen , und anzeigen.

9E<HV1R&DQFHO 3 Schaltflächen , und anzeigen.

9E<HV1R 4 Schaltflächen und anzeigen.

9E5HWU\&DQFHO 5 Schaltflächen und anzeigen.

9E&ULWLFDO 16 Meldung mit Stop-Symbol anzeigen.

9E4XHVWLRQ 32 Meldung mit Fragezeichen-Symbolanzeigen.

9E([FODPDWLRQ 48 Meldung mit Ausrufezeichen-Symbolanzeigen.

9E,QIRUPDWLRQ 64 Meldung mit Info-Symbol anzeigen.

9E'HIDXOW%XWWRQ� 0 Erste Schaltfläche ist Standardschaltfläche.

9E'HIDXOW%XWWRQ� 256 Zweite Schaltfläche ist Standardschaltfläche.

9E'HIDXOW%XWWRQ� 512 Dritte Schaltfläche ist Standardschaltfläche.

9E'HIDXOW%XWWRQ� 768 Vierte Schaltfläche ist Standardschaltfläche.

9E$SSOLFDWLRQ0RGDO 0 An die Anwendung gebunden. Der Benutzer mußauf das Meldungsfeld reagieren, bevor er seineArbeit mit der aktuellen Anwendung fortsetzenkann.

9E6\VWHP0RGDO 4096 An das System gebunden. Alle Anwendungenwerden unterbrochen, bis der Benutzer auf dasMeldungsfeld reagiert.

Page 22: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

50 © Microsoft GmbH 1999

Die erste Gruppe von Werten (0 - 5) beschreibt die Anzahl und den Typ der imDialogfeld angezeigten Schaltflächen. Die zweite Gruppe (16, 32, 48, 64)beschreibt die Symbolart. Die dritte Gruppe (0, 256, 512) legt dieStandardschaltfläche fest und die vierte Gruppe (0, 4096) legt fest, in welcherForm das Dialogfeld gebunden ist. Um aus mehreren Gruppen Alternativenverwenden zu können, müssen Sie die einzelnen Zahlen addieren, jedoch nureine Zahl aus jeder Gruppe.

Die nachfolgenden Beispiele zeigen alle den gleichen, ebenfalls abgebildetenDialog.

$QWZRUW� �0VJ%R[��/|VFKHQ"³�������Ä/|VFKDEIUDJH��$QWZRUW� �0VJ%R[��/|VFKHQ"³����������������Ä/|VFKDEIUDJH��$QWZRUW� �0VJ%R[��/|VFKHQ"³��YE<HV1R���YE4XHVWLRQ���B�YE'HIDXOW%XWWRQ���Ä/|VFKDEIUDJH��

Abb. 4.19: Beispiel für eine MsgBox-Anweisung mit Schaltflächen und Symbol

Jetzt fehlt nur noch die Information, welcher Wert im oben aufgeführten Beispielder Variablen $QWZRUW zugewiesen wird, wenn auf eine bestimmte Schaltflächegeklickt wird:

Konstante Wert Schaltfläche

YE2. 1

YE&DQFHO 2

YE$ERUW 3

YE5HWU\ 4

YE,JQRUH 5

YE<HV 6

YE1R 7

Zur Verdeutlichung wieder ein Beispiel, wobei die Programmieranfänger mit derErklärung der ,I-Anweisung noch etwas warten müssen. Sie wird erst imnächsten Kapitel erklärt.

Page 23: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 51

���$QWZRUW� �0VJ%R[��/|VFKHQ"³��YE<HV1R���YE4XHVWLRQ���B�YE'HIDXOW%XWWRQ���Ä/|VFKDEIUDJH��,I�$QWZRUW� �YE<HV�7KHQ�0VJ%R[�Ä'HU�/|VFKEHIHKO�ZLUG�DXVJHI�KUW�(OVH�0VJ%R[�Ä'HU�/|VFKEHIHKO�ZLUG�QLFKW�DXVJHI�KUW�(QG�,I���

Hier noch eine andere Alternative, die ebenfalls das gleiche bewirkt:

���,I�0VJ%R[��/|VFKHQ"³�������Ä/|VFKDEIUDJH��� ���7KHQ���

4.4.3 Formulare und andere Kommunikationsmöglichkeiten

Natürlich gibt es noch andere Möglichkeiten, mit dem Anwender zukommunizieren. Eine davon ist die Verwendung von Formularen. Diese undeventuelle andere Alternativen gehören jedoch nicht in dieses Kapitel. Darumwird auch erst später darauf eingegangen.

4.5 Visual Basic-Steueranweisungen

Eine Möglichkeit, Programmcode zu steuern, ist die Verwendung vonEreignisprozeduren. Ein Ereignis tritt ein, zum Beispiel das Schließen einesFormulars, und die Ereignisprozedur wird angestoßen, das heißt, die dorthinterlegten Programmanweisungen laufen ab. Doch was ist, wenn innerhalbeiner Prozedur Programmcode „gesteuert“ ablaufen soll? Vielleicht sollen nur inbestimmten Fällen Anweisungen ablaufen, oder bestimmte Programmzeilensollen sogar mehrfach durchlaufen werden. Für die Realisierung dieses Ablaufsbietet die Programmierung drei Arten von Steueranweisungen: Sequenzen,Selektionen und Iterationen. Die beiden letzteren werden natürlich auch mitEntscheidungen und Schleifen bezeichnet.

Zur Umsetzung von Sequenzen braucht nicht viel gesagt zu werden. Hierfürmüssen nur die benötigten Befehle hintereinandergeschrieben werden.

Page 24: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

52 © Microsoft GmbH 1999

4.5.1 Selektionen

Wie der Name bereits aussagt, können Sie mit Selektionen Auswahlen treffen.Falls erforderlich, führen Sie an gegebener Stelle Prüfungen durch undentscheiden fallweise, was gemacht wird. Unterschieden werden einfacheSelektionen, die mit einer ,I-Anweisung ausgeführt werden, undMehrfachselektionen, die sowohl mit ,I als auch mit der 6HOHFW�&DVH-Anweisungrealisiert werden können.

IF-AnweisungWie immer, wenn ein Befehl genau analysiert werden soll, sollten Sie sich zuerstdie Syntax näher anschauen:

Abb. 4.20: Syntax der beiden Varianten der If-Anweisung

Die erste Variante (alles in einer Zeile) sollten Sie nur in Ausnahmefällenbenutzen und auch nur ohne (OVH-Anweisung. Zu viel in einer Zeile fördert nichtgerade die Lesbarkeit eines Programmes.

Entscheidend dafür, welche Anweisungen ausgeführt werden, sind dieBedingungen. Von der Definition her ist Bedingung ein Ausdruck, der alsErgebnis Wahr (True) oder Falsch (False) liefert. Einige Beispiele fürBedingungsausdrücke:

$ $�! �%Wahr, wenn A größer oder gleich B ist.

$ )lOOLJNHLWVGDWXP�������'DWHWahr, wenn Fälligkeitsdatum plus 5 Tage kleiner als das Systemdatum ist.

$ ,V1XPHULF�YQW(LQJDEH�Wahr, wenn die Variable YQW(LQJDEH als Zahl ausgewertet werden kann.

$ 0VJ%R[��:HLWHU³��YE<HV1R���YE4XHVWLRQ�� �YE<HVWahr, wenn der Anwender die MsgBox-Anweisung mit bestätigt hat.

Sie entwickeln eine Prozedur zum Kennenlernen der ,I-Anweisung.If-Anweisung

Page 25: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 53

Die zu entwickelnde Prozedur soll zwei Zahlen über ,QSXW%R[ anfordern unddiese am Ende summiert ausgeben. Dabei ist zu berücksichtigen, daß ein Klickauf einen Prozeduraustritt (Exit Sub) zur Folge habe muß und daß dieEingabe eines Ausdruckes, der nicht in eine Zahl konvertiert werden kann (zuprüfen mit ,V1XPHULF), automatisch in eine 0 konvertiert wird.

1. Für die Realisierung entwickeln Sie zuerst im Startformular Ihres MEP-Programms eine Schaltfläche (Namen: cmdRechnen), die Ihre Prozedur beimKlicken auslösen soll.

2. Definieren Sie den Programmcode zum Abruf und zur Prüfung einer Zahl,indem Sie mit einem Doppelklick auf die Schaltfläche in der Entwurfsansichtdie entsprechende Ereignisprozedur aktivieren:

Dim vntZahl1, vntZahl2vntZahl1 = InputBox("Die 1. Zahl?")If vntZahl1 = „„ Then

Exit SubEnd IfIf IsNumeric(vntZahl1) Then

vntZahl1 = CDbl(vntZahl1)Else

vntZahl1 = 0End If

3. Wiederholen Sie die Anweisungen für die zweite Zahl.

4. Summieren Sie die Zahlen und geben Sie das Ergebnis über 0VJ%R[ aus.MsgBox vntZahl1 & „+“ & vntZahl2 & „=„ & vntZahl1 + vntZahl2

Abb. 4.21: Ergebnisbeispiel einer Addition

Select Case-AnweisungIn Visual Basic ist die 6HOHFW�&DVH-Struktur als Alternative zu ,I���7KHQ���(OVH,Iverfügbar. Eine 6HOHFW�&DVH-Struktur arbeitet mit einem einzigen Prüfausdruck,der nur einmal zu Beginn der Struktur ausgewertet wird. Visual Basic vergleichtdas Ergebnis dieses Ausdrucks anschließend mit den Werten der möglichenFälle, die durch &DVH eingeleitet werden. Wenn eine Übereinstimmung vorliegt,wird der zu diesem Fall gehörige Anweisungsblock ausgeführt: DieFunktionalität der 6HOHFW�&DVH-Anweisung ist der Funktionalität der,I���7KHQ���(OVH�Anweisung ähnlich, aber 6HOHFW�&DVH erzeugt effizienterenCode und ist besser lesbar, wenn es mehrere Auswahlmöglichkeiten gibt.

Eine andere Alternative:...If vntZahl1 = "" Then

Exit SubElseIf IsNumeric(vntZahl1) Then...

Page 26: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

54 © Microsoft GmbH 1999

Wie immer sollten Sie sich zuerst die Syntax anschauen:

Abb. 4.22: Syntax der Select Case-Anweisung

Und jetzt ein Code-Beispiel dazu. Sie können ihn selbstverständlich in einerProzedur erfassen, müssen jedoch die Arbeitsumgebung selbst aufbauen(Definition Schaltfläche, Deklaration Variablen, Zuweisung Variablen, usw.).

...Select Case intAnredeschlüsselCase 1 strAnrede = „Sehr geehrter Herr „ & strNachnameCase 2 strAnrede = „Sehr geehrte Frau „ & strNachnameCase 3 strAnrede = „Lieber „ & strVornameCase 4 strAnrede = „Liebe „ & strVornameCase Else strAnrede = „Sehr geehrte Damen und Herren"End SelectMsgBox strAnrede...

Eigentlich sagt der Programmcode schon alles aus. Trotzdem hier nochmal dieErklärung. Das Feld VWU$QUHGHVFKO�VVHO enthält in verschlüsselter Form die Artder Anrede. Der Inhalt 1 heißt zum Beispiel, daß eine förmliche Anrede (Sehrgeehrter) für einen Herrn verwendet werden soll, während die 2 die förmlicheAnrede für eine Frau sein soll. 3 dagegen ist die persönliche Anrede (Lieber) füreinen Herrn, 4 die für eine Frau. Alle anderen Inhalte sollen mit „Sehr geehrteDamen und Herren“ übersetzt werden.

4.5.2 Iterationen (Schleifen)

Der Begriff Schleife bezieht sich auf alle Arten iterativer Steuerstrukturen, d.h.auf Anweisungen, die zu einer wiederholten Ausführung bestimmterProgrammabschnitte führen. Wie bei anderen Programmiersprachen, verfügtauch VB über eine bestimmte Auswahl an Schleifentypen:

Page 27: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 55

$ 'R���/RRSMit diesem Schleifentyp können Sie alle Arten von wiederholtenAusführungen realisieren, und zwar so lange (oder bis) eine Bedingung demWert 7UXH entspricht.

$ )RU���1H[WDiese Schleifenart wird auch Zähl-Schleife genannt. Sie verwendet einenZähler, um Anweisungen mit einer festgelegten Anzahl an Wiederholungenauszuführen.

$ )RU�(DFK���1H[WDiese sehr moderne Schleifenart ist mit der objektorientiertenProgrammierung hinzugekommen. Sie wiederholt eine Gruppe vonAnweisungen für jedes Objekt in einer Auflistung.

$ :KLOH���:HQGDiese Schleife könnte ersatzlos gestrichen werden, wenn da nicht die altenBASIC-Programme wären. Verwenden Sie anstelle :KLOH die 'R���/RRS-Anweisung. Sie stellt eine strukturiertere und flexiblere Möglichkeit zurAusführung von Schleifen dar.

Do...Loop-SchleifeDie 'R�/RRS-Anweisung ist ein Schleifen-Steuerelement mit mehrerenAusprägungen, die Sie am besten aus der Syntax ablesen können:

Abb. 4.23: Syntax Do...Loop-Anweisung

Die erste Variante wiederholt einen Block mit Anweisungen, solange (:KLOH)oder bis (8QWLO) eine Bedingung den Wert 7UXH hat.

Diese Variante gleicht der ersten, bis auf den Unterschied, daß die Abfrage aufSchleifenende erst in der /RRS-Anweisung erfolgt. Auf diese Weise wird derSchleifenrumpf mindestens einmal durchlaufen, während bei der erstenAlternative die Schleifenanweisung eventuell gar nicht durchlaufen wird.

Ohne Berücksichtigung von ([LW�'R, gibt es vier verschiedene Ausprägungen:

'R�:KLOH�������/RRS

'R����/RRS�:KLOH���

'R�8QWLO�������/RRS

'R���/RRS�8QWLO���

Page 28: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

56 © Microsoft GmbH 1999

EndlosschleifeNicht geplante Endlosschleifen passieren dann, wenn die Ende-Bedingung niezutrifft. Das kann leicht bei Tippfehlern passieren. Beispiel:

6XE�(QGORVVFKOHLIH���=lKOHU� ����'R�8QWLO�=lKOHU������=lKOHU� �=lKOHU�����/RRS(QG�6XE

Die Schleife wird zunächst durchlaufen, da die Bedingung 8QWLO�=lKOHU�����nicht erfüllt ist (der Initialisierungswert beträgt schließlich 10). Innerhalb derSchleife wird der Zähler weiter erhöht, so daß auch damit das Schleifenende nieerreicht wird. Die korrekte Lösung für diese Aufgabe kann nur aus derAufgabenstellung abgeleitet werden. Vermutlich ist im oben aufgeführtenBeispiel nur die Variable falsch initialisiert worden (Soll: 0, Ist: 10).

AnmerkungDrücken Sie + , um eine Endlosschleife zu beenden.

Bewußt eingerichtete Endlosschleifen dagegen sind sehr nützlich und erhöhendie Lesbarkeit eines Programmes. Diese Art von Schleifen werden Sie in demnächsten Beispiel kennenlernen.

Sie lernen an einem konkreten Beispiel zwei 'R-Schleifen kennen, eine davonals Endlosschleife.

Richten Sie zwei verschachtelte Schleifen in der Startprozedur eines Formularsein. Die äußere Schleife ist eine Endlosschleife, während die innere Schleifeeinen Zählvorgang (von 1 bis 1000) vornimmt. Hinter der inneren, aber vor demEnde der Endlosschleife soll der Anwender gefragt werden, ob der Zählvorgangnochmals erfolgen soll. Falls nicht, soll die Endlosschleife verlassen werden.

So könnte der Programmcode aussehen:

Dim i As Integer Do i = 0 Do While i <= 1000 i = i + 1 Loop If MsgBox("Es wurde bis 1000 gezählt! Nochmal?“, _ vbYesNo + vbQuestion) = vbNo Then Exit Do End If Loop

Do-LoopSchleifen

Page 29: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 57

Sie haben ein Beispiel mit zwei 'R-Schleifen realisiert.

Die For...Next-AnweisungDie )RU���1H[W-Anweisung wird auch Zählschleife genannt, weil dieSchleifenanweisung bereits das Zählen übernimmt. Darum erübrigt sich dasHochzählen einer Zählervariablen innerhalb der Schleife. Zunächst wieder dieSyntax:

Abb. 4.24: Syntax der For...Next-Anweisung

Sie sehen, daß alle erforderlichen Informationen für eine Zählschleife vorhandensind: Initialisierung und Hochzählen der Zählervariablen und die Behandlung derEnde-Bedingung. Die beiden nachfolgend abgebildeten Prozeduren zeigen diegleiche Anwendung, jeweils mit einer anderen Schleifenart:

Zählschleife mit Do...Loop

6XE�7HVW=lKO���=lKOHU� ��'R�:KLOH�=lKOHU�� ���

0VJ%R[�=lKOHU=lKOHU� �=lKOHU����

/RRS(QG�6XE

Zählschleife mit For...Next

6XE�7HVW'R=lKO���)RU�=lKOHU� ���7R����6WHS��

0VJ%R[�=lKOHU1H[W�=lKOHU

(QG�6XE

Zwei Vorteile sind offensichtlich. Sie brauchen weniger Programmcode, und diemit )RU���1H[W realisierte Schleife ist übersichtlicher. Ein weiterer Vorteil istnicht so offensichtlich, jedoch ebenso wichtig. Die )RU-Variante ist im Ablaufschneller.

ÜbungÄndern Sie Ihr Beispiel mit den zwei 'R-Schleifen so, daß die innere Schleifeeine )RU-Schleife wird.

Die For Each...Next-AnweisungWenn Sie mit Objekten arbeiten, können Sie die )RU�(DFK����1H[W-Anweisungverwenden, um Anweisungen für jedes Element in einem Datenfeld oder einerAuflistung ausführen zu lassen.

Page 30: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

58 © Microsoft GmbH 1999

Abb. 4.25: Syntax For Each...Next-Anweisung

Betrachten Sie dazu den nachfolgenden Programmcode:

'LP�REM)RUPXODU�$V�)RUP�)RU�(DFK�REM)RUPXODU�,Q�)RUPV���0VJ%R[�REM)RUPXODU�1DPH�1H[W

Das Beispiel zeigt auf der Auflistung der geöffneten Formulare alle Namen an.Interessant ist dabei noch die Variablendeklaration vom Typ 2EMHNW, Untertyp)RUP. Da die Variable REM)RUPXODU nur Informationen aus Formularenaufnehmen soll, ist die direkte Zuordnung zum )RUP-Objekt besser, als eineallgemeine Zuordnung mit $V�2EMHFW.

Die )RU�(DFK���1H[W-Anweisung ist auch für die Bearbeitung aller Elementeeines Datenfeldes zu verwenden. Auch hierzu wieder ein Beispiel:

'LP�GEO6WG���7R������7R����$V�'RXEOH��YQW6WXQGHQ'LP�GEO*HVDPW�$V�'RXEOH

���� �$QZHLVXQJHQ�]XP�)�OOHQ�GHV�$UUD\V

�)RU�(DFK�YQW6WXQGHQ�,Q�GEO6WG�GEO*HVDPW� �GEO*HVDPW���YQW6WXQGHQ�1H[W�0VJ%R[�Ä:RFKHQDUEHLWV]HLW�DOOHU�0LWDUEHLWHU��Ä��GEO*HVDPW

Anstelle der )RU�(DFK���1H[W-Anweisung hätte der Entwickler auch zweiZählschleifen in folgender Form verwenden können:

)RU�L� ���7R���)RU�LL� ���7R���GEO*HVDPW� �GEO*HVDPW���GEO6WG�L��LL��1H[W�LL�1H[W�L

Bei der Verwendung der )RU�(DFK���1H[W-Anweisung mit einem Datenfeld mußdas in der Syntax mit (OHPHQW bezeichnete Objekt eine Variable vom Typ9DULDQW sein.

Page 31: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

Microsoft® Visual Basic 6.0 59

4.5.3 Unterschiedliche Vergleichsarten

Sowohl bei Selektionen, als auch bei Iterationen entscheiden bestimmteAusdrücke darüber, welche Programmzeilen als nächstes verarbeitet werden.Wenn Ihr Programmcode nicht so verläuft, wie Sie es erwarten, kann dasProblem an falschen Datentypen liegen. Betrachten Sie dazu das nachfolgendeBeispiel:

'LP�$��$V�6WULQJ��$��$V�6WULQJ$�� �����$�� �� �EHVVHU��$�� �Ä��³��$�� �Ä��,I�$����$��7KHQ�0VJ%R[�Ä$��LVW�NOHLQHU�$��

Wenn Sie diesen Programmcode ablaufen lassen, wird als Ergebnis die Meldung$��LVW�NOHLQHU�$� erscheinen, obwohl Sie vielleicht etwas anderes erwartethaben. Zur Erklärung: Da beide Variablen vom Typ 6WULQJ sind, wird einTextvergleich und nicht ein numerischer Vergleich vorgenommen. Da einTextvergleich von links nach rechts erfolgt, kann der Compiler bereits nach demVergleich des ersten Zeichens seine Entscheidung treffen. Da „1“ kleiner als „9“ist, wird der Wahr-Zweig durchlaufen, also die Meldung ausgegeben.

Dieser kleine Hinweis soll Ihnen zeigen, daß Datentypen auch die Vergleichsartbestimmen und falsche Typen auch falsche Vergleiche zur Folge haben können,so daß Sie bei unerwarteten Vergleichsergebnissen die Datentypen vergleichensollten.

Page 32: 4 Grundlagen der Visual Basic- · PDF fileGrundlagen der Visual Basic-Programmierung Microsoft® Visual Basic 6.0 31 3. Als Programmbefehl geben Sie eine Meldung in Form eines Dialoges

Grundlagen der Visual Basic-Programmierung

60 © Microsoft GmbH 1999

Testfragen$ Frage 1: Welche Aussage zum Thema Fehlerbehandlung ist richtig?

A. Eine On Error-Fehlerbehandlung wird benötigt, um alleKompilerfehler innerhalb eines Programms sichtbar zu machen.

B. Mit einer On Error-Fehlerbehandlung können Laufzeitfehler, diewährend der Testphase festgestellt werden, abgefangen werden.

C. Mit der On Error-Fehlerbehandlung kann ein EntwicklerVorsorge treffen und unvorhergesehene Laufzeitfehler abfangen.

D. Die On Error-Fehlerbehandlung wird benötigt, umProgrammabstürze zu verhindern.

$ Frage 2: Mit welcher Eigenschaft wird die Beschriftung eines Objektesverändert?

A. Name

B. Caption

C. Label

$ Frage 3: Welche Aussage(n) zu den Themen Ereignisse, Eigenschaften undMethoden sind richtig?

A. Ereignisse werden zur Steuerung von Programmcode benutzt.

B. Mit Methoden und Eigenschaften können Objekte bearbeitetwerden.

C. Mit einer speziellen Eigenschaft kann ich neue Objektehinzufügen.

D. Eine Objektmethode kann auch die Eigenschaften einesObjektes verändern.

$ Frage 4: Welche Aussage speziell zum Thema Eigenschaften ist richtig?

A. Eigenschaften können nur im Eigenschaftenfenster eingestelltwerden.

B. Eigenschaften können immer, sowohl im Eigenschaftenfensterals auch zur Laufzeit, eingestellt werden.

C. Eine Veränderung einer Eigenschaft zur Laufzeit ist nurmöglich, wenn die Objektdefinition dies vorsieht.