100% fanden dieses Dokument nützlich (1 Abstimmung)
68 Ansichten58 Seiten

Visual Basic PDF

Hochgeladen von

A. Anktech
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
100% fanden dieses Dokument nützlich (1 Abstimmung)
68 Ansichten58 Seiten

Visual Basic PDF

Hochgeladen von

A. Anktech
Copyright
© All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Nr.

4
KnowWare SPECIAL
4,-
utschlan
d
2. aktualisierte Ausgabe 88 Seiten
De
Visual Basic

Visual Basic für Einsteiger

Peter Hatje

4*qltpk #- v- b* ÊÀËÄ
[Link]
Deutschland: 4,- EUR Österreich: 4,60 EUR
Schweiz: 8 SFR Luxemburg: 4,70 EUR Italien: 5,50 EUR
Acrobat Reader - Bestellung - Autoren gesucht

Acrobat Reader: Wie ...


F5/F6 öffnet/schließt die Ansicht Lesezeichen
Strg+F sucht

Im Menü Ansicht stellst du ein, wie die Datei gezeigt wird


STRG+0 = Ganze Seite STRG+1 = Originalgrösse STRG+2 = Fensterbreite

Im selben Menü kannst du folgendes einstellen:: Einzelne Seite,


Fortlaufend oder Fortlaufend - Doppelseiten .. Probiere es aus, um
die Unterschiede zu sehen.

Navigation
Pfeil Links/Rechts: eine Seite vor/zurück
Alt+ Pfeil Links/Rechts: Wie im Browser: Vorwärts/Zurück
Strg++ vergrößert und Strg+– verkleinert

Bestellung und Vertrieb für den Buchhandel


Bonner Pressevertrieb, Postfach 3920, D-49029 Osnabrück
Tel.: +49 (0)541 33145-20
Fax: +49 (0)541 33145-33
bestellung@[Link]
[Link]/bestellen

Autoren gesucht
Der KnowWare-Verlag sucht ständig neue Autoren. Hast du ein Thema,
daß dir unter den Fingern brennt? - ein Thema, das du anderen Leuten
leicht verständlich erklären kannst?
Schicke uns einfach ein paar Beispielseiten und ein vorläufiges
Inhaltsverzeichnis an folgende Adresse:
lektorat@[Link]
Wir werden uns deinen Vorschlag ansehen und dir so schnell wie
möglich eine Antwort senden.

[Link]
Inhalt 3

Vorbemerkung...................................................4 Dateiverwaltung .............................................. 32


Das Programm...................................................5 Datei lesen.................................................... 32
Erwerb ............................................................5 Datei speichern ............................................... 32
Installation......................................................5 Zweites Programmprojekt ............................. 33
Starten ................................................................6 Oberfläche.................................................... 33
Einrichten..........................................................6 Code ............................................................. 35
Beschreibung ....................................................7 Grafik ............................................................... 41
Projekt-Fenster ...............................................7 Grundlagen ..................................................... 41
Eigenschaften-Fenster ....................................7 Methoden ..................................................... 41
Werkzeug-Fenster ..........................................8 Eigenschaften............................................... 41
Form-Fenster ..................................................8 Simulationen .................................................... 52
Basic..................................................................10 Epidemie im Aquarium................................ 52
Code................................................................10 Grundannahmen ........................................... 52
Variablen.........................................................10 Code ............................................................. 52
Variablen deklarieren ...................................11 Anhang ............................................................. 55
Geltungsbereich............................................11 Suffixe für Steuerelemente........................... 55
Variablenwerte .............................................11 Text mit Zeichenketten-Funktionen
Konstanten ......................................................11 umkehren ................................................... 55
Operatoren ......................................................12 Funktion ....................................................... 55
Standardoperatoren ......................................12 Zeichenkette umkehren mit Funktion .......... 56
Vergleichsoperatoren ...................................12 Eingabe-Dialogfeld (Input-Box) .................. 57
Logische Operatoren ....................................12
Funktionen ......................................................13
Numerische Funktionen ...............................13
Zeichenkettenfunktionen..............................13
Visual Basic ......................................................14
Eigenschaften ...............................................14
Ereignisse .....................................................14
Methoden .....................................................14
Prozeduren....................................................15
Funktionen ...................................................15
Das erste Programm........................................16
Bedienoberfläche..........................................16
Zufall ............................................................20
Programmcode ................................................21
Schaltflächen für den Tipp ...........................21
Die Zufallszahl des Computers ....................22
Die Prozedur Auswertung anlegen...............22
Die Anzeige der Augenzahl .........................23
Prozedur Würfelanzeige anlegen .................25
Mitteilungsfenster (Messagebox) .................26
Kontrollstrukturen...........................................28
GOTO...........................................................28
Entscheidungen...............................................29
If-Strukturen.................................................29
Select/Case-Struktur.....................................29
Schleifen .........................................................30
For-Next-Schleife.........................................30
While-Wend-Schleifen.................................30
Do-Loop-Schleifen.......................................31

Visual Basic für Einsteiger - 02-09-13


4 Vorbemerkung

Vorbemerkung
Du hast dich entschieden, eigene Programme Dieses Vorurteil gegenüber Basic wird heute
schreiben zu wollen? Ich finde das gut. Du immer noch gepflegt, auch wenn heimlich große
befindest dich damit in einer guten Tradition, Teile von Anwendungen nach dem Visual Basic
denn es ist noch nicht allzu lange her (allerdings – Prinzip entwickelt werden.
bei dem Tempo, dass die Computerentwicklung Die Umgebung um den Heimcomputer C64
vorlegt, sind es Jahrhunderte), dass Amateure – entwickelte sich zu einer richtigen Szene. Es gab
und da vornehmlich Jugendliche und auch eine 'hauseigene' Zeitschrift, es gab jede Menge
Kinder – auf Teufel komm raus programmierten. Zubehör in jedem Kaufhaus (bis hin zu
Es war die Zeit des Commodore 64, kurz C64 Schnittstellen für Robotermodelle aus dem
genannt. Er stand in fast jedem Kinderzimmer, Spielwarenbereich), es gab Spiele in Hülle und
hatte eine weltweite Verbreitung und müsste sich Fülle und es gab junge Leute, die ihre
vor heutigen PCs im Prinzip nicht verstecken. Programme der Öffentlichkeit zur Verfügung
Alles, was PCs heute leisten, konnte der C64 stellten. Das war so etwas wie die heutige
auch – natürlich sehr viel langsamer. Und in Shareware-Szene, allerdings öffentlicher.
seinen Arbeitsspeicher würde nicht einmal ein Programmlistings waren jedem zugänglich und
heutiger Maustreiber passen. Programmierkniffe und –tricks wurden jedem
Er hatte aber einen großen Vorteil: er war billig zugänglich gemacht. Sehr demokratisch, das
und nach dem Einschalten (Hochbooten gab es Ganze.
nicht) stand sofort die Programmiermöglichkeit Dann kam der PC; die Firma Commodore
in Basic (Beginners Allpurpose Symbolic verschlief die Entwicklung, der C64 verschwand
Instruction Code) zur Verfügung. Das wurde von und merkwürdigerweise endete damit auch das
den Besitzern kräftig benutzt. private Programmieren.
Es gibt eine ganze Reihe von Heute haben wir Programmiermöglichkeiten, von
Programmiersprachen. Für jeden besonderen denen man damals nur träumen konnte und daher
Zweck wurde eine andere entwickelt. ist es umso unverständlicher, dass sich keine
Grundsätzlich haben aber alle dieselbe Aufgabe: neuen Fan-Clubs bilden.
sie sollen es dem Menschen ermöglichen, sich
einer Maschine verständlich zu machen. Auch Vielleicht gelingt das ja über diesen Weg.
wenn es manchmal nicht so aussieht: ein Manuskript und Programme sind mit
Computer ist dumm. Die Maschine führt brav Jugendlichen durchgearbeitet worden. Dabei
und zuverlässig Programme aus, die in einer wurde die Bandbreite von kompletter
Form geschrieben sind, die beide, Mensch und Unkenntnis, auch mit Windows, bis zu einigen
Computer, verstehen. Erfahrungen mit Basic berücksichtigt. Daher
Basic hat den Vorteil, dass es leicht zu erlernen werden einige Leser das Eine oder Andere als zu
ist, verhältnismäßig unkompliziert aufgebaut ist ausführlich beschrieben betrachten, andere
und trotzdem zu ganz passablen Ergebnissen vielleicht noch mehr Grundkenntnisse benötigen.
führt.
Ich bin ein Opfer der neuen Rechtschreibung, will
Gerade diese Vorzüge ließen Profis die Nase sagen, ich muss ganz neu lernen. Ich hoffe, es
rümpfen. Wenn Schüler programmieren konnten, wird mir verziehen, wenn noch nicht alles
wurde an ihrem Image der geheimnisumwitterten einwandfrei richtig ist.
Kenner von Computern gekratzt. Folglich wurde
Basic madig gemacht. Man muss allerdings
zugeben, dass irrsinnig viel Schrott programmiert
wurde.

Visual Basic für Einsteiger - 02-09-13


Das Programm 5

Das Programm
Visual Basic ist ein umfassendes System zur nicht im 1. Schuljahr das Lösen von
Entwicklung von Anwendungen unter Windows. quadratischen Gleichungen beigebracht.
Es gibt verschiedene Ausgaben oder Editionen Visual Basic entwickelt sich immer weiter und
und verschiedene Entwicklungen oder lässt kaum Lösungsmöglichkeiten aus. Mit hoch
Versionen. Derzeit liegt die Version Visual Basic spezialisierten Programmiersprachen, die
6.0 vor. Eine Edition wäre z.B. die Visual Basic beispielsweise für komplexe Grafikoperationen
Learning Edition von Visual Basic 6.0. Darauf eingesetzt werden, kann Visual Basic natürlich
aufbauend gibt es die Professional Edition. nicht konkurrieren, für alltägliche
Erwerb Grafiklösungen reicht es aber allemal – wie wir
Die Learning Edition liegt einem Buch über sehen werden.
Visual Basic 6.0 bei. Zitat aus der Readme-Datei: Installation
Hast du deine Version von Visual Basic
Das Verzeichnis \VB6 enthält die Ablaufmodell- erworben, muss das Programm auf der Festplatte
Edition von Visual Basic 6. Diese Visual Basic-
installiert werden. Zunächst solltest du dir
Edition ist gegenüber anderen Visual Basic-
überlegen, in welchem Verzeichnis du Visual
Editionen in folgenden Punkten eingeschränkt:
Basic installieren willst. Da ich nicht weiß, wie
Sie können keine ausführbaren Dateien (.exe) du deine Dateiordner organisiert hast, schlage ich
erstellen. vor, die Vorgaben des Installationsprogramms zu
übernehmen und das Programm aus dem
Sie können die meisten Beispiele des Buches Startmenü heraus zu starten.
nachvollziehen, die Programmierung von
ActiveX-Steuerelementen ist allerdings nicht Wer sich gut mit Windows auskennt, kann sich
möglich. ja einen eigenen Ordner für Visual Basic
anlegen, wobei die Pfade möglichst kurz
Sie erhalten keinen Support. gehalten werden sollten, damit später beim
Es gibt keine Online-Hilfe. Einsetzen von Pfaden keine ellenlangen
Dateinamen eingesetzt werden müssen.
Auf vielen CDs von Computerzeitschriften findet Du startest die Installation, indem du die CD
man eine kostenlose CCE-Version von Visual einlegst, START | AUSFÜHREN | DURCHSUCHEN
Basic 5.0. Sie ist allerdings in Englisch. Zudem wählst und im CD-Laufwerk VB6\[Link]
kann man durch Stöbern von Zeitschriften-CDs aktivierst. Durchweg kannst du einfach auf
eine Version 4.0 finden und installieren. Schüler WEITER klicken, die Lizenzbedingungen
und Studenten können sich kostengünstig Lern- bestätigen und den gewünschten Pfad
Editionen besorgen. Die Beschaffung ist zwar übernehmen oder einen eigenen anlegen.
etwas umständlich, aber die Vertreiber von Zwischendrin wird der Rechner einmal neu
Software helfen sicherlich gerne weiter. gestartet, wobei du die CD nicht aus dem
Kostengründe können es also nicht sein, wenn Laufwerk entfernen darfst.
Visual Basic nicht eingesetzt wird.
Schließlich erscheint die Meldung, dass die
Dieses Heft ist so aufgebaut, dass ab Version 4.0 Installation erfolgreich abgeschlossen wurde.
alle Programme entwickelt werden können. Auf
die Einschränkungen der Billig-Ausgaben wird Im Verlauf dieses Heftes werden verschiedene
Rücksicht genommen. Alle Einschränkungen Programme entwickelt, die irgendwo gespeichert
haben für Anfänger keine Bedeutung. Auch werden müssen. Daher solltest du dir wegen der
wenn davon geträumt wird, eine Internet- besseren Übersichtlichkeit einen Ordner anlegen,
Anbindung zu programmieren, müssen zunächst in dem du die Dateien speicherst. Da das
einmal grundlegende Kenntnisse für den Alltag Register VORHANDEN im Startdialog des
vorhanden sein. In der Schule wird einem auch Programms als Standard auf den Ordner VB98
verweist, passt hier ein Ordner PROGRAMME hin.

Visual Basic für Einsteiger - 02-09-13


6 Starten

Starten
Inmitten von vielen Fenstern wartet das
Dialogfeld zur Auswahl der Projekte auf dich.
Vorgewählt ist STANDARD-EXE im Register
NEU. Außerdem gibt es die Register
VORHANDEN und AKTUELL. Im Register
VORHANDEN werden Verzeichnisse geöffnet, in
denen sich Projekte befinden; im Register
AKTUELL sind alle schon einmal geöffneten
Programme abgelegt. Hier findest du deine neu
entwickelten Programme wieder, nachdem du sie
Visual Basic kann auf unterschiedliche Weise gespeichert hast.
gestartet werden. Der üblichste Weg ist wohl: Bei dir sieht die Sache vermutlich so ähnlich aus
STARTMENÜ | PROGRAMME | MICROSOFT VI- wie in der nebenstehenden Abbildung. Hier
SUAL BASIC 6.0 | MICROSOFT VISUAL BASIC 6.0. markierst du [Link] und wählst
ÖFFNEN, worauf das Programm loslegt.
Einrichten
Jetzt hast du Visual Basic in aller Pracht vor dir. Fenster – und das brauchen wir ständig. Also
Als erstes solltest du das PROJEKT-Fenster sollten wir es auch unbedingt etwas breiter
verkleinern, indem du mit der Maus an den machen. Das FORMULAR-LAYOUT-Fenster
unteren Rand fährst (der Mauszeiger ändert seine dagegen klickst du weg – das brauchen wir
Form) und den Fensterrand nach oben ziehst; vorläufig nicht.
dadurch vergrößert sich das EIGENSCHAFTEN-

Visual Basic für Einsteiger - 02-09-13


Starten 7

Die FORM ist die Bedienoberfläche des späteren einen Start- und einen Endpunkt, eine bestimmte
Programms. Je nach den Bedürfnissen kann seine Dicke, unterschiedliche Farben. Ein Kreis hat
Größe einfach verändert werden, indem du die einen bestimmten Radius, kann mit Farben oder
sogenannten ANFASSER, also die kleinen Mustern ausgefüllt sein usw.
Kästchen an der FORM, mit der Maus greifst, d.h. Diese und andere Eigenschaften findest du im
anklickst und dann bei gehaltener Maustaste an EIGENSCHAFTEN-Fenster. Oben im Fenster siehst
ihnen ziehst, wodurch sich die FORM vergrößert du die Objektliste, in der im Moment nur die
bzw. verkleinert. Die FORM ist im FORMULAR- Form zu finden ist. Darunter sind zwei Register,
DESIGNER-Fenster angelegt – dessen Titelleiste in denen du nach Geschmack die Anzeige der
zeigt also ganz logisch den Namen PROJEKT1 – Eigenschaften einstellen kannst. Die linke Spalte
FORM1 (FORM) an. führt die EIGENSCHAFTEN auf (leider nur in
Es gibt noch eine ganze Reihe individueller Englisch) und die rechte Spalte die
Einstellmöglichkeiten, die du vornehmlich unter dazugehörigen WERTE. Diese Werte können
EXTRAS | OPTIONEN findest. direkt im Eigenschaften-Fenster verändert
werden.
Beschreibung
1. Du klickst auf BACKCOLOR, also auf die
Sehen wir uns nun die einzelnen Fenster an – mit Hintergrundfarbe,
ihrer Hilfe gestaltet du das Programm, das du
entwickeln möchtest. 2. ... dann auf den Pfeil in der Werteliste,
Projekt-Fenster 3. ... dann auf PALETTE
Im PROJEKT-FENSTER werden alle Zutaten zu 4. ... und endlich auf eine Farbe
einem Projekt gesammelt. Dazu gehört Visual Basic führt die Veränderungen jeweils
standardmäßig eine Form. Es können noch sofort aus – fertig!
andere Formen oder Module dazukommen. 5. Nun wählst du AUSFÜHREN | STARTEN oder
In der Symbolleiste des Projekt-Fensters gibt es drückst F5 bzw. die entsprechende
drei Schaltflächen: Schaltfläche in der Symbolleiste.
CODE ANZEIGEN,
OBJEKT ANZEIGEN, Fährst du mit dem Mauszeiger über eine
ORDNER WECHSELN. Schaltfläche, erscheint nach einem kurzen
Augenblick ein sogenannter Tooltip.
Über diese Schaltflächen kannst du vom Objekt
(das ist hier die Form mit dem Namen FORM1) Was du jetzt siehst, ist die Bedienoberfläche
zum CODE-Fenster wechseln. Das Code-Fenster während der Laufzeit, d.h. das Programm
zeigt dir natürlich noch nichts an, denn wir haben läuft jetzt. Arbeitest du an der
ja noch keinen Code. Genaueres über das Cofe- Bedienoberfläche, bist du also in der
Fenster erfährst du auf Seite 14. Entwicklungsphase.
6. Du aktivierst AUSFÜHREN | BEENDEN bzw.
Den Begriff Code kennst du sicher. Damit wird
meistens Geheimschrift oder auch Chiffre drückst auf die SCHLIEßEN-Schaltfläche der
verbunden. So ähnlich sieht der Code für Visual Form oder die entsprechende Schaltfläche in
Basic auch für einen Laien aus. Dieses Heft soll der Symbolleiste.
dafür sorgen, dass Visual Basic-Code für dich Mit der dritten Schaltfläche in diesem
keine Geheimschrift mehr ist. Zusammenhang kannst du den Programmablauf
unterbrechen, um Überprüfungen des Programms
Eigenschaften-Fenster vorzunehmen.
Menschen gibt es in vielen Formen: groß oder Die einzelnen Eigenschaften werden im Laufe
klein, dick oder dünn, mit verschiedenen Namen der Programmentwicklung besprochen. Im
usw. All das sind Eigenschaften. Jedes Objekt in übrigen ist unter dem EIGENSCHAFTEN-Fenster
Visual Basic hat natürlich auch seine eine Kurzbeschreibung zu sehen, ansonsten gilt:
Eigenschaften, wobei eine Linie weniger Lernen durch Ausprobieren.
Eigenschaften hat als ein Kreis. Eine Linie hat

Visual Basic für Einsteiger - 02-09-13


8 Starten

Werkzeug-Fenster Dieses Fenster kann durch unzählige Werkzeuge


Das Werkzeug-Fenster beinhaltet die für jeden erdenklichen Zweck ergänzt werden.
sogenannten Werkzeuge oder Tools. Damit Das machst du so: du wählst DATEI | NEUES
werden vorgefertigte Steuerelemente für die PROJEKT, verneinst die Abfrage nach Speichern
Bedienoberfläche zur Verfügung gestellt. und wählst VB ABLAUFMODELL-EDITION-
STEUERELEMENTE. Nun werden zusätzliche
Auch hier erschient wieder ein Tooltip mit der Steuerelemente geladen, die wir in diesem Heft
(leider) englischen Bezeichnung. aber nicht verwenden werden.
Tooltip Deutsch Über DATEI | NEUES PROJEKT – und Verneinung
ZEIGER Zeiger der Abfrage nach Speichern – aktivierst du die
[Link] und kehrst so wieder in den
PICTUREBOX Bildfeld Ausgangszustand zurück.
LABEL Bezeichnungsfeld Wie bekommst du nun die Schaltflächen auf die
Form? Wie immer bei Visual Basic gibt es
TEXTBOX Textfeld mehrere Möglichkeiten. Du kannst:
FRAME Rahmen • eine Schaltfläche anklicken, den Mauszeiger
in die Form setzen, die linke Maustaste
COMMAND- Befehlsschaltfläche
drücken und bei gedrückter Maustaste ein
BUTTON
Rechteck aufziehen. Fertig!
CHECKBOX Kontrollkästchen
• die Schaltfläche im Werkzeugfenster
OPTION- Optionsfeld doppelklicken. Fertig!
BUTTON Alle Schaltflächen haben Anfasser, mit denen du
COMBOBOX Kombinationsfeld die Größe der Schaltfläche verändern kannst; die
Schaltfläche kann bei gedrückter linker
LISTBOX Dateiliste
Maustaste auch verschoben werden.
HSCROLLBAR Horizontale
Es kann jeweils nur eine Schaltfläche aktiv sein –
Bildlaufleiste welche, das ist an den Anfassern zu erkennen. Im
VSCROLLBAR Vertikale Bildlaufleiste Eigenschaften-Fenster werden die jeweiligen
Eigenschaften für die Schaltfläche automatisch
TIMER Zeitgeber angezeigt. Willst du die Eigenschaften für eine
Schaltfläche ändern, kannst du sie in der Form
DRIVELIST- Laufwerksfeld
anklicken und sie aktivieren oder in der
BOX
Auswahlliste des Eigenschaften-Fensters
DIRLISTBOX Verzeichnislistenfeld anwählen.
FILELISTBOX Dateilistenfeld
SHAPES Figuren Form-Fenster
Das FORM-Fenster wird meistens nur Form oder
LINE Linie
Formular genannt. Hier findet die Gestaltung
IMAGE Bildanzeigefeld deiner Anwendung statt. Auf der Form, oder man
DATA Datensteuerelement sagt auch in der Form, werden die Objekte
angeordnet, die in ihrer Kombination die
OLE Datenverknüpfung Bedienoberfläche ergeben. Beim Start des
über OLE Programms ist dann nur noch die Form mit ihren
Elementen aktiv und wartet darauf, dass etwas
geschieht.

Visual Basic für Einsteiger - 02-09-13


Starten 9

In der offiziellen Version von Visual Basic 6 gibt Hier folgt nun eine Liste der Eigenschaften:
es die Möglichkeit, eine sogenannte EXE-Datei Eigenschaft Beschreibung
zu erstellen. Wenn du genau hinsiehst, kannst du
NAME Name der Form
im Datei-Menü ein abgeblendetes Menü namens
PROJEKT1-EXE ERSTELLEN erkennen. Damit BORDERSTYLE Rahmentyp der Form
wird ein ausführbares Programm entwickelt, dass BACKCOLOR Hintergrundfarbe
du auch auf Rechnern ausführen kannst, auf
denen kein Visual Basic installiert ist. Diese FORECOLOR Schriftfarbe
Möglichkeit ist auf dieser Testversion leider nicht CONTROLBOX Systemmenüfeld (in der
vorhanden. Titelleiste links),
Die Form ist in das FORMULAR-DESIGNER- sichtbar, unsichtbar.
Fenster eingebettet. In der Titelleiste der Form FONT Schriftarten in
siehst du die Beschriftung (Caption) der Form. Formularen.
Die änderst du, indem du im Eigenschaften- ICON Legt das Symbol fest,
Fenster die Eigenschaft Caption wählst und einen das angezeigt wird,
anderen Wert eingibst. Etwas verwirrend ist, dass wenn das Formulars
die Form auch den Namen Form1 hat. Das minimiert wird.
kannst du im Eigenschaften-Fenster bei der
Eigenschaft Name sehen. Den namen kannst du MAXBUTTON Legt fest, ob die
natürlich ändern. Unter diesem namen wird die Schaltfläche
Form im Programm angesprochen. Maximieren beim
Programmablauf
Wie du siehst, übernimmt Visual Basic deine angezeigt wird oder
Eingaben sofort in die Titelleiste der Form. Hier nicht.
siehst du also auch, wie einfach es ist,
Eigenschaften zu benutzen: du musst nur in der MINBUTTON Legt fest, ob die
Eigenschaftenliste eine Eigenschaft auswählen Schaltfläche Minimieren
und in der Werteliste einen neuen Wert beim Programmablauf
eintragen. angezeigt wird oder
nicht.
Die Eigenschaft CAPTION gibt es für die meisten
Steuerelemente. Übersetzt heißt das in etwa STARTUPPOSITION Legt die Position des
Überschrift, Beschriftung. Formulars fest.
Die Form hat ein Punkteraster, das während der WINDOWSTATE Legt fest, ob das
Laufzeit verschwindet. Es ist nur dazu da, die Formular maximiert,
Anordnung der Steuerelemente ziemlich genau minimiert oder normal
vornehmen zu können. angezeigt wird.

Willst du die Rastereinstellungen verändern, tust


du das über EXTRAS | OPTIONEN | ALLGEMEIN.
Wie du siehst, kannst du hier jede Menge
Einstellungen vornehmen. Solange du dich nicht
gut genug auskennst, solltest du die Standard-
Einstellungen beibehalten.

Visual Basic für Einsteiger - 02-09-13


10 Basic

Basic
Es gibt Konzepte, die in jedem Basic-Dialekt Sehm wir uns das obige Beispiel genauer an:
gelten, also nicht nur in Visual Basic. Einige 1. Satz = "Hallo Welt!"
davon sollen an dieser Stelle besprochen werden. 2. Print Satz
Code In Zeile 1 legst du den Wert "Hallo Welt!"
in ein Schubfach mit dem Namen Satz. In Zeile
Ein Code besteht zu einem großen Teil aus
2 gibst du folgende Anweisung: Schreibe den
Anweisungen, die man auch Befehle nennt. Der
Inhalt des Schubfaches 'Satz' oder auf
Computer wird angewiesen, bestimmte Aktionen
computerisch: schreibe die Variable 'Satz'.
vorzunehmen. Anweisungen werden nacheinan-
Änderst du den Inhalt, wird der alte Inhalt
der ausgeführt. Das üblichste Beispiel ist immer
schlicht überschrieben.
wieder die Anweisung Print "Hallo
Welt!", die dazu führt, dass der Computer 1. Satz = "Hallo Welt!"
2. Print Satz
'Hallo Welt' auf die Form schreibt. Print ist der
3. Satz = "Guten Tag, schöne
Befehl., "Hallo Welt!" ein Argument. Der
Welt!"
Computer 'versteht' den Code aber nur, wenn er 4. Print Satz
ohne Fehler ist – jeder Schreibfehler wird miss-
Der Computer würde jetzt beide Inhalte
verstanden. Deshalb muss man bei den Anwei-
untereinander auf den Bildschirm schreiben. Wie
sungen genau aufpassen. Das Argument, eine
das gemacht wird, dazu kommen wir später.
Variable, kann so fehlerhaft sein wie es will.
Alles, was innerhalb der Anführungszeichen Für fast jeden Zweck gibt es unterschiedliche
steht, wird genauso wiedergegeben, also auch Variablentypen. Damit wird auf den jeweiligen
mit sämtlichen Schreibfehlern. Zum Glück hilft Inhalt einer Variablen Rücksicht genommen. Es
Visual Basic nach Kräften, Fehler zu vermeiden. ist nicht egal, ob der Inhalt, bzw. der Wert einer
Variablen eine Zahl, ein Wort oder ein
Variablen Geldbetrag ist. Die Unterschiede hängen
Jede Programmiersprache lebt von der Vielfalt vornehmlich mit dem Speicherbedarf und damit
der möglichen Variablen. Eine Variable ist ein mit der Rechengeschwindigkeit zusammen.
Wert mit veränderlicher Größe, ein Platzhalter, Der Einsatz der Variablen wird jeweils in den
in den Werte eingesetzt werden können – Programmprojekten besprochen.
gewissermaßen ein Schubfach mit einem Namen
in einem Schrank, in das man etwas hineinlegt,
was man dann bei Bedarf wieder herausholt.

Variablentyp Inhalt (Wert) Wertebereich


BYTE Ganzzahl 0 - 255
INTEGER Ganzzahl -32.768 – 32.767
LONG Fließkomma -[Link] – [Link]
SINGLE Fließkomma riesengroße Werte
DOUBLE Fließkomma noch größere Werte
CURENCY Währung -[Link].477, 5808 - + wie bei -
DATE Datum/Zeit 1. Januar 100 – 31. Dezember 9999
STRING Text Ca. 65.500 Zeichen
VARIANT alle variabel
BOOLEAN Boole True oder False (-1 oder 0)

Visual Basic für Einsteiger - 02-09-13


Variablen 11

Variablen deklarieren hilfreich. Außerdem zeigt dir Visual Basic auch


Variablen benötigen einen Namen, und dieser gleich an, um welche Variable es sich handelt –
Name muss grundsätzlich mit einem Buchstaben nämlich die farblich unterlegte.
beginnen. Die Zeichen können aus Buchstaben, Geltungsbereich
Ziffern und dem Unterstrich ( _ ) bestehen. Wichtig sind auch Geltungsbereich und -dauer
Damit sind eindeutige Variablennamen möglich, der Variablen. Das erläutern wir später konkret
z.B. Zeugnis_Mathe, Einnahme_Ver- an Beispielen.
kauf, Einnahme1 o.ä.
Variablenwerte
Es ist ein guter Brauch, Variablen zu deklarieren,
Das Gleichheitszeichen hat keine mathematische
d.h. bei Visual Basic anzumelden. Dazu wird die
Bedeutung, sondern ist ein Zuweisungszeichen:
Anweisung Dim verwendet. z.B.:
Dim Satz As String Dim Satz As String
Damit bekommt die Variable den Namen Satz Dim Zahl As Integer
und Visual Basic wird mitgeteilt, dass der Wert Dim Grosse_Zahl As Double
vom Typ Zeichenkette (STRING) sein muss. Satz = "Hallo Welt, mir geht es
Visual Basic wird zukünftig mit einer gut!"
Fehlermeldung meckern, wenn der Wert der
Zahl = 123
Variablen nicht stimmt – z.B. wenn du eine Zahl
benutzt. Grosse_Zahl = 23632.143
Willst du sichern, dass du nicht vergisst, Es wird der Variablen ein Wert zugewiesen,
Variablen zu deklarieren, kannst du Visual Basic wobei eine Zeichenkette (String) auch ein Wert
dazu veranlassen, dich energisch daran zu ist.
erinnern. Dazu wählst du EXTRAS | OPTIONEN
und das Registerblatt EDITOR. Dort aktivierst du Zeichenketten müssen grundsätzlich in
die Option VARIABLENDEKLARATION Anführungszeichen gesetzt werden.
ERFORDERLICH, wählst DATEI | NEUES PROJEKT Dezimalzahlen müssen grundsätzlich mit einem
– das Speichern verneinst du – und wählst Punkt (.) und nicht mit einem Komma (,)
endlich [Link]. Der Neustart ist nötig, geschrieben werden.
damit die Anweisung OPTION EXPLICIT aktiviert
wird, die dafür da ist, die Variablendeklaration
Konstanten
zu erzwingen. Es tauchen in Programmen immer wieder
Zahlenwerte auf, die sich nicht verändern, die
also konstant sind. Beispiele sind der
Mehrwertsteuersatz von 16% oder die Zahl Pi
bei mathematischen Berechnungen. Pi hat mit
genügender Genauigkeit den Wert 3,
1415926546. Solche Werte werden in
benutzerdefinierten Konstanten mit der
Anweisung CONST angelegt.
Der Wert dieser Anweisung liegt vor allem darin, Const Pi As Single = 3.1415926546
dass Tippfehler in Variablennamen von Visual Im Gegensatz zu Variablen lässt sich der Wert
Basic bemerkt werden. Nehmen wir an, du hast einer Konstanten also nicht ändern – ansonsten
die Variable Satz deklariert. Im Verlauf der gelten für Konstanten gleiche Bedingungen wie
Programmierung willst du die Variable benutzen für Variablen.
und schreibst irrtümlich z.B. Sazz. Für den Visual Basic stellt eine Unzahl von
Computer ist das eine neue Variable, die nicht systemdefinierten Konstanten zur Verfügung.
deklariert ist – weswegen er sich entsprechend Diese Konstanten liegen fertig vor und müssen
meldet. Das ist zwar manchmal lästig, bei nicht festgelegt werden. Wir werden sie in den
umfangreicheren Programmen aber sehr Programmen verwenden.

Visual Basic für Einsteiger - 02-09-13


12 Operatoren

Operatoren Klaus bezieht sich nicht die Körpergröße,


sondern das Programm würde prüfen, ob Erwin
Standardoperatoren mit dem Anfangsbuchstaben E im Alphabet vor
Die Standardoperatoren kennst du aus der Klaus mit dem Anfangsbuchstaben K liegt. In
Schule. Es sind die Zeichen für Plus, Minus, Mal diesem Fall wäre das Ergebnis wahr (true)
und geteilt durch (+, -, *, /). Diese Zeichen
Ope- Beispiel Bedeutung
kannst du in Visual Basic genauso einsetzen, wie
rator
in der Schule. Wenn du ausrechnen willst,
wieviel 236 * 14 / 536 ist, nimmst du deinen = Wert1 = Wert2 Wert1 ist gleich
Taschenrechner oder Visual Basic. Du Wert2
doppelklickst auf die Form, worauf sich das <> Wert1 <> Wert2 Wert1 ist
Codefenster öffnet. Hier sind grundsätzlich die ungleich Wert2
erste und die letzte Zeile vorgegeben:
> Wert1 > Wert2 Wert1 ist größer
Private Sub Form_Load() als Wert2
End Sub Wert1 < Wert2
< Wert1 ist
Du setzt selber die folgenden Zwischenzeilen kleiner als
dort ein, wo der Textcursor bereits blinkt: Wert2
2. Show >= Wert1 <= Wert2 Wert1 ist größer
3. Print 236 * 14 / 536 als oder gleich
Wert2
Wie du siehst, habe ich vor jede Zeile eine
Nummer gesetzt. Das dient nur der Orientierung, <= Wert1 <= Wert2 Wert1 ist
darf aber keinesfalls bei der eigentlichen kleiner als oder
Programmierung Anwendung finden. gleich Wert2
Im übrigen befassen wir uns auf Seite 14 genauer
mir dem Aufbau von Prozeduren. Logische Operatoren
Zeile 2 ist die Anweisung für ANZEIGEN; Zeile 3 Manchmal sollen Programmabläufe davon
die Anweisung, die Werte auszurechnen und in abhängig sein, dass mehrere Werte gleichzeitig
die Form zu schreiben. zutreffen. Wenn Wert1 und Wert2 und Wert3
oder Wert4 zutreffen, dann .... Das kann Visual
Drückst du nun auf F5 oder wählst AUSFÜHREN |
Basic natürlich auch. Dafür werden logische
STARTEN, erscheint in der Form der Wert
Operatoren verwendet. Sie verknüpfen die
6,16417910447761.
Werte. Nach der Verknüpfung wird wieder
Abschließend drückst du auf die SCHLIEßEN- geprüft, ob die Gesamtaussage zutrifft, wahr ist
Schaltfläche der Form oder auf ALT + F4 bzw. oder nicht zutrifft also falsch ist.
wählst AUSFÜHREN | BEENDEN.
Ope- Beispiel Bedeutung
Vergleichsoperatoren rator
Wie der Name schon sagt, vergleichen diese AND Wert1 AND beide Werte
Operatoren zwei Werte miteinander. Ist ein Wert Wert2 sind wahr,
kleiner als ein anderer Wert, ist er größer oder ist treffen zu
er gleich? Manchmal ist es wichtig zu wissen, ob
OR Wert1 OR ein Wert von
ein Wert ungleich einem anderen ist.
Wert2 beiden ist wahr,
In Programmen finden meistens in diesem trifft zu
Zusammenhang Fragestellungen statt; wenn
Wert1 größer ist als Wert2, dann .... NOT NOT Wert1 der Wert1 trifft
nicht zu
Im Computer wird die Frage immer nur
daraufhin überprüft, ob das Ergebnis wahr Es gibt noch mehr logische Operatoren, die wir
(TRUE) oder falsch (FALSE) ist. Die Werte aus Platzgründen hier nicht erwähnen.
können auch Wörter sein. Ist Erwin <

Visual Basic für Einsteiger - 02-09-13


Funktionen 13

Funktionen alles in Anführungszeichen einschließen, auch


Sonderzeichen; z.B. "$%231+". Visual Basic
Es tauchte der Begriff Anweisung auf. Ein Basic-
interessiert nur die Länge der Zeichenkette.
Programm besteht größtenteils aus Anweisungen,
also Befehlen, die der Computer ausführt. Es gibt Zeichenketten kann man manipulieren. Dafür
aber auch Funktionen. stehen etliche Funktionen zur Verfügung.
Numerische Funktionen Funk- Beispiel Bedeutung
tion
Eine häufig verwendete Funktion ist Len –
vom englischen Wort Length. Sie ermittelt die LEFT Zeichenkette gibt die Zeichen
Länge einer Zeichenkette: du doppelklickst in die = Left("Es bis zur 6.
Form, löschst eventuellen Code und setzt den ist ein Position von
Code für PROGRAMM2 ein: schöner links aus
Tag!",6)
1. Private Sub Form_Load()
2. Show RIGHT Zeichenkette gibt die Zeichen
3. Dim Zeichenkette As String = Right("Es bis zur 6.
4. Dim länge As Integer ist ein Position von
5. Zeichenkette = "Es ist ein schöner rechts aus
schöner Tag!" Tag", 6)
6. länge = Len(Zeichenkette) MID Zeichenkette gibt 3 Zeichen
7. Print länge = Mid("Es von der 8.
8. End Sub ist ein Position von
Schließlich drückst du auf F5. schöner links aus
In Zeile 6 wird die Funktion Len eingesetzt, und Tag!", 8, 3)
der Funktionswert wird der Variablen länge INSTR Zeichenkette gibt die Position
übergeben. Als Ergebnis erhältst du 23. Hier = Instr(1, von links an, an
werden auch die Leerzeichen gezählt. "Es ist ein der der Suchtext
schöner beginnt
Funktion Beispiel Bedeutung Tag!",
SQR Sqr(25) es wird die "Tag")
Quadratwurzel
ermittelt Als Beispiel setzt du nun in den Code aus
PROGRAMM2 zwischen den Zeilen 7 und 8
INT Int(25.12 es wird der nächst- folgende Zeilen ein und erhältst so unser
34) kleinere ganzzahlige
PROGRAMM3:
Wert ermittelt (bei
positiven Zahlen Print Left(Zeichenkette,6)
werden einfach die Print Right(Zeichenkette,4)
Nachkommastellen
abgeschnitten) Print Mid(Zeichenkette,8,11)
FIX Fix(25.12 entfernt die Print Instr(1, „Es ist ein
34) Nachkommastellen schöner Tag!“,“Tag“)
Vergiss nicht den abschließenden Druck auf F5.
SIN Sin(90) Der Sinus eines
Winkels wird In der Abbildung hast du die
ermittelt Zeichenkettenmanipulationen
untereinander. Im Anhang ist
Zeichenkettenfunktionen eine Prozedur Umkehren
Grundsätzlich gilt, dass alles, was zwischen vorhanden, die dir zeigt, wie
Anführungszeichen (Gänsefüßchen) steht, eine man mit den Zeichenketten-
Zeichenkette ist. "Erwin ist ein guter Funktionen eine Zeichenkette
Schüler." oder "1 Tor hat zum Sieg von hinten nach vorn umkehren kann.
gereicht." ist eine Zeichenkette. Du kannst

Visual Basic für Einsteiger - 02-09-13


14 Visual Basic

Visual Basic
Visual Basic umfasst die Grundlagen von Basic
sowie umfangreiche Neuerungen. Mit dem
klassischen Basic ist Visual Basic überhaupt
nicht mehr zu vergleichen, obwohl im Rahmen
dieses Heftes die Unterschiede noch nicht allzu
deutlich zu erkennen sind. Das klassische Basic
war sozusagen ein Programmwurm, der vorn
anfing und bis zum Ende abgearbeitet wurde.
Visual Basic dagegen ist ereignis- und
objektorientiert und setzt eigentlich die
Anwendung der Maus voraus.
Was heißt objektorientiert? Visual Basic versteht
seine Elemente (Fenster, Schaltflächen, Listen Hier siehst du eine lange Liste mit allen
usw.) als Objekte, die Eigenschaften haben und Ereignissen, die dem Objekt FORM zugeordnet
denen man bestimmte Methoden und Ereignisse sind. Unmittelbar ist das Ereignis LOAD
zuordnen kann. markiert. Markiert werden alle eingesetzten
Was heißt ereignisorientiert? Programme unter Ereignisse. Zum Glück braucht man meist nur
Visual Basic warten auf Ereignisse. Du kannst wenige.
ein Programm starten – und es passiert nichts. Methoden
Klickst du eine Schaltfläche an, geschieht irgend
etwas, aber was, das muss programmiert werden. Methoden sehen den Eigenschaften ähnlich,
bedeuten aber die Anweisungen an ein Objekt,
Eigenschaften sich auf eine bestimmte Weise zu verhalten, z.B.
Eigenschaften wurden schon besprochen. Sie eine bestimmte Position auf der Form
sind so wichtig, dass es dafür ein eigenes Fenster einzunehmen oder einer Liste neue Elemente
gibt. Es gibt aber auch Eigenschaften, die nicht hinzuzufügen.
zur Entwicklungszeit eingestellt werden können,
sondern im Programm aufgebaut werden müssen.
Ereignisse
Jedes Objekt hat unterschiedlich viel
Möglichkeiten, auf Ereignisse zu reagieren. Ein
häufiges Ereignis ist z.B. der Klick mit der Maus
auf eine Schaltfläche. Die möglichen Ereignisse
werden von Visual Basic in einer Liste
dargestellt, die du mit einem Klick auf den
kleinen Pfeil rechts neben LOAD öffnest.

Hilfe-Dateien zu diesem Heft findest du auf der


Homepage. Suche die Seite mit der
Heftbeschreibung. Dort gibt es einen Link zu der
Datei, die du kostenlos downloaden kannst.

Visual Basic für Einsteiger - 02-09-13


Visual Basic 15

Prozeduren Funktionen
Um all das leisten zu können, sind Visual Basic- In diesem Zusammenhang sind selbstentwickelte
Programme in sogenannte Prozeduren eingeteilt. Funktionen gemeint, nicht die Funktionen, die
Sehen wir uns das an zwei Beispielen an: als Basic-Funktionen bekannt sind – und die wir
Private Sub Form_Load() auf Seite 13 besprachen – wie z.B. die Funktion
(Anweisungen) SIN(WINKEL).
End Sub Über diese mathematische Funktion wird der
Eine Prozedur wird durch das Schlüsselwort Sub Sinus eines Winkels berechnet.
eingeleitet. Das Schlüsselwort Private zeigt Funktionen dieser Art sind in Basic eingebaut.
an, dass diese Prozedur von anderen Prozeduren Wir wollen jetzt aber über Funktionen sprechen,
aufgerufen werden kann. Alles, was zwischen die wie Prozeduren aufgebaut sind, aber einen
Sub und End Sub steht, wird vom Computer Wert an das Programm zurückgeben. Wenn in
abgearbeitet, worauf die Prozedur dann wieder einem Programm immer wieder Mehrwertsteuern
verlassen wird. Die oben genannte Sub verweist berechnet werden, legt man für diesen Zweck
auf das Objekt Form und durch einen Unterstrich eine Funktion an und übergibt dieser die
getrennt auf das Ereignis Load. Alles, was entsprechenden Beträge. Die Funktion gibt den
zwischen der Startzeile und der Endzeile berechneten Betrag zurück.
eingetragen wird, geschieht beim Laden der Private Function
Form, also im allgemeinen, wenn man das MehrwertSteuer(Betrag)
Programm startet. Berechnungen
Private Sub Form_Click() MehrwertSteuer =
(Anweisungen) ErgebnisBerechnungen
End Sub End Function
Wird das Ereignis Click gewählt, kann Code in Selbstentwickelte Funktionen verhalten sich also
die Prozedur geschrieben werden, der ausgeführt im Grunde genauso wie die integrierten
wird, wenn auf die Form geklickt wird. Funktionen. Ein Beispiel für die Verwendung
von Funktionen ist im Anhang auf Seite 55
Der Code innerhalb einer Ereignis-Prozedur ist beschrieben.
durch die beiden Zeilen von allen anderen
Prozeduren abgeschottet. Auch Variablen in
einer Prozedur sind grundsätzlich nur aktiviert,
wenn die Prozedur aufgerufen wird – und ihre
Werte sind wieder verschwunden, wenn die
Prozedur verlassen wird. Daher kann man auch
in Prozeduren die gleichen Variablennamen
verwenden, denn eine Prozedur kennt die andere
nicht.

Visual Basic für Einsteiger - 02-09-13


16 Das erste Programm

Das erste Programm


Die Voraussetzungen für einen ersten Versuch und dann den Anfangsbuchstaben der
sind geschaffen. Visual Basic stellt dir eine Form gewünschten Eigenschaft. Sind mehrere
und ein Werkzeugfenster zur Verfügung, und die Eigenschaften mit gleichem Anfangsbuchstaben
grundlegenden Kenntnisse hast du. Fehlt nur vorhanden, tippst du einfach noch einmal den
noch eine Idee. selben Buchstaben.
Ich habe bei den Programmiervorschlägen
weniger an verwertbare Programme gedacht, als PictureBox
vielmehr an Programmiertechniken. Wir wollen NAME Name picWürfel
möglichst viele Techniken kennen lernen – das WIDTH Breite ca. 3000
bedeutet aber, dass ein eleganterer Code verloren
geht. Mit zunehmenden Kenntnissen kannst du HEIGHT Höhe ca. 3000
deine eigenen Vorstellungen entwickeln. TOP Abstand vom oberen ca. 350
Ratsam ist, sich optisch zunächst an das Rand
Windows-Aussehen zu halten. Individuelle LEFT Abstand vom linken ca. 350
Gestaltungen können nicht über unsaubere Rand
Programmierung hinwegtäuschen. Schlechte
Beispiele findest du zuhauf im Freeware-und 1. m Werkzeugfenster doppelklickst du auf
Shareware-Bereich. die PICTUREBOX ...
Bedienoberfläche 2. ...und gibst im EIGENSCHAFTEN-Fenster die
Als erstes Beispiel soll ein Würfelspiel obigen Werte ein
programmiert werden. Der Computer würfelt, 3. Dann klickst du auf SHAPE – Vorsicht,
und der Anwender soll die Augenzahl raten. Das nur ein einfacher Klick, da du die
Ergebnis wird angezeigt und ausgewertet. Für einzusetzende Objekt andernfalls nicht
dieses Programm benötigst du ein Bildfeld, bearbeiten kannst! ......
sieben Formen für die Augen, sechs
4. ... ziehst ein Kästchen im Bildfenster auf und
Befehlsschaltflächen für den Tipp, eine
platzierst es links oben ...
Befehlsschaltfläche fürs Beenden des
Programms, drei Bezeichnungsfelder für die 5. ... und wiederholst diesen Prozess, bis du
Anzeigen der Treffer und zwei insgesamt sieben Kästchen wie in der
Bezeichnungsfelder für Beschriftungen. Abbildung angeordnet hast.

Form.
HEIGHT Höhe ca. 5200
WIDTH Breite ca. 5800
CAPTION Beschriftung Würfelspiel

Den Wert einer Eigenschaft veränderst du ganz


einfach, indem du sie anklickst und einen neuen
Wert eingibst, wodurch der alte Wert
überschrieben wird. Ein Druck auf EINGABE
setzt die Eigenschaft sofort um. Du kannst also
bei Breite oder Höhe der Form die Wirkung
sofort sehen und, falls nötig, einen anderen Wert
eingeben.
Willst du eine Eigenschaft in der Liste ansteuern,
machst du das so: du drückst STRG+UMSCHALT Dass sieben 'Augen' benötigt werden, hat seinen
Grund, den du noch erfahren wirst.

Visual Basic für Einsteiger - 02-09-13


Das erste Programm 17

Im EIGENSCHAFTEN-Fenster ist die Eigenschaft 5. Nun doppelklickst du auf


SHAPE (Figur) markiert. Klickst du auf den COMMANDBUTTON
keinen Pfeil im der Werteliste, öffnet sich eine 6. Die Schaltfläche platzierst du oben rechts
weitere Auswahlliste mit den möglichen Figur- neben dem Bildfeld – wie das bei mir
optionen. Dort findest du unter der Ziffer 3 die aussieht, siehst du in der Darstellung des
Option KREIS. Endergebnisses.
Nun kann man die Kästchen einzeln in Kreise 7. Im Eigenschaftenfenster machst du folgende
verwandeln – das lässt sich aber auch einfacher Angaben:
erledigen – du hältst STRG, während du mit der
Maus die Kästchen nacheinander anklickst, CommandButton
worauf alle hierdurch markierte Objekte NAME Name cmdSchließen
Anfasser erhalten. Anders augedrückt gruppierst CAPTION Beschriftung Schließen
du die Objekte. Klickst du dann die Option
KREIS an, verwandeln sich alle Kästchen auf 8. Dann doppelklickst du auf die neue
einen Schlag in Kreise. Vergiss nicht die Werte Schaltfläche, die inzwischen ihren Namen
einzugeben: cmdSchließen erhalten hat.
Es öffnet sich das Code-Fenster mit dem
Shape Prozedurrahmen für das Ereignis CLICK.
Visual Basic vermutet klugerweise das
Height Höhe 700 Wahrscheinlichste, und das ist bei einem
Width Breite 700 Befehlsbutton nun einmal ein Klick.
9. Dort, wo der Cursor blinkt, schreibst du end.
1. Klickst du in das Bildfeld, wird die Damit Program-Listings übersichtlich
Gruppierung aufgehoben bleiben, rückt man im allgemeinen
2. Du ordnest die Kreise der Augen wie bei Befehlszeilen um einen Tabstop ein. Also
einer Sechs an, indem du sie jeweils anklickst TAB und end schreiben.
und korrekt platzierst. Visual Basic wandelt dein end in End um
3. Das siebte Auge setzt du wie in der und färbt es blau ein – so teilt dir das
Abbildung genau in die Mitte. Programm mit, dass der Befehl korrekt
geschrieben und von Visual Basic erkannt
wurde. Die Sache sieht also so aus:
Option Explicit
Private Sub cmdSchliEßen_Click()
End
End Sub
Abschließend drückst du wie immer F5, worauf
das Programm startet. Mit einem Klick auf die
Befehlsschaltfläche kannst du es wieder beenden.
Du hast gesehen, wie einfach es sein kann, dem
Computer Befehle zu erteilen. Leider geht es
nicht immer so unproblematisch. Immerhin
kennst du schon die erste Anweisung, nämlich
End.
4. Du ordnest die 'Augen' so an, 1 2
dass die Durchnumerierung Der nächste Punkt in unerer Programmierung ist
3 7 4 eine Geschmacksfrage. Es geht um die farbliche
von Shape1 bis Shape6 von
links nach rechts erfolgt und 5 6 Ausgestaltung des Würfelspiels – wir wollen das
die Figur in derMitte Shape7 graue Einerlei etwas auffrischen. Für diese
ist. Dann passt du das Bildfeld so an, dass ein Aufgabe benutzt du selbstverständlich wieder
optisch ausgewogener Eindruck entsteht. das EIGENSCHAFTEN-Fenster.

Visual Basic für Einsteiger - 02-09-13


18 Das erste Programm
10

1. Du schließt das CODE-Fenster bw. klickst in


Command1 – Command6
den sichtbaren Teil der Form, so dass diese
wieder im Vordergrund steht. NAME Name cmdEins,
cmdZwei,
2. Dann klickst du einen Kreis an, ...
cmdDrei,
3. ... öffnest, falls notwendig, die AUSWAHL- cmdVier,
LISTE über den Pfeil... cmdFünf,
4. und machst folgende Angaben: cmdSechs
Shapes1 - 7 CAPTION Beschriftung 1,2,3,4,5,6
FILLSTYLE Füllstil ausgefüllt
Es erleichtert die Übersicht, wenn man sich
FILLCOLOR Füllfarbe aussuchen angewöhnt, jedem Namen eine Kennung
BORDERWIDTH Randstärke 3 beizufügen, z.B. CMDEINS oder PICWÜRFEL.
Für die FORM und das PROJEKT behältst du
BORDERCOLOR Randfarbe aussuchen allerdings die Standardbezeichnungen – hier
Probiere an einem SHAPE alle möglichen gibt es kaum Identifikationsprobleme.
Einstellungen aus. Wenn du dich entschieden
10 Nun klickst du drei Mal LABEL an und ziehst
hast, werden die Augen wieder gruppiert und
die drei Bezeichnungsfelder auf der Form auf.
die Einstellungen erneut vorgenommen..
11 Im EIGENSCHAFTEN-Fenster machst du
5. Bei der Gelegenheit kannst du dem Bildfeld
folgende Angaben:
gleich eine passende Hintergrundfarbe geben:
du klickst in eine freie Stelle des Bildfeldes Label1
bzw. wählst in der AUSWAHLLISTE oben im NAME Name lblVerloren
EIGENSCHAFTEN-Fenster den Punkt PICWÜR- Beschriftung 00
CAPTION
FEL, wodurch das Bildfeld aktiviert wird.
BORDER- Rahmenstil Fest Einfach
picWürfel
STYLE
BackColor Hintergrundfarbe aussuchen Schrift
FONT 14
(Größe)
Je nach Geschmack sieht der Würfel jetzt
schön bunt aus. Fehlen noch die AUTOSIZE Automatisch True (Wahr)
e Anpassung
Befehlsschaltflächen für den Tipp des
Spielers. ALIGNMENT Ausrichtung Zentriert
der Anzeige
6 Also doppelklickst du sechs Mal auf
Label2
COMMANDBUTTON im WERKZEUG-Fenster,
worauf sechs Buttons übereinander in der NAME Name lblGewonnen
Mitte der Form angelegt werden. CAPTION Beschriftung 00
7 Diese Buttons ordnest du auf der rechten BORDER Rahmenstil Fest Einfach
Seite der Form an, unter der SCHLIESSEN-
Schaltfläche, und gruppierst sie. STYLE
FONT Schrift 14
8 Im EIGENSCHAFTEN-Fenster wählst du
WIDTH und trägst 372 ein. (Größe)
Visual Basic legt standardmäßig die Höhe AUTOSIZE Automatisch True (Wahr)
e
eines COMMANDBUTTON mit 372 fest, so
Größenanpas
dass bei derselben Breite eine quadratische sung
Schaltfläche entsteht.
ALIGNMENT Ausrichtung Zentriert
9 Dann machst du folgende Angaben: der Anzeige

Visual Basic für Einsteiger - 02-09-13


Das erste Programm 19

Label3 18 Selbstverständlich kannst du dir noch


Schriftfarben oder andere Schrifttypen
NAME Name lblAnzeige aussuchen.
CAPTION Beschriftung Anzeige
19 Zum Schluss werden noch die
BORDER- Rahmenstil Fest Einfach Bezeichnungsfelder für die Beschriftung der
STYLE Trefferzähler angeordnet:
FONT Schrift 18 Label1
(Größe) CAPTION Beschriftung Verloren
ALIGNMENT Ausrichtung Zentriert
AUTOSIZE Automatische True
des Textes
Anpassung
Zur Einstellung der Eigenschaften gibt es Label2
nicht viel zu sagen. Du wählst die jeweiligen CAPTION Beschriftung Gewonnen
Eigenschaften, die dazugehörigen Werte
tippst du ein, bzw. wählst sie aus der AUTOSIZE Automatische True
Auswahlliste, die sich bei einigen Anpassung
Eigenschaften öffnen lässt.
Bei Steuerelementen, die im Programm nicht
12 Die Bezeichnungsfelder LBLVERLOREN und
wieder angesprochen werden, wie hier z.B. bei
LBLGEWONNEN sollen so groß sein, dass eine
reinen Beschriftungen, lasse ich die Namen
zweistellige Zahl genau hineinpasst. Deshalb bestehen. Es gibt keinen Sinn, sich Namen
wird als Wert die CAPTION 00 gesetzt und auszudenken, die gar nicht verwendet werden.
AUTOSIZE auf TRUE gestellt. Anders ist das, wenn im Laufe des Programms
13 Naturgemäß beginnt die Anzeige mit einer die Werte geändert werden.
einstelligen Zahl zu zählen. Visual Basic
20 Nun richtest du alle Objekte aus, ...
würde die Größe des Bezeichnungsfeldes
entsprechend anpassen. Um das zu 21 ... passt die Größe der Form an, ...
verhindern, lassen wir Visual Basic die 22 ... drückst F5 ...
optimale Größe mit AutoSize = True
23 ... und überprüfst das Aussehen noch einmal.
anpassen und schalten dann die AUTOSIZE
wieder auf FALSE.
14 Wenn du jetzt noch die Eigenschaft
Alignment, also die Ausrichtung der Anzeige
im Feld auf zentriert stellst, wird die
einstellige Anzeige mittig dargestellt.

Für einen Programmablauf sind solche


Feinheiten unwichtig; für eine sorgfältige
Präsentation eines Programms aber
unerlässlich.

15 Die Eigenschaftswerte True und False


haben hier etwa die Bedeutung von
eingeschaltet, ausgeschaltet. So ähnlich wie in der Abbildung könnte deine
16 Das Anzeigefeld LBLANZEIGE passt du in der Oberfläche aussehen.
Größe so in die Form ein, dass es möglichst 24 Damit das Kunstwerk nicht verloren geht,
professionell aussieht. muss es gespeichert werden. Also klickst du
17 Durch den Wert Zentriert der Eigenschaft auf die entsprechende Schaltfläche.
Alignment werden die Anzeigen immer mittig 25 Es öffnet sich ein Dialogfenster, in dem du dir
dargestellt. einen Ordner für dein Projekt wählen kannst.

Visual Basic für Einsteiger - 02-09-13


20 Das erste Programm

26 Als Dateiname gibst du WÜRFELN ein. Die • Zeile 2: Die Variable mit dem Namen ZUFALL
Form wird unter dem Namen WÜRFELN. wird als Variablentyp SINGLE deklariert.
gespeichert – wie du siehst, heißt die
• Zeile 3: Dieser Variablen wird der Wert
Dateiendung für Visual Basic .FRM.
zugewiesen, der sich aus der Funktion Rnd
ergibt. Diese Funktion liefert einen Wert
Während der Arbeit an einem Projekt sind
Pannen unvermeidlich – sei es, dass der zwischen 0 und 0,999999 und weist ihn der
Computer abstürzt, sei es, dass er sich nur Variablen ZUFALL zu..
aufhängt. So etwas ist meist mit Datenverlust • Zeile 4: Das Programm wird angewiesen, die
verbunden. Daher rate ich dazu, ein Projekt Variable zufall auf die Form zu schreiben.
bei Arbeitsbeginn unter einem eigenen Namen
Abgesehen davon, dass du mit den Zahlen nicht
zu speichern und während der Arbeit immer
wieder mal die Schaltfläche für Speichern zu
viel anfangen kannst, wirst du feststellen, dass
klicken. Auf diese Art wird der aktuelle Stand bei jedem Neustart immer wieder dieselben
gesichert. Zahlen angezeigt werden – also war das doch
nichts mit dem Zufall?! Der Grund ist ein
Zufall komplizierter mathematischer Transformations-
Bevor wir dem Spiel Leben einprogrammieren, prozess. Prinzipiell benötigt die RND-Funktion
wäre ein Exkurs über den Zufall einzufügen. einen Startwert, der ohne Eingriff immer gleich
ist – daher die gleichen Zahlen. Ändert man den
Computer faszinieren immer wieder mit ihrem Startwert, wird die Sache interessanter.
sogenannten Zufallsgenerator – anscheinend sind
sie in der Lage, zufällige Ereignisse zu erzeugen, Mit der Anweisung Randomize wird jeweils
sei es die Auswahl eines Buchstabens aus dem ein neuer Startwert erzeugt. Setzt du hinter Zeile
Alfabet oder einer Zahl aus einer Zahlenreihe. 1 die Anweisung Randomize ein und startest
das Programm erneut, wirst du feststellen, dass
Natürlich gibt es beim Computern keine
die Zahlenfolgen jetzt jedesmal anders aussehen.
wirklichen Zufälle – das sieht nur so aus.
Die nächste Funktion, die wir benötigen, um zu
1. Du startest erneut Visual Basic. Das führt
anwendbaren Zufallszahlen zu kommen, ist Int.
dazu, dass du nun zwei Versionen des
Vereinfacht ausgedrückt liefert diese Funktion
Programms im Arbeitsspeicher hast
einen Wert, bei dem die Nachkommastellen
Für diesen Versuch legen wir keinen Wert auf
abgeschnitten sind. Aus 0,1234567 wird durch
die Namensgebung usw, da wir das
Programm nicht speichern. Int(0,1234567) der Wert 0. Das würde
zueiner ganzen Reihe von Nullen führen.
2. Du wählst [Link] ... Werden die erzeugten Zahlen aber z.B. mit 10
3. ... drückst im WERKZEUG-Fenster auf den multipliziert, dann verschiebt sich das Komma.
COMMANDBUTTON ... Aus
4. ... doppelklickst auf Command1 0,23*10 wird 2,3; durch Int(2,3) dann
2. So bekommt man ganzzahlige Zahlen.
5. ... und setzt folgende Eigenschaften ein:
Bei einem Würfel gibt es nur sechs mögliche
1. Sub Private Command1_Click() Zahlen. Also müsste es eine Formel geben, die
2. Dim zufall As Single den Zahlenumfang berücksichtigt. Gibt es:
3. zufall = Rnd zufall = Int(rnd * Obergrenze) +
Untergrenze
4. Print zufall
• Zeile 3: zufall = Int(Rnd * 6) + 1
5. End Sub
Jetzt klappt's! Wie gesagt, ein echter
Die Zeilen 3 – 4 sind Anweisungen, die
schicksalshafter Zufall ist das nicht, aber es
ausgeführt werden, wenn auf die Befehls-
scheint so.
schaltfläche geklickt wird.
Beende dieses Visual Basic, ohne zu speichern,
und aktiviere dein Würfelprogramm.

Visual Basic für Einsteiger - 02-09-13


Programmcode 21

Programmcode Nun machst du folgende Eingaben:


Der Spieler soll eine Zahl anklicken, worauf der 4. Ratezahl = 1
Computer eine Zufallszahl wählt. In einer In Zeile 4 wird der Variablen RATEZAHL der
Auswertung werden die Zahlen verglichen, und Wert 1, entsprechend der Befehlsschaltfläche
es wird geprüft, ob ein Treffer vorliegt oder zugewiesen.
nicht. Die Treffer und Nichttreffer werden 5. [Link] =
hochgezählt. Im Anzeigefeld wird angezeigt, ob Rate-
getroffen wurde (gewonnen) oder nicht zahl
(verloren).
Die Zeile 5 dient nur für Testzwecke und wird
Natürlich müssen Werte in Variablen gespeichert später wieder gelöscht.
werden, z.B. der vom Spieler gewählte Wert. Wir
6. End Sub
nennen die Variable RATEZAHL und den vom
Computer erzeugten Wert ZUFALLSZAHL. Die Anweisung lautet: Gib der Eigenschaft
CAPTION des Objektes lblAnzeige den Wert
Die RATEZAHL muss in jeder Prozedur immer
wieder deklariert werden – sie bekommt nur aus der Variablen Ratezahl.
jeweils einen anderen Wert. Das ist umständlich. Bevor du das Programm startest, programmierst
Wenn eine Variable im gesamten Projekt gültig du noch die Zeilen 8 und 9, indem du vorher auf
sein soll, deklariert man sie im Allgemeinteil, der CMDZWEI doppelklickst. Im CODE-fenster öffnet
vor den Prozeduren liegt. Für den Zahlenbereich sich die entsprechende Prozedur mit den
des Würfels genügt der Variablentyp BYTE. üblichen vorgebenenen Zeilen:
7. Private Sub cmdZwei_Click()
Einige Worte zum Code: alles, was auf den
nächsten Seiten im Codefenster eingegeben wird, und
ist Bestandteil des Gesamtcodes für unser Projekt. 9. End Sub
Leerzeilen im Code drücken aus, dass hier eine Beim Cursor gibst du die Zeilen 8 und 9 ein:
neue Prozedur beginnt, notwendig sind sie aber 8. Ratezahl = 2
nicht. 9. [Link] =
Schaltflächen für den Tipp Ratezahl
Du doppelklickst auf CMDEINS. Unmittelbar hat Hierdurch ändert sich der Wert von end sub
Virtual Basic folgende Zeilen eingesetzt – die natürlichauf 10:
Zeilen 3 und 5 geben den Rahmen für die 10. End Sub
Prozedur ab, die wirksam wird, wenn auf Abschließend drückst du auf F5.
CMDEINS geklickt wird.:
Willst du nachprüfen, ob die Sache funktioniert,
1. Option Explicit klickst du auf CMDEINS und CMDZWEI – in
2. LBLANZEIGE müsste die Zahl 1 bzw. 2
3. Private Sub cmdEins_Click() erscheinen.
4. Die Zeilen 5 und 9 kannst du wieder löschen: du
5. End Sub setzt den Mauszeiger vor die zu löschende Zeile,
markierst sie mit einem Klick und drückst auf
Der Textcursor blinkt in der Zeile 2. Hier gibst ENTF.
du ein:
Nun gibst du für alle Schaltflächen die
2. Dim Ratezahl As Byte entsprechende Variable RATEZAHL ein – du
Der Code lautet jetzt also: wiederholst also die notwendigen Eingaben für
1. Option Explicit die Buttons CMD3 bis CMD6, wobei du natürlich
jeweils die Zahl des aktuellen Buttons einsetzt
2. Dim Ratezahl As Byte
3. Private Sub cmdEins_Click()

Visual Basic für Einsteiger - 02-09-13


22 Die Zufallszahl des Computers

Die Zufallszahl des Computers Der Code sieht so aus:


Der Computer erhält die Aufgabe, nach einem 1. Private Sub cmdFünf_Click()
Würfeln durch den Spieler selber eine Zahl zu 2. Ratezahl = 5
würfeln. So eine Prozedur hat Visual Basic
3. computer
natürlich nicht in seinem Programm – also
müssen wir sie selbst anlegen unter dem Namen 4. End Sub
COMPUTER. Diese Prozedur wird mehrmals Dieses Beispielprogramm zeigt dir das Listing
verwendet – also setzt du im Allgemeinteil am für die Prozedur CMDFÜNF_CLICK.
Anfang unseres Code, nach der Zeile
Die zwischen Zeile 3 und Zeile 4 eingefügte An-
dim Ratezahl As Byte, weisung in der Prozedur Computer kannst du
folgende Zeile ein. nun wieder löschen.
Dim Zufallszahl As Byte Wenn du das alles erledigt hast, können wir uns
Gedanken darüber machen, wie ein Computer
Dann gibst du am Ende des CODE-Fensters
Werte miteinander vergleicht. Hast du in der
1. Private sub Computer Schule im Matheunterricht aufgepasst, ist die
ein, den Rest erledigt Visual Basic, worauf der Sache nicht besonders kompliziert. Man braucht
Textcursor in der nächsten Leerzeile steht. nur die mathematischen Zeichen '=', '<' '>' und
Der Computer soll in dieser Prozedur seine Zahl '<>', also gleich, kleiner als, größer als und
erzeugen und der Variablen ZUFALLSZAHL ungleich. Visual Basic kann damit umgehen –
zuweisen. In Zeile 2 setzt du die Anweisung wie, das soll uns hier nicht weiter interessieren.
Randomize ein, und in Zeile 3 wird die auf Seite Die Prozedur Auswertung anlegen
20 geübte Funktion für die Zufallszahl Im Abschnitt „Kontrollstrukturen“ auf Seite 27
eingetragen – das Ergebnis ist: wird ausführlich über Möglichkeiten der
2. Randomize Kontrolle des Programablaufs eingegangen. Hier
3. Zufallszahl Int(Rnd * 6)+1 genügt ein kurzer Abriss, damit das Programm
vervollständigt werden kann.
[Link] Sub (vom Programm vorgegeben)
In der Prozedur AUSWERTUNG wird der
Um zu sehen, was der Computer erzeugt, kannst
Computer angewiesen, zu überprüfen, ob 'seine'
du zwischen Zeile 3 und 4 eine Leerzeile
Zahl mit der Spielerzahl übereinstimmt oder
einfügen und folgendes eintragen:
nicht – computerisch ausgedrückt: wenn
[Link]=Zufallszahl Zufallszahl = Ratezahl, dann gewonnen, sonst
Dann drückst du auf F5. verloren. Eingeenglischt heißt das: If Zufallszahl
= Ratezahl, then gewonnen, else verloren;
Was nun? Nichts passiert. Das ist ein gutes
abgekürzt:
Beispiel für die objektorientierte
Programmierweise von Visual Basic: solange die If Zufallszahl = Ratezahl Then
Prozedur COMPUTER nicht aufgerufen wird, gewonnen
schlummert sie nur still vor sich hin. If Zufallszahl <> Ratezahl
Zum Glück ist es ganz einfach, die Prozedur zum Then verloren
Leben zu erwecken. Man ruft sie mit ihrem Diese Schreibweise würde genügen, kann aber
Namen auf. Der Computer soll seine Zahl übersichtlicher geschrieben werden:
erzeugen, wenn der Spieler eine Zahl mit der If Zufallszahl = Ratezahl Then
Befehlsschaltfläche gewählt hat; also gehört der
Aufruf in die jeweiligen Click-Prozeduren. Gewonnen
Else
Verloren
End If

Visual Basic für Einsteiger - 02-09-13


Die Zufallszahl des Computers 23

Gewonnen und verloren sind Variablen, in denen mit Zeile 7 bzw. Zeile 11 in den entsprechenden
die Treffer hochgezählt werden sollen. Es Anzeigefeldern mit der Eigenschaft CAPTION an.
müssen also erst einmal die Variablen deklariert Zeile 6 und Zeile 10 zeigen die Zeichenketten
werden. zwischen den Anführungszeichen an.
Hier taucht allerdings ein Problem auf: Visual Abschließend drückst du wie gewohnt F5 – und
Basic setzt den Wert der Variablen bei jedem vergiss bitte nicht, das Spiel zu speichern.
Aufruf der Prozedur wieder auf Null. Wir
würden also nicht hochzählen können. Es gibt
für dieses Problem das Schlüsselwort Static. Die Anzeige der Augenzahl
Eine mit Static deklarierte Variable behält Grundsätzlich kann unser Spiel jetzt laufen. Die
ihren aktuellen Wert so lange, bis das Programm Augenzahl-Anzeige im Bildfeld haben wir zwar
neu gestartet wird. noch nicht, du kannst aber immerhin schon
spielen. Allerdings ist es vorläufig noch ein
Zeile 2 und Zeile 3 in der folgenden Prozedur
geheimnis, welche Zahl der Computer gewürfelt
zeigen, wie die beiden Variablen deklariert
hat. Das könnte man in einem Anzeigefeld
werden.
darstellen, aber wozu haben wir das Bildfeld?!
1. Private Sub Auswertung()
Bisher zeigt der Würfel sieben Augen. Das siebte
2. Static gewonnen As Byte Auge in der Mitte brauchst du für die Eins, die
3. Static verloren As Byte Drei und die Fünf. Damit vor dem Würfeln des
4. If Zufallszahl = Ratezahl Computers eine Starteinstellung zu sehen ist,
then muss für eine Sechs das SHAPE7 verschwinden –
es darf aber nicht gelöscht werden, denn es wird
5. gewonnen = gewonnen + 1
ja gebraucht. Also muss es unsichtbar werden.
6. [Link] =
1. Du klickst SHAPE7 an ...
"Gewonnen!"
2. ... und drückst STRG + UMSCHALT + V
7. [Link] =
Im EIGENSCHAFTEN-Fenster ist die
gewonnen
Eigenschaft VISIBLE –also sichtbar –
8. Else markiert. Der Wert ist TRUE, also Wahr. Das
9. verloren = verloren + 1 Objekt ist sichtbar.
10. [Link] = 3. Nun stellst du den Wert um auf
Verloren!" Visible = False ...
11. [Link] = 4. ... und drückst auf F5
verloren
Es sollte jetzt eine Sechs erscheinen.
12. End If
Achte darauf, dass du die Eigenschaft für das
[Link] Sub SHAPE veränderst und nicht versehentlich ein
Etwas merkwürdig kommt dir sicherlich der anderes Objekt, z.B. die FORM, aktiviert hast.
Code in Zeile 5 und in Zeile 9 vor. Das Oben im EIGENSCHAFTEN-Fenster steht in der
Gleichheitszeichen ist kein mathematisches Anzeige, welches Objekt gerade 'dran' ist. Es
Zeichen, sondern ein Zuweisungszeichen. Der kann dir sonst passieren, dass plötzlich die Form
Variablen GEWONNEN wird ein Wert unsichtbar gemacht wird.
zugewiesen. In diesem Fall ist das der Du ahnst sicher schon, wie es weitergeht. Es
ursprüngliche Wert der Variablen, um 1 erhöht ( wird für jede Augenanzeige das jeweilige Shape
+ 1). Der Startwert der Variablen ist 0; dem unsichtbar gesetzt. Da kommt einige Tipparbeit
ursprünglichen Wert 0 wird der um 1 erhöhte auf dich zu, aber über BEARBEITEN | KOPIEREN
Wert zugewiesen – und das ist 0 + 1. Beim und BEARBEITEN | EINFÜGEN kannst du den
nächsten Mal wird der alte Wert 1 wiederum um Arbeitsaufwand verkürzen.
1 erhöht. So wird dem Computer das Zählen
beigebracht. Den Wert der Variablen zeigen wir

Visual Basic für Einsteiger - 02-09-13


24 Die Zufallszahl des Computers

Du legst die Prozeduren 1-6 mit der folgenden Die Sache sieht so aus:
Prozedur an: Private Sub Zwei()
[Link] Sub Eins() [Link] = True
2. [Link] = False [Link] = False
3. [Link] = False [Link] = False
4. [Link] = False [Link] = False
5. [Link] = False [Link] = False
6. [Link] = False [Link] = True
7. [Link] = False [Link] = False
8. [Link] = True End Sub
[Link] Sub Es müssen die beiden Augen links oben und
Diese Prozedur zeigt dir, dass bis auf SHAPE7 rechts unten, also Shape1 und Shape6 sichtbar
alle Shapes auf unsichtbar gesetzt sind, so dass (Visible = True), alle anderen unsichtbar
beim Aufruf von PROZEDUR EINS nur das sein. Die Eins im Code wird durch Zwei ersetzt.
mittlere Auge sichtbar sein dürfte. Um das zu Dann drückst du auf F5 und klickst die
überprüfen, legen wir eine Befehlsschaltfläche Befehlsschaltfläche an. Es sollten zwei Augen zu
an, doppelklicken auf sie und versehen sie mit sehen sein.
folgender Prozedur: So machst du das jetzt für jede Augenzahl – und
Private Sub Command1_Click() testest immer wieder mit der Prozedur auf Seite
Eins 22:
End Sub If Zufallszahl = Ratezahl Then
In diese Test-Prozedur trägst du den Aufruf der Gewonnen
Prozedur Eins ein, dann drückst du auf F5 und Else
klickst auf die Befehlsschaltfläche. Eigentlich Verloren
müsste jetzt die Augenzahl Eins auf dem Würfel
zu sehen sein. Stimmt’s? End If

Wie du dich vielleicht erinnerst, hatte ich darauf Wenn du für alle Prozeduren den Code
hingewiesen, dass es wichtig ist, die richtige geschrieben hast, löscht du die Prozedur
Command1_
Reihenfolge der Shapes einzuhalten. Hast du
alles beachtet, dürfte es keine Probleme geben. Click. Nun fehlt nur noch die Anbindung an
diese Prozeduren. Der Compter erzeugt eine Zahl
1. Du markierst den Code in der Prozedur Eins – und diese Zahl soll an die Augenanzeige-
und zwar nur den Code, also die Zeilen 2-8 in Prozeduren weitergeleitet werden, d.h. mit
der Prozedur oben auf der Seite! Wenn-Dann müssten wir weiterkommen. Wenn
2. Dann drückst du STRG + C, wodurch der Zufallszahl = 1, dann Prozedur Eins usw. Es gibt
markierte Teil kopiert wird, ... natürlich verschiedene Wege, so ein Problem zu
3. setzt den Cursor in die Leerzeile in Prozedur lösen, aber für diesen Zweck ist der Weg der
Zwei ... Wenn-Dann (If-Then)-Entscheidung der
übersichtlichste.
4. und drückst STRG + V

Visual Basic für Einsteiger - 02-09-13


Prozedur Würfelanzeige anlegen 25

Prozedur Würfelanzeige anlegen einzufügen. Willst du eine Prozedur zu


Als nächstes definieren wir die Prozedur Testzwecken kurzfristig abschalten, brauchst du
WÜRFELANZEIGE mit folgender Prozedur: nur ein sogenanntes Kommentarzeichen davor zu
setzen. Das Apostroph ist ein solches
Private Sub Würfelanzeige() Kommentarzeichen. So veranlasst z.B.
If Zufallszahl =1 Then Eins 'Auswertung Visual Basic, den Aufruf zu
If Zufallszahl =2 Then Zwei überlesen. Ein Kommentarzeichen wird – wie der
If Zufallszahl =3 Then Drei Name schon sagt – für Kommentare in einem
Programm eingesetzt.
If Zufallszahl =4 Then Vier
If Zufallszahl =5 Then Fünf Du fragst dich, wozu Kommentare gut sind? Ich
If Zufallszahl =6 Then garantiere dir, dass du nach einigen Monaten bei
Sechs deinen Programmen nicht immer mehr genau
weißt, welchen Sinn eine bestimmte
End Sub Programmieridee hatte. Wenn du das Programm
Diese Prozedur leuchtet unmittelbar ein – es mit Kommentaren versehen hast, hast du deine
muss diese Prozedur nur noch aufrufen. eigenen Hinweise als Gedächtnisstütze.
Willst du die optimale Platzierung für den Möglich wäre auch, dass du ein Programm
Prozeduraufruf finden, gehst du gedanklich das nachträglich um irgendeine Prozedur ergänzen
Programm durch und prüfst, was in welcher willst.
Reihenfolge erfolgt. Wird auf eine Zahl-
Schaltfläche geklickt, wird das Click-Ereignis Sehen wir uns ein Beispiel für eine solche
ausgelöst. Darin wird die Variable gespeichert Kommentarzeile an:
und zur Computer-Prozedur verzweigt, in der 1. Option Explicit
wiederum eine Zufallszahl erzeugt wird. Es ist 2. Dim Ratezahl As Byte
sinnvoll, die Würfelanzeige hier aufzurufen. Der 3. Dim Zufallszahl As Byte
Würfel wird angezeigt, der Computer kehrt zur
Prozedur zurück und verzweigt zur
AUSWERTUNG. Die wird logischerweise dort 4. 'MessageBox bei Spielende
vorgenommen und das Ergebnis angezeigt.
Damit ist dieser Teil abgearbeitet, und das
Programm wartet auf eine erneute Eingabe. Dann 5. Private Sub cmdEins_Click()
beginnt das gleiche Spiel noch einmal – bis du 6. Ratezahl = 1
auf die Schließen-Schaltfläche klickst. …
1. Private Sub computer() Zeile 4 in dieser Prozedur ist eine
2. Randomize Kommentarzeile, die ich mittendrin angelegt
3. Zufallszahl = Int(Rnd * 6)+1 habe, als mir die Idee kam, dass man vor
Beenden des Programms noch eine
4. Würfelanzeige
Sicherheitsabfrage einbauen könnte. Damit ich es
5. Auswertung nicht vergesse, habe ich diese Kommentarzeile
6. End Sub eingefügt. Wenn die Angelegenheit erledigt ist,
wird sie einfach gelöscht.
Zeile 4 und Zeile 5 in dieser Prozedur rufen die
jeweilig aktuellen Prozeduren auf. Dieses Unter- Wenn du fremde Programme liest, kannst du oft
teilen eines Programms in viele kleine Prozedu- nicht nachvollziehen, was der Entwickler des
ren hat den großen Vorteil, dass bei Änderungen Programms beabsichtigt hat, denn du weißt ja,
immer nur ein kleines Häppchen durchsucht und dass es bei Visual Basic oft mehrere
geändert werden muss. Du hast gesehen, dass es Lösungsmöglichkeiten für ein Problem gibt. In
kein Problem ist, eine selbstdefinierte Prozedur solchen Fällen helfen Kommentare dem Leser
anzulegen und in eine Ereignisprozedur sehr gut weiter. Kommentarzeilen sind meistgrün
eingefärbt, so dass sie schnell zu erkennen sind.

Visual Basic für Einsteiger - 02-09-13


26 Mitteilungsfenster (Messagebox)

Mitteilungsfenster (Messagebox) Du schließt das Mitteilungsfenster mit einem


Visual Basic stellt dir einfach zu Klick auf OK,, worauf das Mitteilungsfenster
programmierende Dialogfelder zur Verfügung, geschlossen wird und das Programm wartet, als
die du in gewissen Grenzen nach deinen wäre nichts geschehen.
Wünschen ausgestalten kannst.
Dir ist sicher schon öfter aufgefallen, dass
1. Du erstellst eine provisorische sogenannte QuickInfos eingeblendet werden,
Befehlsschaltfläche und doppelklickst auf sie wenn du den Mauszeiger auf ein Objekt bewegst,
2. Im Codefenster gibst du folgende Prozedur z.B. im WERKZEUG-Fenster, aber auch beim
ein: Code-Schreiben. Visual Basic will dir helfen,
indem das Programm häufig eine Auswahlliste
Private Sub Command1_Click()
aller denkbaren Möglichkeiten einblendet.
MsgBox "Ich werde benach- Schreibst du Dim Variable As, blendet
richtigt!" Visual Basic eine Liste ein, die du mit der ➪ -
End Sub Taste ansteuern kannst. Tippst du z.B. den ersten
Buchstaben von INTEGER ein, zeigt dir Visual
3. Dann doppelklickst du auf die
Basic die Liste ab dem Buchstaben i. Hast du den
Befehlsschaltfläche,...
Wert ausgewählt, kannst du ihn mit der
4. ... fügst die Zeile 2 des obigen Programmms LEERTASTE einfügen.
ein, ...
Schreibst du den Begriff MSGBOX, siehst du eine
5. ... drückst auf F5 ...
längere Zeile, die anzeigt, was alles in einer
6. und klickst auf die Schaltfläche. MSGBOX eingetragen werden kann. Häufig sind
diese QuickInfos verwirrend, manchmal aber
sehr hilfreich, vor allem, wenn es um die richtige
Reihenfolge der Parameter geht.
Message-Box
Typ Beschreibung
0 SCHALTFLÄCHE OK
1 SCHALTFLÄCHEN OK, ABBRECHEN
2 SCHALTFLÄCHEN BEENDEN,
WIEDERHOLEN, IGNORIEREN
3 SCHALTFLÄCHEN JA, NEIN, ABBRECHEN
4 SCHALTFLÄCHEN JA, NEIN
Die Abbildung zeigt dir das Ergebnis der kleinen 5 SCHALTFLÄCHEN WIEDERHOLEN,
Zeile in der obigen Prozedur. Dieses Fenster ABBRECHEN
wird selbständig von Windows und nicht etwa
von nicht von Visual Basic angelegt. Seine 16 STOP-SYMBOL
Platzierung kannst du nicht beeinflussen, und 32 FRAGEZEICHEN-SYMBOL
auch die Ausgestaltung bleibt bis auf wenige 48 AUSRUFEZEICHEN-SYMBOL
Ausnahmen Windows überlassen. Aber ganz so
hilflos bist du natürlich nicht. 64 INFO-SYMBOL
Die MessageBox hat eine Titelleiste, die, falls du Die übliche Reihenfolge der Parameter ist
nichts anderes angibst, den Namen des Projekts MELDUNG, TYP, TITEL. Die Meldung oder
anzeigt. Es gibt Platz für eine Nachricht, und meinetwegen auch Nachricht ist das, was dem
offensichtlich gibt es die Möglichkeit, Anwender mitgeteilt werden soll, der Typ ist aus
Befehlsschaltflächen zu verwenden. der Tabelle zu entnehmen und der Titel wird in
der Titelleiste des Meldungsfensters angezeigt.

Visual Basic für Einsteiger - 02-09-13


Mitteilungsfenster (Messagebox) 27

Sehen wir uns das an einer vorläufigen Prozedur Du löschst die Befehlsschaltfläche sowie die
an, indem wir auf COMMAND1 doppelklicken gesamte eben formulierte Prozedur
und folgenden Code einfügen: Weiter geht es mit einem Doppelklick auf
1. Dim Titel As String cmdSchließen.
2. Dim Meldung As String Der einzugebende Code lautet:
3. Titel = "Nachfrage" 1. Private Sub
4. Meldung = "Willst du das cmdSchließen_Click()
Spiel wirklich beenden?" 2. Dim Meldung As String
5. MsgBox Meldung, 3 + 32, 3. Dim Titel As String
Titel 4. Dim Typ As Byte
In dieser Prozedur werden zuerst die Variablen 5. Dim Schaltfläche As Byte
als Zeichenketten oder STRINGS deklariert, dann
6. Meldung = " Willst du das
den Variablen die Werte zugewiesen und in Zeile
Spiel wirklich beenden?"
5 die MSGBOX-Anweisung mit dem Typ 3 der
Typentabelle formuliert. Dadurch werden die 7. Titel = "Sicherheitsanfrage"
Befehlsschaltflächen Ja, Nein und Abbrechen 8. Typ = 3 + 32 + 0
dargestellt. 9. Schaltfläche =
Zum gewählten Typ für die Darstellung der MsgBox(Meldung, Typ, Titel)
Befehlsschaltflächen kann noch der Typenwert [Link] Schaltfläche = 6 Then
für Symbole addiert werden. Der Wert 3 + 32
kann als Summe angegeben werden (35) oder 11. End
auch als Term und zeigt die Befehlsschaltflächen [Link] Schaltfläche = 7
JA, NEIN und ABBRECHEN sowie ein Then
Fragezeichen an. So eine Kombination eignet 13. MsgBox "Dann eben
sich selbstverständlich, um auf eine Frage nicht!", vbOKOnly
hinzuweisen. So weit klappt ja alles, aber es
[Link] If
muss auch darauf reagiert werden, wenn eine
Schaltfläche angeklickt wird. Die Click- [Link] Sub
Ereignisse für Message-Boxes sind vordefiniert, Innerhalb der Prozedur CMDSCHLIEßEN muss die
siehe Tabelle. Der entsprechende Wert wird in Abfrage eingerichtet werden. Nachdem die
einer Variablen gespeichert und abgefragt. Variablen deklariert wurden und der Typ
Typ Beschreibung festgelegt ist, wird der Variablen SCHALTFLÄCHE
in Zeile 9 der Wert der Message-Box übergeben.
1 OK wurde angeklickt In Zeile 10–13 werden die Schaltflächen-Klicks
2 Abbrechen wurde angeklickt oder ausgewertet, wobei in Zeile 12 eine weitere
[ESC] Message-Box als Anweisung eingefügt ist. Es
3 Abbrechen wurde angeklickt wurde anstatt des Wertes 0 für den Typ
(SCHALTFLÄCHE OK) eine Visual Basic-
4 Wiederholen wurde angeklickt Konstante eingesetzt. Davon gibt es eine ganze
5 Ignorieren wurde angeklickt Menge, die genauso wie der Zahlenwert
verwendet werden können. Auch für diejenigen,
6 Ja wurde angeklickt
die kein Englisch können, ist die Konstante
7 Nein wurde angeklickt manchmal verständlicher als der reine
Für diesen Zweck wird die Message-Box als Zahlenwert
Funktion eingesetzt. Es wird also nicht nur eine
Mitteilung gemacht (Message-Box als
Anweisung), sondern eine Weiterverarbeitung
der Klicks vorgenommen.

Visual Basic für Einsteiger - 02-09-13


28 Kontrollstrukturen

Kontrollstrukturen On Error Goto Fehlerbehandlung


Innerhalb einer Prozedur wird eine Sprungmarke
In jedem Programm müssen irgendwann
gesetzt. Du gibst ihr einen Namen und setzt
Entscheidungen getroffen oder Programmabläufe
einen Doppelpunkt dahinter.
wiederholt werden. Für solche Operationen stellt
Visual Basic eine ganze Reihe von Fehlerbehandlung:
Lösungsmöglichkeiten zur Verfügung, für jeden Danach folgen die Anweisungen, die bei
besonderen Zweck. Auftreten eines Fehlers ausgeführt werden
GOTO sollen. Meistens wird eine MessageBox mit dem
ermittelten Fehler ausgegeben. In einem unserer
Aus dem Wort ergibt sich schon der Sinn dieser Programme wird eine Fehlerbehandlungsroutine
Anweisung: Gehe zu. Dieser Befehl ist eine programmiert.
unbedingte Anweisung. Er stammt noch aus
alten Basic-Zeiten, als Programme mit Fehlercode Beschreibung
Zeilennummern versehen waren. Goto 210 ([Link]) (Err. Description)
bedeutetet: gehe zu Zeile 210 und mache dort 5 Unzulässiger Prozeduraufruf
weiter. Heute wird dieser Befehl nur noch selten 7 nicht genügend Speicher
verwendet, meistens bei der Fehlerbearbeitung.
13 Typen unverträglich
Fehlerbehandlung ist in sehr vielen Prozeduren
angebracht. Dringend erforderlich ist sie, wenn 53 Datei nicht gefunden
Benutzereingaben vorkommen, denn 55 Datei bereits geöffnet
Eingabefehler sind nicht selten. Sehen wir uns 76 Pfad nicht gefunden
das an einem Beispiel an:
321 Ungültiges Dateiformat
1. Private Sub
IrgendeineProzedur() 31037 Fehler beim Laden einer Datei
2. On Error Goto
Fehlerbehandlung Nach Aufruf der Prozedur 'merkt' sich Visual
3. Dim .... Basic, dass eine Fehlerroutine angelegt ist,
4. Code (Zeile 2: bei Fehler gehe zu Fehlerbehandlung)
5. ... und fährt mit dem Bearbeiten des Codes fort.
6. ... Tritt kein Problem auf, wird in Zeile 7 mit der
7. Exit Sub Anweisung EXIT SUB – Verlasse die Prozedur –
8. Fehlerbehandlung: die Prozedur beendet. Tritt ein Fehler auf, wird
9. Dim Fehler As String zur Sprungmarke gesprungen und der
10. Fehler = "Es ist ein Fehlerbehandlungsteil abgearbeitet. In diesem
Fehler aufgetreten!" + Fall wird in einem Mitteilungsfenster der Fehler
Chr$(13) + Chr$(10) beschrieben, wobei man wissen muss, dass es
11. Fehler = Fehler + unzählige Fehlernummern mit den
"Fehlernummer: " + entsprechenden Beschreibungen gibt, für jeden
Str([Link]) + Chr$(13) + Sonderfall eine eigene Fehlernummer.
Chr$(10) Ab Zeile 10 wird die Ausgabe für das
12. Fehler = Fehler + "Text: Mitteilungsfenster geschrieben. Näheres dazu
" + [Link]
findest du im Abschnitt Mitteilungsfenster auf
13. MsgBox Fehler
Seite 26.
[Link] Sub

Visual Basic für Einsteiger - 02-09-13


Entscheidungen 29

Entscheidungen Ein beliebter Fehler ist, die Anweisung End If


am Ende der Struktur zu vergessen. Visual Basic
Im einfachsten Fall ist eine Entscheidung eine
weist dich mit einer Fehlermeldung darauf hin.
Ja/Nein-Entscheidung. "Willst du das Programm
fortsetzen? Ja, Nein?". Wenn Nein, dann Ende Select/Case-Struktur
des Programms, wenn ja, dann Neustart. Eine Variable kann unterschiedliche Werte
If-Strukturen haben. Soll die Variable auf ihren Wert geprüft
werden, welchen Wert sie hat, setzt man die
Wenn mehrere Auswahlmöglichkeiten zur
SELECT/CASE-Anweisung ein. SELECT bedeutet
Entscheidung anstehen, wird meistens die
Auswahl und CASE im Fall. Durchsuchst du z.B.
IF/THEN-Struktur verwendet. Die einfachste
eine Adressenliste nach Namen, wird in der
Anwendung ist die Form
SELECT/CASE-Anweisung jede Eingabe in ein
If Bedingung Then Anweisung Textfeld und jede Auswahl aus einer Liste
Sehen wir uns das genauer an. Die Bedingung geprüft. Trifft eine Auswahl zu, wird die
kann ein Vergleich sein, etwa: Anweisung nach der Auswahl ausgeführt,
If A = 13 Then andernfalls wird ähnlich wie bei IF/THEN die
Hintergrundfarbe = rot CASE ELSE-Anweisung aktiviert.
Trifft die Bedingung zu, ist also wahr, wird die Select Case Name
Anweisung ausgeführt, sonst nicht. Du kannst Case "Erwin„
aber auch anweisen, was sonst geschehen soll: [Link] =
"Erwin ist mein Freund."
If A = 13 Then
Case "Ursula"
Hintergrundfarbe = rot
[Link] =
Else
"Ich mag Ursula nicht. Die ist
Hintergrundfarbe = grün
zickig!"
End If
Case "Torsten"
Trifft die Bedingung zu, wird die [Link] =
Hintergrundfarbe rot werden, sonst (Else) wird "Torsten ist ein guter
sie grün. Fussballspieler."
Auch bei einfachen Entscheidungen bietet sich Case Else
die Blockstruktur an. Sie ist übersichtlicher. [Link] =
"Ich habe leider keine
Vielfach besteht die Wahl zwischen mehreren Freunde."
Bedingungen. Natürlich kann für jede Bedingung End Select
eine IF/THEN-Abfrage geschrieben werden, aber Es können Zahlen und Zahlenbereiche geprüft
es geht einfacher. Die Abfrage wird um ELSEIF werden. Visual Basic prüft, ob ein Zahlenwert
erweitert, was soviel heisst wie SonstWenn. kleiner als 5 oder größer als 5 ist.
Wenn A = 13 ist, dann Hintergrundfarbe = rot, Einen Zahlenbereich zwischen 50 und 90 prüft
sonst wenn A = 20 ist, dann Hintergrundfarbe = man mit der Anweisung Case 50 To 90.
blau, sonst wenn A = 30 ist, dann Hintergrund-
farbe = gelb, sonst, wenn keine Bedingung Select Case Zahlenwert
Case < 5
zutrifft, dann Hintergrundfarbe = grün:
'Visual Basic setzt automatisch
If A = 13 Then Case Is < 5 ein
Hintergrundfarbe = rot Print "Das ist sehr wenig!"
ElseIf A = 20 Then Case > 5
Hintergrundfarbe = blau 'Visual Basic setzt automatisch
ElseIf A = 30 Then Case Is > 5 ein
Hintergrundfarbe = gelb Print "Das ist etwas mehr!"
Else Case Else
Hintergrundfarbe = grün Print "Das ist Nichts!"
End If End Select

Visual Basic für Einsteiger - 02-09-13


30 Schleifen

Schleifen an, was bewirkt, dass Visual Basic wieder an den


Anfang der Schleife springt und dort prüft, ob
Häufig müssen Anweisungen mehrmals der Endwert schon erreicht ist, um die
ausgeführt werden, z.B. wenn eine Liste nach Anweisungen gegebenenfalls nochmals
einem Suchbegriff durchsucht werden muss. auszuführen. Wird keine Schrittweite angegeben,
Visual Basic hat mehrere Möglichkeiten, um zählt das Programm ganz normal hoch.
solche Abläufe zu automatisieren.
Soll rückwärts gezählt werden, ist eine
Der Aufbau einer Schleife sieht so aus: es wird Schrittweite -1 nötig
mit Startwerten begonnen, dann werden die
notwendigen Anweisungen ausgeführt, und die For i = 10 To 0 Step -1
Schleife beginnt wieder von vorn. Visual Basic Print i „Visual Basic“
muss nur wissen, wo die Schleife beginnt, wo sie Next
endet und wann sie beendet werden soll.
Für den Startwert und den Endwert können auch
For-Next-Schleife Variablen benutzt oder berechnete numerische
Die Schleife wird mit dem Schlüsselwort For Werte eingesetzt werden. Eine Variable wie
eingeleitet und mit Next beendet. For Zählen = 3 * Wert + 20 To
For Zähler = Startwert To 100/10
Endwert Step Schrittweite ist ziemlich unsinnig, aber möglich.
Anweisungen While-Wend-Schleifen
Next FOR-NEXT-Schleifen haben einen Nachteil: man
(Die ersten beiden Zeilen gehören in eine Zeile.) muss vorher wissen, wie oft die Schleife
durchlaufen werden soll. Mit einer WHILE-
Als Zähler wird eine Variable eingesetzt, in der
WEND-Schleife kann man das Schleifenende von
die Anzahl der Durchläufe der Schleife
einer Bedingung abhängig machen. Ist die
gespeichert werden. Es hat sich eingebürgert,
Bedingung erfüllt, wird die Schleife verlassen.
dafür den Buchstaben i zu verwenden. Du kannst
aber auch jede andere Bezeichnung benutzen. While Bedingung
For i 1 To 10 Step 2 Anweisungen
Print i, „Visual Basic“ Wend
Next WHILE heisst so viel wie während, also solange.
Solange die Bedingung erfüllt ist, werden die
Dieser Code gibt die Anweisung, mit dem Wert 1
Anweisungen ausgeführt.
zu beginnen und mit 10 zu enden. Dabei wird die
Schrittweite 2 gezählt, also 1, 3, 5, 9, 11. While
Führst du diese Prozedur aus, setzt Visual Basic I < 10
eine Liste auf den Bildschirm, die folgende Print i
Punkte enthält: i = i + 1
1 VISUAL BASIC Wend
3 VISUAL BASIC In dieser Prozedur hat die Variable i den Wert 0.
5 VISUAL BASIC Zu Beginn der Schleife wird geprüft, ob die
7 VISUAL BASIC Variable kleiner als 10 (I < 10) ist. Wenn ja, d.h.
wenn die Aussage wahr ist, dann wird i
9 VISUAL BASIC
geschrieben und der Wert um 1 erhöht. Mit der
Da 11 größer ist als 10, wird die Schleife bei 9 Anweisung WEND, also zurückkehren, wird
beendet. Dabei besagt diese Anweisung wieder an den Anfang der Schleife gesprungen
folgendes: schreibe den Wert I und die und erneut geprüft. Diese Schleife ist etwas aus
Zeichenkette VISUAL BASIC auf den Bildschirm. der Mode gekommen, weil es heute
Die Prozedur kommt beim Schlüsselwort Next leistungsfähigere Exemplare dieser Art gibt.

Visual Basic für Einsteiger - 02-09-13


Schleifen 31

Do-Loop-Schleifen
Während man die FOR-NEXT-Schleife als Wichtig ist, dass du dir immer ganz klar über den
Zählschleife bezeichnet, kann die DO-LOOP- Schleifenablauf bist, damit keine unliebsamen
Schleife als Bedingungsschleife bezeichnet Überraschungen passieren – entweder dass die
werden. Die Bedingungen können am Ende oder Schleife gar nicht durchlaufen wird, weil die
auch am Anfang der Schleife getestet werden. Abbruchbedingungen schon vorher erfüllt sind,
1. Do While Bedingung oder dass die Schleife nie aufhört, weil die
Abbruchbedingung nicht erreicht wird.
2. Do Until Bedingung
Anweisungen
Loop
Beim Testen der Abbruchbedingung hat man die
Möglichkeit, entweder Zeile 1 oder Zeile 2
einzusetzen, je nachdem, welchen Zweck man
erreichen will. Do While bedeutet, dass die
Schleife so lange ausgeführt wird, wie die
Bedingung erfüllt ist. Do Until bedeutet, dass
die Schleife so lange ausgeführt, bis die
Bedingung erfüllt ist. Ob du die While- oder
Until-Version bevorzugst, ist Geschmackssache.
Es muss immer nur die Bedingung entsprechend
geschrieben sein.
Do
Anweisungen
1. Loop While Bedingung
Loop Until Bedingung
Ob du allerdings am Ende oder am Anfang einer
Schleife testest, ist nicht egal, denn der Test am
Ende einer Schleife bedeutet, dass die Schleife
erst einmal durchlaufen werden muss.
Wenn in einer Datei ein Name gesucht werden
soll, ist es natürlich sinnvoll, den Abbruch zu
Beginn zu testen, denn wenn der Name gar nicht
vorhanden ist, sucht die Prozedur endlos weiter.
Irgendwann hängt sie sich dann auf.
Do Until „Klaus“ Or
Dateiende
Eingaben in ein Textfeld
Loop
Diese Schleife wird durchlaufen, bis entweder
‘Klaus’ gefunden wird oder das Dateiende
erreicht ist.

Visual Basic für Einsteiger - 02-09-13


32 Dateiverwaltung

Dateiverwaltung Anweisung sofort. Eingedeutscht heißt das:


Öffne die Datei mit dem beschriebenen
Im Abschnitt Grafik auf Seite 40 werden Dateinamen zum Lesen mit der nächsten freien
Dateiverwaltungs-Operationen verwendet. Es Dateinummer.
werden Daten gespeichert, bzw. geladen. Im In Zeile 7 werden die in den Variablen A, B und
Rahmen dieses Heftes kann nicht auf den sehr C abgelegten Daten eingelesen und in den Text-
umfangreichen Bereich der Dateiverwaltung feldern hezeigt. In Zeile 11 wird die Datei wieder
eingegangen werden. Es soll nur das Öffnen und geschlossen – vergiss nicht den CLOSE-Befehl!
Schließen einer Datei beschrieben werden.
Hier haben wir definierte Variablen verwendet.
Grundsätzlich gibt es die Schritte: Ist die Größe einer Datei nicht bekannt, muss das
OPEN- eine Datei wird geöffnet Programm sie bis zu ihrem Ende lesen.
ANWEISUNG Die Anweisung dafür lautet wie folgt:
INPUT- Daten werden gelesen 1. Do While Not EOF(DateiNr)
ANWEISUNG 2. Line Input #DateiNr, Temp
PRINT- Daten werden geschrieben 3. [Link] = [Link] &
ANWEISUNG Temp & vbCrLf
4. Loop
CLOSE- eine Datei wird In einer Do-Schleife wird die Datei so lange
ANWEISUNG geschlossen gelesen, wie EOF (End Of File = Ende der Da-
tei) nicht erreicht ist. Dann werden die einzelnen
Datei lesen Zeilen der Datei mit der Anweisung LINE INPUT
Es können gleichzeitig mehrere Dateien geöffnet gelesen und in einer Zwischenvariablen TEMP
sein. Daher bekommt jede Datei eine Nummer. gespeichert. In Zeile 3 wird in einem Textfeld
Nun kannst du dir die Nummern merken oder jede einzelne Zeile dargestellt und mit einem
Visual Basic nach der jeweils freien Nummer Steuerzeichen für den Zeilenabschluss versehen.
suchen lassen. In Zeile 4 der folgenden Prozedur Das entspricht einer EINGABE nach jeder Zeile
steht die Anweisung für Visual Basic, nach der und ist eine Konstante für die Anweisungen
freien Nummer zu suchen: CHR(10) & CHR(13), die wir auf Seite 38
DateiNr = FreeFile. verwenden.
In der Variablen Dateiname wird der Pfad zu der Datei speichern
Datei gespeichert. Je nachdem, wo du die Datei In Zeile 5 der folgenden Prozedur wird die
ablegst, musst du den Pfad ändern. Ist keine benannte Datei zum Speichern bzw. Schreiben
Datei vorhanden, erfolgt eine Fehlermeldung. geöffnet. Die Dateinummer wurde mit FREEFILE
Private Sub cmdÖffnen_Click() ermittelt. In Zeile 6 folgen dem Schreibbefehl
1. Dim DateiNr As Integer PRINT nach der Dateinummer die Variablen,
2. Dim DateiName As String wonach die Datei geschlossen wird. Das ist – wie
3. Dim Temp As String gesagt – nur ein ganz kleiner Abriss zur
4. DateiNr = FreeFile Dateiverwaltung. Für mehr ist leider kein Platz.
5. DateiName = "C:\[Link]" Private Sub cmdSpeichern_
6. Open DateiName For Input As Click()
DateiNr 1. Dim DateiNr As Integer
7. Input #DateiNr, a, b, c 2. Dim DateiName As String
8. [Link] = a 3. DateiName = "C:\[Link]"
9. [Link] = b 4. DateiNr = FreeFile
10. [Link] = c 5. Open DateiName For Output As
[Link] DateiNr
End Sub 6. Print #DateiNr, a, b, c
In Zeile 6 wird die Datei zum Lesen geöffnet. 7. Close
Wer etwas Englisch kann, versteht die End Sub

Visual Basic für Einsteiger - 02-09-13


Zweites Programmprojekt 33

Zweites Programmprojekt
Auch bei dieser Prozedur steht nicht die Klasse Wie gesagt wird nur ein optischer Effekt erzeugt.
des Programms im Vordergrund, sondern die Auf das Programm hat das keinen Einfluss, und
Programmiertechniken. Grundlage ist unser wie du siehst, gibt es auch keine besonderen
Würfelspiel. Diesmal sollen drei Würfel Eigenschaften. Die Eigenschaft CAPTION spielt
eingesetzt werden. Dafür muss die Form die größte Rolle – damit hat es sich auch schon.
natürlich größer aufgezogen werden. Übrigens kannst du hier einen Schönheitstrick
Du startest Visual Basic und wählst wiederum nutzen – damit die CAPTION nicht so sehr an der
die [Link] Rahmenlinie klebt, kannst du vor und nach dem
Wert für sie ein Leerzeichen eingeben.
Oberfläche
Hast du die Form entsprechend der Tabelle
Einen Vorschlag zur Oberfläche siehst du im eingerichtet und startest sie mit F5, stellst du fest,
Bild. Die Kodierung erarbeiten wir anschließend. dass sie keine Titelleiste hat: wenn du den Wert
für CONTROLBOX auf FALSE setzt und BORDER-
STYLE auf FESTER DIALOG, erhältst du eine
Form, die nur aus einer einfachen Fläche besteht.
Das bedeutet natürlich auch, dass die Schalt-
flächen für MINIMIEREN, MAXIMIEREN und
SCHLIEßEN fehlen.
Einen Titel soll das Projekt natürlich haben. Also
setzen wir ein Bezeichnungsfeld oder LABEL ein.
Label1
CAPTION Beschriftung Würfelspiel
mit Visual
Basic 6.0
BORDER- Randform Fest Einfach
STYLE
Für diese Oberfläche werden Rahmenfelder oder
FRAMES eingesetzt. Diese haben ALIGNMENT Ausrichtung Zentriert
programmtechnisch keinen Nutzen – sie dienen FONT Schrift aussuchen
schlicht zu Gestaltungszwecken. Mit ihrer Hilfe
lassen sich Gruppierungen von Objekten FORECOLOR Schriftfarbe aus Palette
gestalterisch vornehmen. In unserem Beispiel aussuchen
fügen wir die Befehlsschaltflächen für die Zahlen
oder die drei Bildfelder für die Würfelanzeigen Unsere Arbeitsschritte sehen also so aus:
in Rahmenfelder ein. • Zunächst speichern wir unser Projekt über
Form. DATEI | PROJEKT SPEICHERN.

HEIGHT Höhe ca. 5950 • Dann erstellen wir die Rahmen über
DREIWÜ[Link] ...
WIDTH Breite 7040
• ... und die Würfel über DREIWÜ[Link] ...
CAPTION Beschriftung ""
und ziehen endlich das Rahmenfeld auf.
CONTROLBOX System- False
Menüfeld
BORDERSTYLE Rahmenform Fester
Dialog
BACKCOLOR Hintergrund- auswählen
farbe

Visual Basic für Einsteiger - 02-09-13


34 Zweites Programmprojekt

Soll ein Rahmenfeld sich wie ein Behälter für die 6. Nun legst du das zweite Rahmenfeld an, ...
anderen Objekte verhalten, müssen Objekte im(!) Frame2
Rahmenfeld aufgezogen werden. Setzt man sie
von außen hinein, z.B. über Doppelklick auf das CAPTION Beschriftung Schaltflächen
Werkzeug und Drag & Drop, entsteht das 7. ...ziehst sechs Befehlsschaltflächen auf, ...
Problem, dass die angeordneten Objekte beim
8. ... setzt CAPTIONS wie angezeigt ...
Verschieben des Rahmenfeldes an ihrem Platz
liegen bleiben. Ziehst du die Objekte aber im 9. ... und gibst ihnen die Namen
Rahmenfeld auf, werden sie mitverschoben. cmdEins, cmdZwei, cmdDrei,
cmdVier, cmdFünf, cmdSechs
1. Zunächst ziehst du den ersten Rahmen auf:
10. Fehlt noch das dritte Rahmenfeld:
Frame1 Frame3
CAPTION Beschriftung Würfelanzeige CAPTION Beschriftun Ergebnisse
(Leerzeichen nicht g
vergessen!)
11. Hier setzt du drei Bezeichnungsfelder ein:
2. Nun ziehst du im FRAME1 drei Bildfelder auf:
Labels
Picture 1 – 3
NAME Name lblGewonnen
NAME Name Würfel1, lblVerloren
Würfel2, lblKapital
Würfel3
CAPTION Beschriftung 00
BACKCOL Hintergrund aus Palette
OR farbe aussuchen FONT Schrift aussuchen
ALIGNMENT Ausrichtung zentriert
3. Dann ordnest du im ersten Bildfeld SHAPE1
BORDER- Randform Fest Einfach
bis SHAPE7 an, so wie wir das im
STYLE
vorhergehenden Programm 'Würfeln' getan
haben, ... FORECOLOR Schriftfarbe aussuchen
4. und wiederholst den Prozess in den anderen
12. Für die Beschriftung der Bezeichnungsfelder
Bildfeldern.
legst du wiederum drei Bezeichnungsfelder
5. Die Namen für die Figuren sollen einen an und setzt als CAPTIONS: 'gewonnen',
Bezug zum jeweiligen Würfel haben: im 'verloren', 'Kapital'.
ersten Würfel bekommt SHAPE1 den Namen
Auge1_1, SHAPE2 den Namen Auge2_1 13. Felt noch noch ein viertes Rahmenfeld für die
Befehlsschaltflächen Spielregeln und
usw. Im zweiten Würfel heißen die Namen
Beenden:
dann Auge1_2, Auge2_2 usw. und im
dritten Würfel Auge1_3, Auge2_3 usw. Befehlsschaltflächen
Das ganze sieht so aus: NAME Name cmdSpielregel
Auge1_1 Auge1_2 Auge1_3 n
Auge2_1 Auge2_2 Auge2_3 CAPTION Beschriftung &Spielregeln
Auge3_1 Auge3_2 Auge3_3
Auge4_1 Auge4_2 Auge4_3 NAME Name cmdBeenden
Auge5_1 Auge5_2 Auge5_3 CAPTION Beschriftung &Beenden
Auge6_1 Auge6_2 Auge6_3
Auge7_1 Auge7_2 Auge7_3

Visual Basic für Einsteiger - 02-09-13


Zweites Programmprojekt 35

Wenn du den Wert der Eigenschaft Caption 3. Es müssen für jeden Würfel Zufallszahlen
einträgst, vergiss nicht das sogenannte erzeugt werden.
'Kaufmännisch Und' (&). Dieses Zeichen 4. Also doppelklickst du in eine freie Stelle der
veranlasst Windows-Programme dazu, den Form ...
Buchstaben, vor dem es steht, zu
5. ... und gibst im Prozedurrahmen FORM_LOAD
unterstreichen. Damit kannst du das Klick-
die Anweisung Randomize ein – damit wird
Ereignis mit der Tastenkombination ALT +
(unterstrichener) BUCHSTABE auslösen. Das beim Start des Programms, also wenn die
Klick-Ereignis Beenden wird also mit ALT Form in den Arbeitsspeicher geladen wird,
der 'Zufallsgenerator' aktiviert.
+ B ausgelöst.
6. Nun legst du die Prozedur Private Sub
Willst du einzelne Objekte aufeinander Computer an.
ausrichten, kannst du das über Drag & Drop
erledigen. Genauer geht das, wenn du die Werte 7. Die folgende Prozedur zeigt den Code, mit
LEFT, TOP, HEIGHT, WIDTH unmittelbar änderst. dem in einer Schleife für jeden Würfel
Du musst dabei nicht immer den alten Wert Zufallszahlen erzeugt werden:
löschen, sondern kannst so lange neue Werte 1 Private Sub Computer()
eingeben, bis du zufrieden bist; der alte Wert 2 Dim i As Byte
wird überschrieben. 3 For i = 1 To 3
4 Zufallszahl(i) = Int(Rnd *
Sollen Objekte auf einer Linie ausgerichtet
6) + 1
werden, empfiehlt sich FORMAT | AUSRICHTEN:
5 Next i
6 End Sub
Bevor der Code erläutert wird, müssen wir den
Begriff ARRAY erklären.
In Programmen tauchen vielfach Gruppen von
Variablen auf, die gleichartig sind. In unserem
Fall taucht für jeden Würfel die Variable
ZUFALLSZAHL auf, die grundsätzlich keine
Unterschiede aufweist. Also wird hier ein
Variablenfeld angelegt, in dem jede gleichartige
Variable einen Index zur Unterscheidung
bekommt. So ein Variablenfeld nennt man ein
ARRAY. Der Index ist in Klammern an die
Vergiss nicht, dass du bei gehaltener STRG-Taste
Variable angefügt; und über ihn werden die
mehrere Objekte gleichzeig markieren kannst.
Variablen angesprochen.
Vermutlich musst du die Sache etliche Male
7. Hier sieht die Sache so aus:
ausprobieren, bis du die Wirkungsweise
verstanden hast. Ausgerichtet wird immer an Zufallszahl(1)
dem Objekt, das die dunkleren Anfasser hat – Zufallszahl(2)
meistens also an dem Objekt, das zuletzt Zufallszahl(3)
angeklickt wurde. Du musst dir also vorher über 8. Wie deklariert man nun ein Array? Ähnlich
die Reihenfolge klar sein. wie einfache Variablen:
Dim Zufallszahl(3)
Code
9. Da die Variable auch in anderen Prozeduren
Die Oberfläche steht nun also – fehlt noch der benutzt wird, deklarierst du sie im
gesamte Code, der sie ans Laufen bringt. Allgemeinteil am Anfang des Code, also
1. Du doppelklickst auf auf CMDBEENDEN ... hinter Option Explicit.
2. ... und trägst im Prozedurrahmen 10. FOR-NEXT-Schleifen sahen wir uns im
CMDBEENDEN_CLICK die Anweisung End Abschnitt „Kontrollstrukturen“ auf Seite 28
ein. an. Innerhalb der Schleife werden drei

Visual Basic für Einsteiger - 02-09-13


36 Zweites Programmprojekt

Zufallszahlen erzeugt und über den Index 16. Entsprechend der Zufallszahl steuert das
jeweils der Variablen Zufallszahl() Programm die Prozedur für die Augenanzeige
zugeordnet. Es können auch zwei oder drei an. Dort werden die Augen mit der bekannten
gleiche Zahlen erzeugt werden. Soll der Eigenschaft Visible = True/False
Spieler die Zahlen des Computers sehen, dargestellt:
kannst du die Werte im sogenannte Private Sub Eins1()
Direktfenster anzeigen lassen. Auge1_1.Visible = False
11. Zwischen Zeile 4 und Zeile 5 in der obigen Auge2_1.Visible = False
Prozedur gibst du folgende Zeile ein: Auge3_1.Visible = False
[Link] Zufallszahl(i) Auge4_1.Visible = False
Auge5_1.Visible = False
12. In der Prozedur FORM_LOAD gibst du den
Auge6_1.Visible = False
Aufruf der Prozedur COMPUTER ein:
Auge7_1.Visible = True
Private Sub Form_Load()
End Sub
Randomize
Private Sub Zwei1()
Computer
Auge1_1.Visible = True
End Sub
Auge2_1.Visible = False
Nun werden nach jedem Programmstart im Auge3_1.Visible = False
Direktfenster die drei vom Computer erzeug- Auge4_1.Visible = False
ten Zahlen angezeigt. Mit der [Link]- Auge5_1.Visible = False
Methode kannst du in diesem Fenster jede Auge6_1.Visible = True
Variable anzeigen und damit ganz einfach Auge7_1.Visible = False
überprüfen, welche Werte Variablen haben. End Sub
13. Manchmal ist das Direktfenster unübersicht- Private Sub Drei1()
lich. Für diese Fälle lege ich mir ein Bezeich- Auge1_1.Visible = True
nungsfeld an und lasse die Variable über die Auge2_1.Visible = False
Eigenschaft CAPTION anzeigen. Auge3_1.Visible = False
Auge4_1.Visible = False
14. Hast du dich überzeugt, dass das Programm
Auge5_1.Visible = False
bisher einwandfrei läuft, löscht du die Anwei-
Auge6_1.Visible = True
sung [Link] wieder – den Aufruf
Auge7_1.Visible = True
COMPUTER dagegen lässt du stehen. End Sub
15. Jetzt werden diese Zahlen auf die Würfel- Private Sub Vier1()
anzeige übertragen – hier mit der Methode Auge1_1.Visible = True
SELECT-CASE. Das Prinzip siehst du im Auge2_1.Visible = True
Abschnitt „Kontrollstrukturen“: Auge3_1.Visible = False
Private Sub Anzeige1() Auge4_1.Visible = False
Select Case Zufallszahl(1) Auge5_1.Visible = True
Case 1 Auge6_1.Visible = True
Eins1 Auge7_1.Visible = False
Case 2 End Sub
Zwei1 Private Sub Fünf1()
Case 3
Drei1 Auge1_1.Visible = True
Case 4 Auge2_1.Visible = True
Vier1 Auge3_1.Visible = False
Case 5 Auge4_1.Visible = False
Fünf1 Auge5_1.Visible = True
Case 6 Auge6_1.Visible = True
Sechs1 Auge7_1.Visible = True
End Select End Sub
End Sub
Private Sub Sechs1()

Visual Basic für Einsteiger - 02-09-13


Zweites Programmprojekt 37

Auge1_1.Visible = True In den Prozeduren werden der Variablen die


Auge2_1.Visible = True unterschiedlichen Werte zugewiesen und
Auge3_1.Visible = True danach die Prozedur COMPUTER aufgerufen.
Auge4_1.Visible = True Dort werden die Zufallszahlen erzeugt und
Auge5_1.Visible = True mit den Prozeduren ANZEIGE1, ANZEIGE2
Auge6_1.Visible = True und ANZEIGE3 angezeigt.
Auge7_1.Visible = False
End Sub 23. Bis auf die Auswertung der Eingaben müsste
alles planmäßig funktionieren. Tippfehler in
17. Diese Prozeduren müssen für Anzeige2 und
den Listings werden allerdings nicht als
Anzeige3 wiederholt werden, wie du aus den
Fehler angezeigt, sondern verfälschen nur die
beiden folgenden Prozeduren ersiehst:
Anzeigen. Daher solltest du mehrfach
Private Sub Anzeige2 überprüfen, ob sich keine Tippfehler
Select Case Zufallszahl(2) eingeschlichen haben – mit folgendem Code:
Case1 1 Private Sub Auswertung()
Eins2 2 Static gewonnen As Byte
3 Static verloren As Byte
usw. 4 Static Kapital As Integer
End Select 5 Dim i As Byte
6 For i = 1 To 3
7 If Spieler =
Private Sub Anzeige3 Zufallszahl(i) Then
Select Case Zufallszahl(3) 8 gewonnen = gewonnen + 1
Case1 9 [Link] =
gewonnen
Eins3 10 Kapital = Kapital + 1
usw.... 11 [Link] =
End Select Kapital
12 End If
18. Danach programmierst du die Anzeigen für 13 Next
die Augen der beiden anderen Würfel. 14 If Spieler <>
Zufallszahl(1) And _
19. In der Click-Prozedur wird eine Variable 15 Spieler <> Zufallszahl(2)
SPIELER gebraucht. Diese wollen wir im And _
Allgemeinteil deklarieren, um sie allen 16 Spieler <> Zufallszahl(3)
Prozeduren zugänglich zu machen: Then
Dim Spieler As Byte 17 verloren = verloren + 1
18 [Link] =
20. Nun doppelklickst du auf die verloren
Befehlsschaltfläche CMDEINS und gibst 19 Kapital = Kapital - 1
folgendes ein: 20 [Link] =
Private Sub cmdEins_Click() Kapital
Spieler = 1 21 End If
Computer 22 End Sub
End Sub
Bis zur Zeile 13 bietet der Code nichts Neues.
21. Das wiederholst du für CMDZWEI ...
Innerhalb der Schleife wird geprüft, ob die
Private Sub cmdZwei_Click() Variable Spieler den gleichen Wert wie die
Spieler = 2 Variable Zufallszahl hat.
Computer
End Sub 24. Es war die Absicht, dass dem Spieler bei
22. und so weiter bis CMDSECHS. gleichen Würfelanzeigen mehrfach das
Kapital erhöht wird. Damit er eine größere

Visual Basic für Einsteiger - 02-09-13


38 Zweites Programmprojekt

Chance gegen den Computer hat, sollen die Für welche Variante du dich entscheidest,
Verluste nicht mehrfach zählen: bleibt dir überlassen. Man könnte an dieser
1 For i = 1 To 3 Stelle beispielsweise eine
2 If Spieler = Zufall Auswahlmöglichkeit für Schwierigkeitsgrade
zahl(i) Then einbauen.
3 gewonnen = gewonnen + 1 26 Zeile 14 – 16 in der Prozedur zur
4 [Link] = Auswertung, Seite 37, und Zeile 7 – 9 in der
gewonnen ersten der beiden eben angeführten
5 Kapital = Kapital + 1 Prozeduren zur Schleifenabfrage auf Seite 38
6 [Link] = haben eine Besonderheit. Der Code gehört in
Kapital eine zusammenhängende Zeile. Die Zeile
7 ElseIf Spieler <> Zufalls- wird dadurch ziemlich lang und kann nur
zahl(1) And _ noch über die Bildlaufleisten eingesehen
8 Spieler <> Zufall werden. Visual Basic erkennt den Unterstrich
zahl(2) And _ als Trennzeichen einer Zeile und verbindet
9 Spieler <> Zufalls- intern die Zeilenteile wieder. Wichtig ist ein
zahl(3) Then Leerzeichen vor dem Unterstrich. Wenn du
10 verloren = verloren + 1
die Zeilenteile im Codefenster etwas
11 [Link] =
einrückst, ist besser erkennbar, welche Teile
verloren
zusammen gehören
12 Kapital = Kapital - 1
13 [Link] = 27 Zum Abschluss wird die Spielanleitung
Kapital programmiert. Den Text überlasse ich dir.
14 End If Eine Möglichkeit ist, eine Mitteilungsbox
15 Next anzulegen:
25 In dieser Prozedur wird durch eine andere Private Sub
Programmiertechnik erreicht, dass die cmdSpielregeln_Click()
Nichttreffer mehrfach hochgezählt werden. Dim Titel As String
Die folgende Prozedur zeigt eine andere Dim Meldung As String
Codierweise: Titel = "Spielanleitung"
Meldung = Meldung + "Der
1 For i = 1 To 3
Computer würfelt drei
2 If Spieler = Zufalls-
Zufallszahlen." + Chr$(10) +
zahl(i) Then
Chr$(13)
3 gewonnen = gewonnen + 1
Meldung = Meldung + "Du
4 l [Link] =
kannst gegen den Computer
gewonnen
würfeln, " + Chr$(10) +
5 Kapital = Kapital + 1
Chr$(13)
6 [Link] =
Meldung = Meldung + "usw."
Kapital
MsgBox Meldung, vbOKOnly,
7 ElseIf Spieler <> Zufalls-
Titel
zahl(i) Then
End Sub
8 verloren = verloren + 1
9 [Link] = Größere Gestaltungsmöglichkeiten hast du, wenn
verloren du eine zweite Form verwendest. Dazu musst du
10 Kapital = Kapital - 1 wissen, dass es zwei Möglichkeiten gibt, ein
11 [Link] = Formular zu laden. Über die LOAD-Anweisung
Kapital wird ein Formular nur in den Speicher geladen,
12 End If aber nicht angezeigt – mit der SHOW-Methode
13 Next dagegen wird die Form geladen und angezeigt.

Visual Basic für Einsteiger - 02-09-13


Zweites Programmprojekt 39

Der umgekehrte Weg, nämlich eine Form wieder Zum Abschluss setzen wir noch ein
los zu werden, verwendet analog zwei Mitteilungsfenster ein für den Fall, dass das
Möglichkeiten. Soll eine Form komplett aus dem Kapital weniger als Null, bzw. größer als 25
Arbeitsspeicher entfernt werden, wird sie mit der wird. Der Wert soll nur ein Lob für eine gute
UNLOAD-Anweisung entladen, ansonsten Leistung sein; du kannst selber festlegen, ab
versteckt man sie nur mit der HIDE-Methode. wann gutes Würfeln gelobt werden soll.
Du aktivierst PROJEKT | FORMULAR HINZUFÜGEN Die Abfrage fügst du in unseren Code zur
und wählst ein Formular. Fehlerüberprüfung auf Seite 37 zwischen Zeile 5
Wie du siehst, hat Visual Basic verschiedene und Zeile 6 ein:
Dialog-Formulare in seinem Angebot, die auch If Kapital < 0 Then Alarm
schon mit Code versehen sind. Die solltest du If Kapital > 25 Then Loben
alle einmal ausprobieren. Im Projektfenster ist
Du legst die Prozedur ALARM an:
die neue Form als FORM2 angezeigt. Wenn
Programme klein sind und nur wenige 1. Private Sub Alarm()
Projektteile enthalten, belasse ich es meistens bei 2. Dim Titel As String
den vorgegebenen Namen. Hier könntest du aber 3. Dim Meldung As String
z.B. FRMANLEITUNG als Name eingeben. 4. Dim Schaltfläche As Byte
5. Titel = "ALarm"
Du doppelklickst auf CMDSPIELREGELN und 6. Meldung = "Du bist leider
gibst folgenden Code ein: pleite!"
Private Sub 7. Schaltfläche =
cmdSpielregeln_Click() MsgBox(Meldung, 1 + 16,
[Link] Titel)
End Sub 8. If Schaltfläche = 1 Then
Dann drückst du auf F5 und dann auf 9. End
SPIELREGELN. 10. End If
Die Form FRMANLEITUNG kannst du mit deinen 11. End Sub
Kenntnissen so gestalten, wie du es möchtest. In der Prozedur ALARM wird ein
Entweder setzt du die Print-Methode für den Mitteilungsfenster als Funktion ausgegeben. In
Text ein, oder du legst dir ein Textfeld an, oder Zeile 7 wird der Variablen SCHALTFLÄCHE ein
du verwendest ein Bildfeld oder ... In jedem Fall Wert des Mitteilungsfensters zurückgegeben, der
muss eine Prozedur geschrieben werden, mit der in Zeile 8 abgefragt wird. Wird der Wert 1
das Fenster wieder geschlossen wird. Also zurückgegeben, also die Schaltfläche OK
doppelklickst du auf FRMANLEITUNG, wählst ein angeklickt, soll das Programm beendet werden.
CLICK-Ereignis und gibst folgenden Code ein: Alle anderen Eingaben haben keine Wirkung.
Private Sub Form_Click() Folglich wird bei Abbrechen zum
[Link] Spielprogramm zurückgekehrt.
End Sub
Die Spielanleitung wird nur versteckt. Dadurch
steht sie dem Spieler immer wieder sehr schnell
zur Verfügung. Eine Befehlsschaltfläche mit dem
CLICK-Ereignis ist vielleicht offensichtlicher.
Zumindest solltest du darauf hinweisen, dass die
Form durch einen Klick geschlossen werden
kann, z.B. als CAPTION.
Du wählst DATEI | FORM FRMANLEITUNG
SPEICHERN UNTER ... und gibst als Name
Anleitung ein

Visual Basic für Einsteiger - 02-09-13


40 Zweites Programmprojekt

Nun legst du die Prozedur LOBEN an: In der Schleife, Zeile 4, werden die
1. Private Sub Loben() Hintergrundfarben der Form sowie der Rahmen
2. 'blinken fünfzehn Mal mit den Standardfarben versehen.
3. Dim i As Byte Damit es nicht zu schnell geht, habe ich bei
4. For i = 0 To 15 jedem Schleifendurchlauf eine Verzögerung
5. [Link] = eingebaut:
QBColor(i) 1. Private Sub verz(zeit!)
6. [Link] =
2. Dim zeit1 As Variant
QBColor(i)
7. [Link] = 3. zeit1 = Timer
QBColor(i) 4. Do
8. [Link] = 5. DoEvents
QBColor(i)
9. [Link] = 6. Loop Until (Timer - zeit1
QBColor(i) >zeit)
10. verz 0.1 7. End Sub
11. Next
Danach werden die Farben wieder auf ihren
12. [Link] =
Ursprungswert gesetzt.
&H8000000F
13. [Link] = Die Prozedur VERZ(ZEIT!)ist ziemlich verzwickt,
&H8000000F weswegen ich dir empfehle, sie einfach zu
14. [Link] = übernehmen – dem unbekannten Autor sei
&H8000000F gedankt!
15. [Link] =
&H8000000F
16. [Link] =
&H8000000F
[Link] Sub

Visual Basic für Einsteiger - 02-09-13


Grafik 41

Grafik
Unter Windows muss man sich die gesamte 6. Jetzt erstellst du eine
Bildschirmdarstellung als Grafik vorstellen. BEFEHLSSCHALTFLÄCHE.
Auch Text-Ausgaben sind eine Form von Grafik. 7. Hier setzt du als NAME cmdSchließen ...
Visual Basic bietet grundsätzlich zwei ... und als CAPTION Ende.
Möglichkeiten, Grafik einzusetzen:
8. Du erstellst noch eine Befehlsschaltfläche, ...
1. Grafik-Steuerelemente mit ihren
9. ... setzt als NAME cmdZeichnen ...
Eigenschaften und Methoden aus der
Werkzeugsammlung 10. ... und als CAPTION Zeichnen.
2. GDI-Funktionen (Graphical Device 11. Dann doppelklickst du auf CMDZEICHNEN ...
Interface) Der Code lautet:
Bis auf bestimmte Spezialfälle, wie z.B. Private Sub
Polygone, stehen für die gängige Grafik- cmdZeichnen_Click()
Programmierung genügend Visual Basic- [Link] (100, 100)-
Komponenten zur Verfügung. (500, 500)
End Sub
Grundlagen 12. ... drückst auf F5
Grafikoperationen sind gleichermaßen im 13. ... und endlich auf ZEICHNEN.
Fenster, also in der FORM, auf dem Drucker oder
Nach F5 wird eine Linie von links oben nach
in einem Bildfeld möglich. Für alle drei
rechts unten gezeichnet.
Komponenten gelten gleiche Methoden.
14. Nun doppelklickst du auf CMDSCHLIEßEN, ...
Methoden
15. setzt End,...
Grafikausgaben beziehen sich grundsätzlich auf
ein bestimmtes Objekt, also nicht auf den 16. ... beendest das Programm und vergrößerst
gesamten Bildschirm. So kann eine Ausgabe mit das Bildfeld ...
der Methode PRINT auf einem Drucker erfolgen, 17. ... und drückst wiederum F5
aber auch in einem Bildfeld oder in der Form.
Die Linie befindet sich innerhalb des Bildfeldes
Methoden Beschreibungen an derselben Position.
LINE zeichnet eine Linie oder ein Es taucht die Frage auf, ob die Linie von links
Rechteck oben nach rechts unten oder umgekehrt
CIRCLE zeichnet einen Kreis, eine Ellipse gezeichnet wird – bei der
oder einen Bogen Arbeitsgeschwindigkeit des Computers kann
man nicht erkennen, in welche Richtung
PSET setzt einen Punkt gezeichnet wurde. Dazu benötigen wir einige
POINT ermittelt die Farbe eines Punktes grundlegende Kenntnisse.
PRINT gibt eine Zeichenfolge aus Eigenschaften
CLS löscht den Inhalt des Objektes Schüler kennen ein beliebtes Spiel, das
vornehmlich im langweiligen Unterricht gespielt
1. Du startest Visual Basic, ... wird: »Schiffe versenken«. Verwendet wird ein
2. gibst der FORM den NAMEN frmHaupt ... kariertes Papier – aus guten Gründen meist aus
dem Mathe-Heft.
3. ... und speicherst sie als GRAFIK1
Jedes Kästchen hat durch die Angaben für die
4. Dann ziehst du in der Form ein großes Zeile und die Spalte einen festgelegten Platz. Das
BILDFELD auf, ... 'x' befindet sich in Zeile '4' und Spalte 'd'. Mit der
5. ... und setzt als NAME picGrafik1 Angabe 4/d wird der Ort bestimmt, an dem sich
eindeutig das 'x' befindet.

Visual Basic für Einsteiger - 02-09-13


42 Grafik

als Endpunkt. Zu Übungszwecken kannst du


a b c d e f g h i j
auch andere Zahlen verwenden.
1
Wichtig ist, dass die Linie bei (x1,y1)
2 beginnt und bei (x2,y2) aufhört.
3 Nun klickst du das Steuerelement LINE im
4 x WERKZEUG-Fenster an und legst die neue Linie
irgendwo im Bildfeld ab, indem du den
5 Mauszeiger ins Bildfeld setzt, die linke
6 Maustaste drückst und ziehst.
7 Im EIGENSCHAFTEN-Fenster findest du u.a. die
8 Eigenschaften X1, X2, Y1 und Y2. Daneben
stehen in der Werteliste die entsprechenden
9 Angaben.
10 Klickst du einen Anfasser der Linie an, kannst du
So etwa musst du dir den gesamten Bildschirm, ihre Lage durch Ziehen verändern. Lässt du die
eine FORM oder – wie hier – ein Bildfeld Maustaste los, werden die neuen
eingeteilt vorstellen, mit dem Unterschied, dass Koordinatenwerte angezeigt. Probiere ein
die Einteilungen viel feiner vorgenommen bisschen herum, damit du ein Gefühl dafür
werden können und dass keine Buchstaben bekommst, wie die Lage der Linie im Bildfeld
verwendet werden. beschrieben wird.
Visual Basic verwendet standardmäßig eine Von den wenigen Eigenschaften einer Linie sind
besondere Maßeinheit: Twips. Ein Kästchen ist für uns BORDERCOLOR, BORDERSTYLE und
ein Twip. Der Vorteil dieser Maßeinheit liegt BORDERWIDTH interessant. Damit können die
darin, dass sie systemunabhängig ist, also auch Farbe, die Darstellung und die Stärke der Linie
maßstabsgetreu zeichnet, wenn eine andere eingestellt werden.
Bildschirmauflösung verwendet wird. Das Dazu eine kleine Prozedur:
Koordinatensystem ist standardgemäß aufgebaut, Private Sub Form_Load()
also beginnen die Zeilen und Spalten links oben [Link] = 7000
mit dem Wert 0; 0/0 ist die linke obere Ecke. '[Link] = 7000
In der Mathematik werden solche Koordinaten [Link] = 6000
mit den Buchstaben x und y bezeichnet. Die [Link] = 5200
Koordinaten bewegen sich auf der y-Achse von [Link] = 5200
oben nach unten und auf der x-Achse von links End Sub
nach rechts. Diese Darstellung ist für uns etwas Diese Prozedur hat als Startanweisung die
ungewohnt. Wir kennen z.B. bei grafischen Größendarstellung der Form. Die Höhe der Form
Darstellungen eher den umgekehrten Weg, dass hat einen Wert von 7000 Twips. Mit dem
sich die y-Achse von unten nach oben bewegt. Schlüsselwort ME kann man den Namen eines
Wie alles in Visual Basic lässt sich auch dieses Objektes ersetzen, für das gerade Code
ändern. Dazu später mehr. geschrieben wird – ME bedeutet soviel wie 'ich'
In unserer Prozedur CMDZEICHNEN_CLICK oder 'meine'.
hatten wir folgende Anweisung formuliert: Nun geben wir die Abmessungen des Bildfeldes
[Link] PICGRAFIK1 an. Damit wird sichergestellt, dass
(100,100) – (500,500). sowohl die Form als auch das Bildfeld die
passenden Abmessungen für die folgenden
PICGRAFIK1 ist das Bildfeld, und nach einem
Operationen haben.
Punkt als Trennzeichen wird LINE als Methode
festgelegt. Dann folgen die Zahlenpaare Die Aufgabe ist, bei jedem Klick auf die
(100,100) als Startpunkt und (500,500) ZEICHNEN-Befehlsschaltfläche eine Linie mit
zufälligen Anfangs- und Endpunkten zu

Visual Basic für Einsteiger - 02-09-13


Grafik 43

zeichnen. Dazu werden die Punkte X1, X2, Y1 Farben (RGB-Funktion)


und Y2 zufällig über die RND-Funktion erzeugt Farbe RGB-Wert Rot- Grün Blau-
und dann der Methode LINE als Werte anteil anteil anteil
zugewiesen: Schwarz &H00 0 0 0
1. Private Sub cmdZeichnen_
Blau &HFF0000 0 0 255
Click()
2. Randomize Grün &HFF00 0 255 0
3. Dim x1 As Single, Cyan &HFFFF00 0 255 255
x2 As Single (Türkis)
4. Dim y1 As Single, Rot &HFF 255 0 0
y2 As Single
Magenta &HFF00FF 255 0 255
(Violett)
5. x1 = Int(Rnd * 4000)
6. x2 = Int(Rnd * 4000) Gelb &HFFFF 255 255 0
7. y1 = Int(Rnd * 4000) Weiß &HFFFFFF 255 255 255
8. y2 = Int(Rnd * 4000) Farben (QBColor-Funktion)

9. [Link] Farbe Wert Farbe Wert


(x1, y1)-(x2, y2) SCHWA 0 Grau 8
[Link] Sub RZ
Die Eigenschaft BorderColor, also die Farbe der BLAU 1 Hellgrau 9
Linie, steht uns nur zur Entwicklungszeit zur GRÜN 2 Hellgrün 10
Verfügung, zur Laufzeit wird die Eigenschaft
TÜRKIS 3 HellTürkis 11
FORECOLOR verwendet. Die QBCOLOR-
Funktion beinhaltet nur ein Spektrum von 16 ROT 4 Hellrot 12
Standardfarben, die mit den Werten von 0 – 15 VIOLET 5 Hellviolett 13
beschrieben werden; da sie sich sehr einfach T
einsetzen lässt, wird sie gerne für einfache 6 Gelb 14
BRAUN
Farbgestaltungen verwendet.
WEIß 7 Hellweiß 15
Farbe = QBColor(10) für Hellgrün merkt
man sich eher als Farbe = RGB(255,0,0) Eine Entschuldigung: die Farben der Linien
für Rot. Allerdings kann man mit der QBCOLOR- können ganz einfach erreicht werden, indem man
Funktion nur 16 Farbwerte einstellen, mit der folgenden Code schreibt:
RGB-Funktion dagegen unzählige Abstufungen,
da die drei Farbanteile jeweils einen Wert [Link]
(x1, y1)-(x2, y2),
zwischen 0 und 255 annehmen können. In der
QBColor(Farbe)
Prozedur CMDZEICHNEN_CLICK werden
folgende Befehlszeilen hinzugefügt: Für die Variable Farbe wird die Zahl der
gewünschten Farbe eingesetzt, also z.B.
Dim Farbe as Integer QBColor (10). Mir ging es nur darum, dass
Farbe = Int(Rnd * 15)
die Farbgebung deutlich wird.
[Link] =
QBColor(Farbe)
Damit die Linien dicker aussehen, setzt du noch
folgende Zeile ein:
[Link] = 3
Dadurch wird die Zeichenstärke der Linie
eingestellt. Probiere auch größere Werte aus.

Visual Basic für Einsteiger - 02-09-13


44 Grafik

Die Methode LINE kann noch mehr als nur 11. [Link]
Striche in das Bildfeld zeichnen. Die Anfangs- (x1 + Faktor * i,
und Endkoordinaten bestimmen nicht nur y1 + Faktor * i)- _
Anfang und Ende einer Linie, sondern auch die 12. (x2 + Faktor * i,
gegenüberliegenden Ecken eines Rechtecks y2 + Faktor * i),
RGB(i, 0, 0), B
[Link]
13. Next
(x1, y1)-(x2, y2),
[Link] Sub
QBColor(Farbe), B
Dieser Code erzeugt Rechtecke mit den In einer Schleife werden nacheinander 255
Anfangskoordinaten als linke obere Ecke und Rechtecke gezeichnet. Die Zeilen 11 und 12
den Endkoordinaten als rechte untere Ecke in der gehören hintereinander. Der Startpunkt x1
gewünschten Farbe – das abschließende B ist errechnet sich aus der Variablen x1 mit dem
wichtig, da es das Rechteck aktiviert. Drückst du Wert 100 plus dem Faktor mit dem Wert 7.5 *
auf F5, wird das Ergebnis angezeigt. i . i hat zu Beginn der Schleife den Wert 0,
Der nächste Code erzeugt ein ausgefülltes d.h. der Startpunkt x1 = x1 + 7.5 * 0 =
Rechteck: 107.5. Der Startpunkt für y1 und die
[Link] Endpunkte errechnen sich entsprechend.
(x1, y1)-(x2, y2), Für die Farbe wurde die RGB-Funktion
QBColor(Farbe), BF eingesetzt. Der Farbwert ändert sich bei jedem
Vergiss auch hier nicht die letzten beiden Code- Schleifendurchlauf von RGB(0,0,0) bis
Buchstaben! RGB(254,0,0). So entsteht der Effekt eines
Nun wählst du DATEI | SPEICHERN VON Farbtunnels.
[Link] UNTER ... und gibst als Name Eine andere häufig eingesetzte Methode ist
GRAFIK2ein. CIRCLE. Mit dieser Methode wird ein Kreis, eine
Dann wählst du DATEI | PROJEKT SPEICHERN Ellipse oder auch nur ein Kreisbogen gezeichnet.
UNTER ... und gibst wiederum den Namen Die neuen Kenntnisse über das
GRAFIK2 an Koordinatensystem gelten auch hier.
Schließlich löschst du den Code in CMDZEICH- Du löschst den aktuellen Code und setzt den
NEN_CLICK mit Ausnahme der Variablen- nachfolgenden ein:
deklarationen 1. Private Sub
Lässt du den Computer Berechnungen ausführen, cmdZeichnen_Click()
erzielst du hübsche überraschende Effekte: 2. Dim x1 As Single,
1. Private Sub y1 As Single
cmdZeichnen_Click() 3. Dim Radius As Single
2. Dim i As Integer
3. Dim x1 As Single, 4. x1 = 500: y1 = 500
x2 As Single 5. Radius = 300
4. Dim y1 As Single, 6. [Link] (x1,
y2 As Single y1),
5. Dim Faktor As Integer Radius, QBColor(12)
7. End Sub
6. x1 = 100: x2 = 2000 Dann wählst du DATEI | SPEICHERN VON
7. y1 = 100: y2 = 2000 [Link] UNTER ... mit dem Namen
8. [Link] = 10 GRAFIK3 sowie DATEI | PROJEKT SPEICHERN
9. Faktor = 7.5 UNTER ... mit dem Namen GRAFIK3
Der Einsatz der Methode entspricht dem
10. For i = 0 To 254 Vorgang bei LINE. Allerdings benötigt man nur
den Mittelpunkt des Kreises im
Koordinatensystem und den Radius des Kreises

Visual Basic für Einsteiger - 02-09-13


Grafik 45

in der obigen Prozedur. Für exakte Die CIRCLE-Methode hat verschiedene


mathematische Berechnungen müssten Eingabeparameter, wie z.B. (x1, y1) oder Radius.
Kenntnisse über Bogenmaß und Gradmaß Diese Parameter erwartet Visual Basic in einer
vorhanden sein. Das führt uns hier zu weit. bestimmten Reihenfolge. Zuerst also den
Die Spielereien, die mit der RND-Funktion beim Mittelpunkt, dann den Radius, dann die Farbe.
Thema LINE gemacht wurden, kannst du dir hier Danach erwartet Visual Basic Werte für den
selber programmieren. Startwert eines Kreisbogens, seinen Endwert und
das Verhältnis der Querachse des Kreises zur
Als Eigenschaften kommen im allgemeinen nur Längsachse. Sagst du, dass in einem Kreis alle
FILLCOLOR als Farbe für das Ausfüllen des Achsen gleich lang sind, hast du recht – das ist
Kreises und FILLSTYLE in Frage als Möglichkeit, aber bei einer Ellipse nicht der Fall. Das
verschiedene Hintergrundmuster zu benutzen. Verhältnis von Querachse zur Längsachse nennt
Willst du die Wirkung sehen, benutzt du das man Aspekt.
Werkzeug SHAPE: du ziehst mit der Maus eine
Figur im Bildfeld oder in der Form auf. Im Das Zeichnen der Ellipse ist, wie du in der
EIGENSCHAFTEN-Fenster kannst du der nachfolgenden Prozedur sehen wirst, kein
Eigenschaft verschiedene Werte zuweisen, u.a. Problem. Visual Basic erwartet aber wie gesagt
auch den Wert 3-Kreis. Die Eigenschaft auch den Start- und Endwert für einen
FILLSTYLE lässt dir jede Menge Möglichkeiten. Kreisbogen. Werden bestimmte Parameter nicht
Klicke alle Möglichkeiten an, um die Darstellung angegeben, weil man sie nicht benötigt, genügt
beurteilen zu können. Während der Laufzeit es, keine Angabe zu machen und nur ein Komma
kannst du natürlich auch bestimmte vom einzugeben. Das Komma steht gewissermaßen
Programm vorgegebene FILLSTYLES zuweisen, als Platzhalter für 'kein Wert'. Mit der
so für vertikale Linien [Link] nachfolgenden Prozedur werden drei Ellipsen
= 3 gezeichnet, die unterschiedliche Verhältnisse der
Achsen zueinander haben.
1. Private Sub
cmdZeichnen_Click() 1. Private Sub cmdZeichnen_Click()
2. Dim x1 As Single, 2. Dim x1 As Single,
y1 As Single y1 As Single
3. Dim Radius As Single 3. Dim Radius As Single
4. x1 = 2500: y1 = 2500
4. x1 = 500: y1 = 500 5. Radius = 1000
5. Radius = 300 6. [Link]
(x1, y1),
6. [Link] = Radius,
QBColor(8) QBColor(4), , , 0.5
7. [Link] = 0 7. [Link]
8. [Link] = 3 (x1, y1),
9. [Link] (x1, Radius,
y1), QBColor(5), , , 2
Radius, QBColor(12) 8. [Link]
[Link] Sub (x1, y1), Radius,
QBColor(6), , , 3
Zeile 6 in in dieser Prozedur bestimmt die 9. End Sub
Füllfarbe, Zeile 7 die Darstellung, Zeile 8 die Du löschst den Code, ohne zu speichern, da wir
Stärke der Kreislinie und Zeile 9 zeichnet die nur eine kleine Demonstration erstellt haben.
Figur mit der entsprechenden Linienfarbe. In den erweiterten Versionen von Visual Basic
Du speicherst wie üblich alles unter GRAFIK4 gibt es ein Steuerelement, mit dem man Daten
und löschst den Code in der Prozedur grafisch darstellen kann, z.B. als Säule oder als
CMDZEICHEN_CLICK. sogenannte Tortendiagamm. So ein
Tortendiagramm wollen wir jetzt selber

Visual Basic für Einsteiger - 02-09-13


46 Grafik

herstellen. Dazu benötigen wir Der nächste Schritt auf dem Weg zum
mathematischeVorkenntnisse. Ich hatte schon Kuchendiagramm ist sehr einfach. Die Methode
erwähnt, dass zwei unterschiedliche Maßangaben CIRCLE fügt eine Linie vom Start- bzw.
für einen Kreisbogen vorhanden sind: das Endpunkt des Kreisbogens zum Mittelpunkt ein,
Gradmaß – ein Vollkreis hat 360°, ein Rechter wenn die Werte negativ sind. Also setzt du ein
Winkel 90° – und das Bogenmaß. Wir messen Minus vor die 0 und vor 67.
normalerweise Winkel in Grad, also benötigen Enttäuscht? Nun ja – offensichtlich gibt es für
wir ein Formel, die den Computer zwingt, so zu Visual Basic kein minus 0. Das Problem
rechnen, wie wir das wollen. bekommst du mit hinreichender Genauigkeit
Ohne in Einzelheiten zu gehen, nur so viel: die gelöst, wenn du anstatt 0 den Wert 0.000001
Kreiszahl π (Pi) hat einen abgerundeten Wert einsetzt. Das millionstel Grad ist nicht
von 3,14159. 1° hat also den Wert π/180. Wollen bemerkbar, der Computer wird aber überlistet –
wir einen Kreisbogen berechnen, der einen denn die Zahl
Winkel von 45° umschließt, muss der Computer –0.000001 gibt es natürlich.
45 * (π / 180) berechnen. Füge noch folgende Zeilen in den Code ein:
Berücksichtigt werden muss [Link] = 0 '(das
noch, wie der Computer die ist der Wert für 'ausgefüllt')
Winkelangaben sieht. Wo [Link] =
liegt für ihn 0°? Stelle dir dazu QBColor(5)
das Ziffernblatt einer Uhr vor. Das Tortenstück ist fertig, das Prinzip bekannt.
Bei 3-Uhr liegt 0°, und es Wenn man jetzt bedenkt, dass ein Kreis 360° hat,
wird gegen den Uhrzeigersinn weitergezählt, so kann man natürlich jeden Anteil des Kreises
dass oben 90°, bei 9 Uhr 180° und bei 6 Uhr berechnen und zeichnen lassen. Nehmen wir an,
270° [Link] wir einen Kreisbogen von 0° dass wir drei Werte haben, nämlich 67, 53, 90,
bis 67° zeichnen, heißt die Anweisung also: die anteilmäßig als Tortenstücke dargestellt
[Link] (x1, y1), werden sollen.
Radius, QBColor(15), 1. [Link] = 0
0 * (3.14159 / 180), 2. [Link] =
67 * (3.14159 / 180) QBColor(5)
Du löschst den Code in CMDZEICHEN_CLICK bis 3. [Link] (x1, y1),
auf die Dim-Zeilen und gibst diese Zeile ein. Radius, QBColor(15),
Wir legen eine Variable bogen an, die uns den -0.00001 * bogen,
jeweiligen Wert berechnet – sie steht in Zeile 5 -67 * bogen
der nachfolgenden Prozedur. Es muss also nur 4. [Link] =
die gewählte Gradzahl mit dem Faktor BOGEN QBColor(4)
multipliziert werden: 5. [Link] (x1, y1),
Radius, QBColor(15),
1. Private Sub cmdZeichnen_Click()
-67 * bogen, -120 * bogen
2. Dim x1 As Single,
6. [Link] =
y1 As Single
QBColor(3)
3. Dim Radius As Single
7. [Link] (x1, y1),
4. Dim bogen As Single
Radius, QBColor(15),
5. bogen = 3.14159 / 180
-120 * bogen, -210 * bogen
6. x1 = 3000: y1 = 3000
7. Radius = 1500 Verwendest du diese Prozedur, bekommst du
8. [Link] zwar schöne Tortenstückchen – aber die richtige
(x1, y1), Radius, _ Lösung ist das noch nicht. Um zu einer passablen
9. QBColor(15), 0 * bogen, Lösung zu kommen, müssen wir einige
67 * bogen Vorüberlegungen anstellen.
[Link] Sub

Visual Basic für Einsteiger - 02-09-13


Grafik 47

1. Private Sub cmdZeichnen_Click()


2. Dim x1 As Single, y1 As Single
3. Dim Radius As Single
4. Dim Bogen As Single
5. Dim a As Single, b As Single, c As Single
6. Dim ges As Single
7. Dim ProzAntA As Single, ProzAntB As Single, ProzAntC As Single
8. Dim WinA As Single, WinB As Single, WinC As Single
9. a = 67: b = 53: c = 90
[Link] = a + b + c
[Link] = a * 100 / ges
[Link] = b * 100 / ges
[Link] = c * 100 / ges
[Link] = 360 * ProzAntA / 100
[Link] = 360 * ProzAntB / 100
[Link] = 360 * ProzAntC / 100
[Link] = 3.14159 / 180
18.x1 = 3000: y1 = 3000
[Link] = 1500
[Link] = 0
[Link] = QBColor(5)
[Link] (x1, y1), Radius, QBColor(15), -0.00001 *
Bogen, -WinA * Bogen
[Link] = QBColor(4)
[Link] (x1, y1), Radius, QBColor(15), -WinA * Bogen,
-(WinA + WinB) * Bogen
[Link] = QBColor(3)
[Link] (x1, y1), Radius, QBColor(15), -(WinA + WinB)
* Bogen, -(360) * Bogen
[Link] Sub
Jeder Wert ist ein prozentualer Anteil der Damit das nächste Stück an das bestehende
Gesamtsumme. Also berechnen wir die anschließt, dürfen wir natürlich nicht wieder 0
Gesamtsumme und speichern sie in der als Startwert nehmen, sondern den Endwert des
Variablen GES in der Zeile 10 der obigen bestehenden Kreisbogens (Zeile 24). Der neue
Prozedur. Dann werden die jeweiligen Endwert errechnet sich aus dem Kreisbogen,
prozentualen Anteile der Werte an der bzw. Winkel a+b. In Zeile 26 werden die
Gesamtsumme berechnet und gespeichert (Zeilen Werte für das letzte Stück eingesetzt; der
11–13). Jetzt brauchen wir noch die Winkel für Endwert ist logischerweise 360.
die Werte. Hier müssen wir davon ausgehen, Kleine Ungenauigkeiten nehmen wir in Kauf –
dass die Bezugsgröße der Vollkreis mit 360° ist. wer es genauer haben will, muss mit
In Zeilen 14–16 werden die Berechnungen Winkelfunktionen arbeiten. Wer es ganz
vorgenommen. professionell haben will, gibt Geld aus und
Es wird spannend (Zeile 22). Der errechnete beschafft sich ein Steuerelement für Diagramme.
Winkel soll von 0 bis zu seinem Wert WinA Der nächste Schritt besteht darin, eigene Werte
gehen. Mit den Minuszeichen bekommen wir in Textfelder einzugeben. Wir löschen den Code
bekanntlich die Radien. in der Prozedur FORM_LOAD und gestalten die
Wir drücken ganz nach alter Gewohnheit F5. Größe der Form und des Bildfeldes mit eigenen
Hast du alles sauber programmiert, müsste jetzt Werten. Das Bildfeld sollte etwa eine Höhe und
ein Tortenstückchen zu sehen sein, das dem Wert Breite von 4000 Twips haben, die Form etwa
von 67° im Vollkreis entspricht. 5800 in Höhe und Breite.

Visual Basic für Einsteiger - 02-09-13


48 Grafik

Nun wollen wir drei Textfelder einrichten. Private Sub


txtZahl1_KeyPress(KeyAscii As
drei Textfelder
Integer)
TABINDEX 0, 1, 2 If KeyAscii = 13 Then
TEXT = "" SendKeys "{TAB}"
NAME txtZahl1, txtZahl2, End If
txtZahl3
End Sub
1. Im Allgemeinteil deklarieren wir die
Variablen a, b und c als Single, damit sie in Damit wird geprüft, ob die Eingabetaste
jeder Prozedur des Projekts gelten. (KeyAscii = 13) gedrückt wurde. Wenn
ja, wird der Befehl SENDKEYS verwendet, der
2. Nun löschen wir die Variablendeklaration für in diesem Fall das gleiche bewirkt wie die
a, b und c in der Prozedur CMDZEICHNEN_ TAB-Taste –SENDKEYS bedeutet 'Sende die
CLICK ... Taste', es also wird der Tastendruck simuliert,
3. dann die Zeile 9 der obigen Prozedur mit der in den geschweiften Klammern steht, etwa
den Werten für a, b und c ... {F5} oder {Esc}.
4. und tragen schließlich folgenden Code in Fehlen auf deiner Tastatur die Zeichen für die
die Prozedur ein: geschweiften Klammern, erzeugst du sie mit
x1 = [Link] / 2: y1 ALT + 0123 für '{' und ALT + 0125 für '}'; du
= [Link] / 2 musst den Zahlenblock benutzen!
Die Werte für x1 und y1 ergeben sich aus 7. Damit man weiß, welche Farbe zu welchem
der Hälfte der Breite und Höhe des Wert gehört, werden die Eigenschaften wie in
Bildfeldes; damit ist der Mittelpunkt des der folgenden Prozedur gesetzt:
Kreises genau in der Mitte. 8 Private Sub Form_Load()
5. In der Prozedur txtZahl1_Change, die so 9 [Link] =
aussieht: QBColor(5)
10 [Link] =
Private Sub txtZahl1_Change()
QBColor(15)
a = Val([Link])
11 [Link] = 12
End Sub
12 [Link] =
wird der Wert für die Variable a eingegeben.
QBColor(4)
Da Visual Basic alle Eingaben in ein Textfeld 13 [Link] =
als Zeichenketten oder STRINGS betrachtet, QBColor(15)
muss der Wert mit der VAL-Funktion in einen 14 [Link] = 12
Zahlenwert umgewandelt werden, denn mit 15 [Link] =
einer Zeichenkette können wir nicht weiter QBColor(3)
rechnen. 16 [Link] =
Über die Maus oder TAB werden die QBColor(15)
Textfelder angesteuert; deswegen sind die 17 [Link] = 12
Tabindices in der entsprechenden Reihenfolge 18 End Sub
angelegt worden. Für die anderen beiden Wichtig: Eingabefehler, wie z.B. Buchstaben
Textfelder müssen identische Codes werden nicht abgefangen, ebenso keine
geschrieben werden. Nichts-Eingaben.
6. Damit man die Eingaben auch mit EINGABE 8 Verwende zunächst Zahlenwerte, bei denen
abschließen kann und das nächste Textfeld du kalkulieren kannst, ob alle Berechnungen
angesprungen wird, tragen wir in die einwandfrei ausgeführt werden., z.B. 100,
Prozedur Key Press folgenden Code ein: 100, 100 oder 200, 100, 100.
9 Schließlich drückst du wieder F5.

Visual Basic für Einsteiger - 02-09-13


Grafik 49

Diagramme haben den Zweck, Werte Private Sub cmdSäule_Click()


anschaulich darzustellen. Manchmal erzeugt man [Link]
mit sogenannte Säulendiagrammen den besseren End Sub
Eindruck. Wir wollen dem Anwender die Mit diesem Code wird das Bildfeld gelöscht.
Möglichkeit geben, zwischen einer Säulen- und 8. Dann drückst du ... genau: F5
einer Kreisdarstellung zu wählen.
9. Mit dem nachfolgenden Code wird ein
1. Zunächst speicherst du alles unter GRAFIK5. sogenannter Dummy eingesetzt:
2. Als neuen Namen für das Objekt Private Sub SäulenDiagramm:
CMDZEICHNEN wählst du CMDKREIS ...
[Link]
3. ... und gibst für [Link] "Hier sollen Säulen hin."
Kreisdiagramm an.
End Sub
4. Dann änderst du die Prozedur
10. ... und der übliche Druck auf F5
CMDZEICHNEN_CLICK in PRIVATE SUB
KREISDIGRAMM() mit folgendem Code: Klappt alles, wenn du ein Kreisdiagramm
Private Sub KreisDiagramm() erzeugst und dann auf die Befehlsschaltfläche
Dim x1 As Single, y1 As Single Säulendiagramm klickst?
Dim Radius As Single 11. Du doppelklickst auf cmdSäule, ...
Dim Bogen As Single 12. ... ergänzt den Code wie folgt:
:::
Private Sub cmdSäule_Click()
::: usw.
[Link]
:::
SäulenDiagramm
End Sub
End Sub
5. Der Wert der [Link] ist Grafische 13. ... und drückst wieder einmal F5
Darstellung von Werten
Befehlsschaltfläche Der Code in dieser Prozedur ist ein Dummy.
Dummies kennst du als Puppen, die u.a. bei Auto-
NAME Name cmdSäule
Crash-Tests eingesetzt werden. Mit diesem
CAPTION Beschriftun Säulen- Dummy probierst du aus, ob bis hierher alles
g diagramm klappt.
Es ist auf diese Art einfacher, Programmierfehler
5. Du doppelklickst auf cmdKreis und gibst
einzugrenzen und zu korrigieren.
folgenden Code ein:
Private Sub cmdKreis_Click() Nebenbei: du wirst in Visual Basic-Zeitschriften
oder Lehrbüchern immer wieder lesen, dass jedes
[Link]
Projekt vorher genau skizziert werden soll – und
KreisDiagramm wenn du die Programmbeschreibung liest, denkst
End Sub du, du hast ein Genie vor dir: es ist alles im
In dieser Prozedur wird mit der Methode CLS vorhinein bedacht worden. Niemand weiß vorher
der Inhalt des Bildfeldes gelöscht und dann ganz genau, welche Prozeduren entwickelt,
angewiesen, die Prozedur KREISDIAGRAMM welche Variablen deklariert werden müssen usw.
auszuführen, die unseren Code für das Ein Unsinn ist auch, dem Leser vorzugaukeln,
Zeichnen von Kreisdiagrammen enthält. dass die ausgefeilte Bedienoberfläche zuerst
entwickelt wurde. Der grobe Rahmen muss
6. Endlich drückst du auf F5 stehen, Feinheiten und neue Ideen ergeben sich
Hast du alles richtig gemacht, müsste das unterwegs. Für Testläufe sind Dummies also eine
Programm ablaufen wie vorher. feine Sache.
7. Nun doppelklickst du auf CMDSÄULE und
gibst folgenden Code ein:

Visual Basic für Einsteiger - 02-09-13


50 Grafik

Nun zu unseren Säulen. Der erste Vorschlag ist, Wir müssen einen kleinen Exkurs über 'virtuelle
einfach die Line-Methode mit dem Parameter B, Koordinatensysteme' einlegen. Visual Basic
bzw. BF zu verwenden . ermöglicht mit der Methode SCALE die
1. Private Sub SäulenDiagramm() Einrichtung eigene Koordinatensysteme, wobei
2. [Link] auch andere Maßeinheiten eingesetzt werden
(100, 100)-(500, a), können – so können z.B. anstatt Twips auch cm
QBColor(5), BF verwendet werden. Für uns ist interessant, dass
3. [Link] wir den Koordinatenursprung verlegen können.
(600, 100)-(1000, b), Das Bildfeld hat über die Eigenschaften HEIGHT
QBColor(4), BF und WIDTH eine bestimmte Anzahl von Twips.
4. [Link] Wir können aber auch sagen, dass das Bildfeld
(1100, 100)-(1500, c), z.B. 1000 * 1000 Einheiten messen soll. Das
QBColor(3), BF Bildfeld behält seine Twips, aber virtuell - also
5. End Sub künstlich - können wir so tun, als gingen uns die
Die Prozedur ist selbsterklärend, hat aber Twips nichts an. Wir können alle Methoden und
eindeutig große Nachteile. Zunächst einmal Operationen auf der Grundlage 1000 * 1000
'hängen' die Säulen – das liegt daran, dass der durchführen. Das ist für Skalierungen sehr
Koordinaten-Nullpunkt in der linken oberen praktisch, weil komplizierte Umrechnungen
Ecke liegt, zum anderen passen die Säulen bei entfallen. Unsere virtuelle Skala oder das
großen Werten nicht mehr in das Bildfeld. Säulendiagramm werden durch Visual Basic vom
künstlichen zum normalen Zustand umgearbeitet.
1. Private Sub SäulenDiagramm()
2. [Link] (0, [Link])-([Link], 0)
3. [Link] = 2
4. [Link] = QBColor(0)
5. 'waagerechte Skala
6. [Link] (250, 250)-([Link] - 500, 250)
7. 'senkrechte Skala
8. [Link] (250, 250)-(250, [Link] - 500)
9. 'Säule a
10. [Link] (300, 250)-(800, a+250), QBColor(5), BF
11. 'Säule b
12. [Link] (850, 250)-(1350, b+250), QBColor(4), BF
13. 'Säule c
14. [Link] (1400, 250)-(1850, c+250), QBColor(3), BF
15. End Sub
Für unseren Zweck legen wir die Null-Punkte Variablen a, b und c gezeichnet, wobei zu den
der Koordinaten mit der Befehlszeile 2 in der Werten der Abstand der unteren Skala zum
obigen Prozedur in die linke untere Ecke und Bildfeldrand addiert werden muss.. Die
geben ein virtuelles Koordinatensystem von Koordinaten sind so abgemessen, dass sie nicht
[Link] * [Link] an den Rändern liegen. Welche Abstände man
vor, also die Höhe und Breite des Bildfeldes. zwischen den Säulen vornimmt, bzw. welche
Später werden wir eine andere Skalierung Breite die Säulen haben sollen, ist
ausprobieren. Geschmackssache. Soll die Skala noch eine
Der Code löst unser Problem zunächst einmal. Einteilung und Beschriftungen bekommen,
Mit seiner Hilfe wird gewissermaßen die müssen die Abstände größer als hier sein.
y-Achse in ihrer Richtung umgekehrt. Verwende erst einmal die angegebenen Werte
und probiere eigene Einstellungen.
Zu einem Säulendiagramm gehört eine Skala.
Zeile 6 und Zeile 8 zeichnen die Linien. Dann Du kannst jetzt zwischen dem Kreis- und dem
werden Rechtecke mit den Werten für die Säulendiagramm hin- und herschalten, neue

Visual Basic für Einsteiger - 02-09-13


Grafik 51

Werte eingeben, auch während der Laufzeit die 5. DateiNr = FreeFile


Werte verändern usw. 6. Open DateiName For Output
As DateiNr
Damit die leidige Fehlermeldung und damit der
7. Print #DateiNr, a, b, c
Programmabbruch bei leeren Textfeldern
8. Close
vermieden wird, setzen wir in die Prozeduren
9. End Sub
SÄULENDIAGRAMM und KREISDIAGRAMM
folgende Zeile ein: 1. Private Sub
On Error Resume Next cmdÖffnen_Click()
Das bedeutet etwa: bei einem Fehler einfach 2. Dim DateiNr As Integer
weitermachen. Dieses Anweisung ist
gleichermaßen praktisch wie gefährlich, denn 3. Dim DateiName As String
damit wird natürlich die Fehlersuche, das 4. Dim Temp As String
sogenannte DEBUGGING, sehr erschwert. Für 5. DateiNr = FreeFile
einfache, überschaubare Programme kann man
6. DateiName =
die Anweisung allerdings bedenkenlos
"C:\Coden\[Link]"
verwenden.
7. Open DateiName For Input
Nun speicherst du alles unter GRAFIK6.
As DateiNr
Zum Abschluss sollen noch Prozeduren für das 8. Input #DateiNr, a, b, c
Speichern und Laden der Werte eingefügt
werden. Die Bedeutung der einzelnen 9. [Link] = a
Anweisungen sind im Abschnitt Dateiverwaltung 10. [Link] = b
beschrieben – wir wiederholen die beiden 11. [Link] = c
Prozeduren noch einmal:
12. Close
1. Private Sub
cmdSpeichern_Click() [Link] Sub
2. Dim DateiNr As Integer • Denke bei der Variablen DateiName daran,
3. Dim DateiName As String deinen eigenen Pfad zu verwenden.
4. DateiName =
"C:\Coden\[Link]"
Die beiden Diagramme haben folgendes Aussehen:

Visual Basic für Einsteiger - 02-09-13


52 Simulationen

Simulationen
Computer sind durch ihre WASSERFLÖHE = 1000
Rechengeschwindigkeit vorzüglich in der Lage,
komplizierte Zusammenhänge schnell und VERMEHRUNGSRATE = 0, 3
übersichtlich darzustellen. Daher werden sie ja STERBERATE = 0, 2
auch für sogenannte Hochrechnungen verwendet. ABFALLPRODUKTE = 0 (zu Beginn des
Du kennst das sicherlich aus den Systems sind ja noch
Wahlberichterstattungen – aus wenigen keine vorhanden)
ausgewählten Daten wird auf das Endergebnis
hochgerechnet – und zwar mit erstaunlicher VERGIFTUNGSFAKTOR = 0,00005
Genauigkeit. VERGIFTUNGSRATE = 0, 05
Epidemie im Aquarium
Mathematisch ausgedrückt müssen
Im folgenden Programm soll der Computer die Gleichungssysteme programmiert werden. Für
Lebensqualität in einem Aquarium untersuchen. Mathematiker: die Grundlage sind
Angenommen, in einem Aquarium leben 1000 Differentialgleichungen.
Wasserflöhe. Diese Tiere vermehren sich mit 1. Sterberate = Sterberate +
einer bestimmten Vermehrungsrate, die aus der Vergiftungsfaktor *
Biologie bekannt ist. Der Nachwuchs vermehrt Abfallprodukte
sich, dessen Nachwuchs vermehrt sich usw. 2. Wasserflöhe = Wasserflöhe +
Ältere Tiere sterben. Auch die Lebenserwartung (Vermehrungsrate - Sterberate)
ist bekannt, man weiß, wie alt Wasserflöhe * Wasserflöhe
werden.
3. Abfallprodukte =
Nun kann man sich denken, dass die Wasserflöhe Abfallprodukte +
Abfallprodukte erzeugen, die das System Vergiftungsrate * Wasserflöhe
Aquarium belasten. Der Lebensraum wird also
zusehends vergiftet. Die Gleichungen müssen in dieser Reihenfolge
geschrieben werden, weil die errechneten Werte
Wie wirkt sich dieser Sachverhalt auf den
in der nächsten Gleichung eingesetzt werden.
Lebensraum aus und wie auf die
Lebewesenanzahl? Code
Der Computer soll in einer Tabelle die 1. In der FORM gibst du etwa 6300 * 6300
Entwicklung darstellen. Twips ein und als CAPTION Wasserflöhe.
Grundannahmen 2. Dann erstellst du eine BEFEHLSSCHALT-
FLÄCHE:
Es müssen einige Grundannahmen gemacht
werden. Wir unterstellen eine Vermehrungsrate NAME Name cmdStart
von 0, 3 Punkten und eine Sterberate von 0, 2. CAPTION Beschriftung &Start
Diese Werte haben sich in der Biologie als
annähernd realistisch herausgestellt. Im übrigen 3. Du deklarierst die Variablen im Allgemeinteil
geht es um das Prinzip, nicht um neue des nachfolgenden Code:
wissenschaftliche Erkenntnisse. Als
1 Option Explicit
Vergiftungsrate nehmen wir 0, 05 an; dadurch
2 Dim Wasserflöhe As Single
wird der Vergiftungsfaktor 0, 00005 ( das hängt
3 Dim Vermehrungsrate As
von der Wasserqualität ab).
Single
Die Gleichungen habe ich aus Biologiebüchern 4 Dim Sterberate As Single
übernommen und computergerecht umgesetzt. 5 Dim Abfallprodukte As Single
Es gibt also folgende Variablen: 6 Dim Vergiftungsfaktor As
Single

Visual Basic für Einsteiger - 02-09-13


Simulationen 53

7 Dim Vergiftungsrate As 4 Sterberate = 0.2


Single 5 Abfallprodukte = 0
8 Dim Generationen as Integer
6 Vergiftungsfaktor = 0.00005
4. In der Prozedur FORM_LOAD weist du den
Variablen die nachfolgenden Werte zu: 7 Vergiftungsrate = 0.05
1 Private Sub Form_Load() 8 End Sub
2 Wasserflöhe = 1000
3 Vermehrungsrate = 0.3
5. Dann doppelklickst du auf Start und setzt folgenden Code ein:
1 Private Sub cmdStart_Click()
2 Print "Generationen", "Anzahl der", "Sterberate",
"Abfallprodukte"
3 Print , "Wasserflöhe"
4 Print Generationen, Wasserflöhe, Sterberate, Abfallprodukte
5 Do While Int(Wasserflöhe) > 0
6 Generationen = Generationen + 1
7 Sterberate = Sterberate + Vergiftungsfaktor * Abfallprodukte
8 Wasserflöhe = Wasserflöhe + (Vermehrungsrate - Sterberate) *
Wasserflöhe
9 Abfallprodukte = Abfallprodukte + Vergiftungsrate *
Wasserflöhe
10 Print Generationen, Int(Wasserflöhe), Int(10 * Sterberate) /
10, Int(Abfallprodukte)
11 Loop
12 End Sub
6. In einer sehr unprofessionellen Form werden 9. Die Zeilen 7–9 sind die Berechnungsformeln,
die Werte durch die PRINT-Methode einfach die du nicht unbedingt verstehen musst.
auf der Form dargestellt. Das hat aber den 10. In Zeile 10 werden die errechneten Werte auf
Vorteil, dass man erst einmal sehen kann, ob die Form geschrieben, wobei du die
die Berechnungen stimmen. Anweisung
7. Zeile 2 und 3 sind für die Titel der Listen da. Int(10 * Sterberate) / 10
In Zeile 3 musst du darauf achten, dass das beachten solltest. Dadurch wird eine
Komma nicht übersehen wird. Es ist Darstellung der Dezimalzahl auf eine Stelle
gewissermaßen ein Tabulator und schreibt nach dem Komma beschränkt, wobei das Auf-
den Wert Wasserflöhe an die nächste und Abrunden mathematisch einwandfrei
Tabulatorstelle. In Zeile 4 werden die ausgeführt wird.
Startwerte der Variablen geschrieben, weil in Int(100 * Sterberate) / 100
der Schleife schon die nächste Berechnung ergibt eine zweistellige Dezimalzahl.
erfolgt.
11. Nun drückst du auf F5 ...
8. Zwischen Zeilen 5 und 11 wird eine Schleife
so lange wiederholt, wie der Wert der 12. ... und klickst auf CMDSTART.
Variablen Wasserflöhe größer als Null ist.
Dabei wird die Zahl der Generationen in Zeile
6 hochgezählt.

Visual Basic für Einsteiger - 02-09-13


54 Simulationen

Die Form sollte die folgenden Zahlenreihen Interpretation


aufweisen: Zunächst vermehren sich die Wasserflöhe, die
Sterberate bleibt annähernd gleich, aber die
Abfallprodukte nehmen zu. In der 10. Generation
kippt das System bis hin zum totalen
Zusammenbruch in der 24. Generation.
Du setzt den Wert der Variablen VERGIFTUNGS-
FAKTOR auf 0.00002. und drückst auf F5
Damit hast du die Lebensqualität der
Wasserflöhe verbessert; es könnte die
Wasserqualität sein, aber auch das Futter.
Immerhin bricht das System erst in der 32.
Generation zusammen.
Viel aussagekräftiger als diese Zahlenreihen sind
grafische Darstellungen. Dafür reicht leider der
Platz nicht.

Visual Basic für Einsteiger - 02-09-13


Anhang 55

Anhang 6. Dann drückst au auf F5...


7. ... gibst den Text ein und siehst UMWANDELN.
Suffixe für Steuerelemente
Empfehlungen für Namen (Steuerelemente)
cmd Befehlsschaltfläche
(Command)
frm Form
pic Bildfeld (Picture)
lbl Bezeichnungsfeld (Label)
fra Rahmenfeld (Frame)
txt Textfeld (Textbox)
shp Figurenelement (Shape)

Text mit Zeichenketten-Funktionen Du kannst dir das Programm für deine


umkehren Anwendungen abkupfern. Es geht hier nicht
1. Du erstellst die Befehlsschaltfläche darum, dass es bessere Lösungen gibt, sondern
CMDENDE, ... um die Zeichenkettenverarbeitung.
2. ... dann die Befehlsschaltfläche Funktion
CMDUMWANDELN. Die Formel für die Berechnung der
3. Dann folgt das Textfeld TXTEINGABE ... Mehrwertsteuer ist bei einem MWS-Satz von
4. ... und das Textfeld TXTAUSGABE. 16%
Steuer = Betrag * 16 / 100
Der Code lautet:
Du legst die Bezeichnungsfelder wie im Bild an.
I. Umwandeln Option Explicit
II. Private Sub
cmdEnde_Click()
III. End
IV. End Sub

V. Private Sub
cmdUmwandeln_Click()
VI. Dim ursprung As String
VII. Dim temp As String
VIII. Dim i As Integer
IX. ursprung =
[Link]
X. temp = ursprung
XI. For i = 1 To Die Namen sind: LBLBETRAG, LBLMWS,
Len(ursprung) LBLGESAMTBETRAG
XII. Mid$(ursprung, i, 1) =
Mid$ _ Dann erstellst du die Befehlsschaltfläche
CMDENDE
(temp, (Len(temp) - i) + 1,
1)
XIII. Next i
XIV. [Link] =
ursprung
5. End Sub

Visual Basic für Einsteiger - 02-09-13


56 Anhang

Der Code lautet: Der Code lautet:


Option Explicit 1. Private Sub
Dim Steuer As Currency cmdUmkehren_Click()
2. Dim Text As String
3. Text = [Link]
Private Sub Form_Load() 4. Rückwärts (Text)
Dim Betrag As Currency 5. [Link] =
Betrag=InputBox("Betrag ein- Rückwärts(Text)
geben", "Mehrwertsteuer- 6. End Sub
Berechnung")
MehrwertSteuer (Betrag)
[Link] = Betrag &
" DM "
[Link] = Steuer &
" DM "
[Link] =
Betrag
+ Steuer & " DM "
End Sub In Zeile 3 wird der Inhalt des EINGABE-
Textfensters in der Variablen TEXT abgelegt.
Dann wird die Funktion aufgerufen und dabei die
Private Function Variable als Wert übergeben. In der
MehrwertSteuer(Betrag) As Currency
nachfolgenden wird die Variable in der For-
Steuer = Betrag * 16 / 100 Next-Schleife, Zeilen 4 - 6 verarbeitet, indem sie
End Function von hinten nach vorn eingelesen wird. Die
einzelnen Zeichen werden in einer Hilfsvariablen
Private Sub cmdEnde_Click()
Temp gespeichert, deren Wert als
Funktionsergebnis zurückgegeben und im
End Ausgabefenster angezeigt wird.
End Sub 1. Private Function
Zeichenkette umkehren mit Funktion Rückwärts(a) As String
• Textfeld txtEingabe 2. Dim i As Integer
3. Dim Temp As String
• Textfeld txtAusgabe 4. For i = Len(a) To 1 Step-1
• Befehlsschaltfläche cmdUmkehren 5. Temp = Temp + Mid(a, i,
1)
• Befehlsschaltfläche cmdEnde 6. Next
• Bezeichnungsfelder 7. Rückwärts = Temp
8. End Function
• [Link] = True (damit kann
auch durch EINGABE 'umgekehrt' werden.

Visual Basic für Einsteiger - 02-09-13


Anhang 57

Eingabe-Dialogfeld (Input-Box) In diesem Listing werden die Variablen


Für einfache Eingaben in Programme stellt deklariert und mit Werten belegt. Dann wird der
Visual Basic ein Eingabe-Dialogfeld zur Variablen Bewertung das Ergebnis der Input-
Verfügung. Die Input-Box zeigt ein Fenster mit Box-Funktion übergeben und in einer
einer Eingabeaufforderung an und erwartet in SELECT/CASE-Anweisung überprüft. Das
einem Textfeld eine Eingabe. Der Text, es kann Ergebnis der Auswertung wird in einem
auch eine Zahl sein, wird an das Programm Anzeigefeld als CAPTION angezeigt.
zurückgegeben und ausgewertet. Fehler werden in diesem Beispiel nicht
Ich verwende die Input-Box fast ausschließlich abgefangen. Solltest du also Buchstaben
für das schnelle testen von Eingaben, bevor ich eingeben, steigt das Programm mit einer
eine andere Methode programmiere. Fehlermeldung aus, denn die Variable
Bewertung wurde als Integer deklariert.
1. Private Sub Form_Load()
2. Dim Frage As String, Titel As Willst du Texteingaben überprüfen, z.B. Namen,
String musst du das Programm nur etwas umschreiben. So
könntest du dir einen kleinen Schutzcode für ein
3. Dim Vorgabe As Integer
Programm schreiben, der erst nach der Eingabe eines
4. Dim Bewertung As Integer
richtigen Codewortes den Start des Programms
5. Frage = "Wie alt bist du?" ermöglicht.
6. Titel = "Altersabfrage"
7. Vorgabe = 100
8. Bewertung = InputBox(Frage,
Titel, Vorgabe, 200, 200)
9. Select Case Bewertung
10. Case Is < 20
11. [Link] =
"Ganz schön jung!"
12. Case 21 To 29
13. [Link] = "Du
bist ein Zwanziger" Case 30
To 39
14. [Link] = "Du
bist ein Dreissiger"
15. Case Is > 40
16. [Link] =
"Ganz schön alt!"
[Link] Select
[Link] Sub

Visual Basic für Einsteiger - 02-09-13


58 Stichwort

-, 40 If/Then-Struktur, 29 Term, 27
Anfasser, 7 Index, 35 Tools, 8
Anweisung, 10; 13 Int, 20 Tooltip, 7
Apostroph, 25 Ja/Nein-Entscheidung, 29 true, 12
Array, 35 Kaufmännisch Und, 35 Twip, 43
Aspekt, 46 Kennung, 18 ungleich, 22
Bedingungsschleife, 31 kleiner als, 22 Unload, 40
Befehle, 10 Kommentarzeichen, 25 Variablendeklaration, 11
Bogenmaß, 47 Konstante, Visual Basic-, 27 Variablenfeld, 35
BorderColor, 43 Koordinatensysteme, 51 Variablentypen, 10
BorderStyle, 33; 43 KreisDiagramm, 50 Version, 5
BorderWidth, 43 Kreiszahl, 47 Visual Basic-Konstante, 27
Byte, 21 Label, 33 Wend, 30
Circle, 42; 45 Laufzeit, 7; 44 Werte, 7
Click-Ereignisse, 27 Line, 42 While-Wend, 30
Cls, 42 Line Input, 32 x-Achse, 43
Code, 7 Load, 39 y-Achse, 43
Const, 11 Load', 14 Zeichenkette, 11; 13
ControlBox, 33 Me, 43 'Zufallsgenerator', 35
[Link], 37 MsgBox, 26 zufall, 20
Debugging, 52 Objekt, 14 Zufallszahl, 35
Dim, 11 Objektliste, 7 Zählschleife, 31
Do-Schleife, 32 objektorientiert, 14
Dummy, 50 Pi, 47
Edition, 5 PictureBox, 16
Eigenschaften, 7 Platzhalter, 10
ElseIf, 29 Point, 42
End If, 29 Print, 40; 42
End Sub, 15 Private, 15
Entwicklungsphase, 7 Program-Listing, 17
Entwicklungszeit, 44 Projektfenster, 6
EOF, 32 Prozedur, 25
Ereignis, 14 Pset, 42
ereignisorientiert, 14 Punkteraster, 9
EXE, 9 Radius, 46
Exit Sub, 28 Rahmenfeld, 33
false, 12 Randomize, 20
Fester Dialog, 33 Rechteck, 45
Figur, 17 RGB, 45
FillColor, 46 Rnd, 20
FillStyle, 46 Scale, 51
Form, 7 Select/Case, 29
Formular, 8 SendKeys, 49
Frame, 33 Shape, 16
FreeFile, 32 Single, 20
GDI-Funktionen, 42 Skalierung, 51
gleich, 22 Sprungmarke, 28
Gradmaß, 47 Standardoperatoren, 12
Grafik-Steuerelemente, 42 String, 11
gruppieren, 17 Sub, 15
größer als, 22 Temp, 32

Visual Basic für Einsteiger - 02-09-13

Das könnte Ihnen auch gefallen