2 Grundlagen
In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrundlagen von Visual Basic in Verbindung mit den gängigen Steuerelementen von Windows-Programmen.
In den folgenden Abschnitten lernen Sie wichtige Elemente der Programmierung, wie Variablen, Operatoren, Verzweigungen und Schleifen, gemeinsam mit wohlbekannten und häufig verwendeten Steuerelementen kennen.
2.1 Variablen und Datentypen

Variablen dienen zur vorübergehenden Speicherung von Daten, die sich zur Laufzeit eines Programms ändern können. Eine Variable besitzt einen eindeutigen Namen, unter dem sie angesprochen werden kann.
2.1.1 Namen und Werte

Für die Namen von Variablen gelten in Visual Basic die folgenden Regeln:
- Sie beginnen mit einem Buchstaben.
- Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzeichen (z. B. dem Unterstrich _ ) bestehen.
- Innerhalb eines Gültigkeitsbereichs darf es keine zwei Variablen mit dem gleichen Namen geben (siehe Abschnitt 2.1.4).
Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen. Falls eine Variable als Erstes auf der rechten Seite des Gleichheitszeichens genutzt wird, dann sollte ihr vorher ein Wert zugewiesen werden. Dadurch werden Programme eindeutiger, lesbarer und fehlerfreier.
2.1.2 Deklarationen

Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der Information bestimmt, die gespeichert werden kann. Sie als Entwickler wählen den Datentyp danach aus, ob Sie Text, Zahlen ohne Nachkommastellen, Zahlen mit Nachkommastellen oder z. B. logische Werte speichern möchten.
Außerdem müssen Sie sich noch Gedanken über die Größe des Bereichs machen, den die Zahl oder der Text annehmen könnte und über die gewünschte Genauigkeit bei Zahlen. Im folgenden Abschnitt 2.1.3 finden Sie eine Liste der Datentypen.
Variablen sollten in Visual Basic immer mit einem Datentyp deklariert werden. Dies beugt Fehlern vor, die aufgrund einer falschen Verwendung der Variablen entstehen könnten.
2.1.3 Datentypen

Die folgende Liste enthält die wichtigsten von Visual Basic unterstützten Datentypen mit ihrem jeweiligen Wertebereich.
- Datentyp Boolean, Werte True oder False (wahr oder falsch)
- Datentyp Byte, ganze Zahlen von 0 bis 255
- Datentyp Char, einzelne Zeichen
- Datentyp Date, Datumsangaben vom 1. Januar des Jahres 1 bis zum
31. Dezember 9999 - Datentyp Double, Gleitkommazahl mit doppelter Genauigkeit, Werte von –1,79769313486231570 mal 10 hoch 308 bis 4,94065645841246544 mal 10 hoch –324 im negativen Bereich und von 4,94065645841246544 mal 10 hoch –324 bis 1,79769313486231570 mal 10 hoch 308 im positiven Bereich
- Datentyp Integer, ganze Zahlen von –2.147.483.648 bis 2.147.483.647
- Datentyp Long, ganze Zahlen von –9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
- Datentyp Object, beliebige Werte
- Datentyp Short, ganze Zahlen von –32768 bis 32767
- Datentyp Single, Gleitkommazahl mit einfacher Genauigkeit; Werte von 3,4028235 mal 10 hoch 38 bis –1,401298 mal 10 hoch –45 im negativen Bereich und 1,401298 mal 10 hoch –45 bis 3,4028235 mal 10 hoch 38 im positiven Bereich
- Datentyp String, Zeichenkette mit variabler Länge
- benutzerdefinierte Struktur, jedes Element hat seinen eigenen Datentyp und damit seinen eigenen Wertebereich
Im folgenden Beispiel werden Variablen der wichtigsten Typen deklariert, mit Werten versehen und in einem Label angezeigt (Projekt Datentypen).
Public Class Form1
Private Sub cmdAnzeige_Click(...) Handles ...
Dim Bo As Boolean
Dim By As Byte
Dim Ch As Char
Dim Dt As Date
Dim Db As Double
Dim It As Integer
Dim Lg As Long
Dim Sh As Short
Dim Sg As Single
Dim St As String
Bo = True
By = 200
Ch = "a"
Dt = "18.12.2012"
Db = 1 / 7
It = 2000000000
Lg = 3000000000
Sh = 30000
Sg = 1 / 7
St = "Zeichenkette"
lblAnzeige.Text =
"Boolean: " & Bo & vbCrLf &
"Byte: " & By & vbCrLf &
"Char: " & Ch & vbCrLf &
"Double: " & Db & vbCrLf &
"Date: " & Dt & vbCrLf &
"Integer: " & It & vbCrLf &
"Long: " & Lg & vbCrLf &
"Short: " & Sh & vbCrLf &
"Single: " & Sg & vbCrLf &
"String: " & St
End Sub
End Class
Listing 2.1 Projekt »Datentypen«
Das Programm hat nach Betätigung des Buttons die Ausgabe wie in Abbildung 2.1 dargestellt.
Abbildung 2.1 Wichtige Datentypen
Zur Erläuterung:
- Variablen werden mit Dim ... As ... deklariert.
- Bei den Zahlen-Datentypen führt eine Über- oder Unterschreitung des Wertebereichs zu einer Fehlermeldung.
- Die Datentypen Single und Double für Zahlen mit Nachkommastellen unterscheiden sich in ihrer Genauigkeit.
- Werte für Zeichen, Zeichenketten und Datumsvariablen müssen in doppelten Anführungszeichen angegeben werden.
Mehrere Variablen des gleichen Typs können, durch Kommata getrennt, in einer Zeile deklariert werden (z. B. Dim x, y As Integer).
Übung
Schreiben Sie ein Programm, in dem Ihr Nachname, Vorname, Ihre Adresse, Ihr Geburtsdatum und Ihr Alter jeweils in Variablen eines geeigneten Datentyps gespeichert und anschließend wie in Abbildung 2.2 ausgegeben werden.
Abbildung 2.2 Übung ÜDatentypen
2.1.4 Gültigkeitsbereich

Variablen, die innerhalb einer Prozedur vereinbart wurden, haben ihre Gültigkeit nur in der Prozedur. Außerhalb der Prozedur sind sowohl Name als auch Wert unbekannt. Solche Variablen bezeichnet man auch als lokale Variablen. Sobald die Prozedur abgearbeitet wurde, steht der Wert auch nicht mehr zur Verfügung. Beim nächsten Aufruf der gleichen Prozedur werden diese Variablen neu deklariert und erhalten neue Werte.
Anders verhält es sich mit statischen Variablen. Diese behalten ihren Wert, solange das Programm läuft. Ein wiederholter Aufruf der gleichen Prozedur kann auf den letzten gespeicherten Wert einer Variablen zugreifen. Eine statische Variable vereinbaren Sie z. B. wie folgt: Static Sx As Integer.
Variablen, die außerhalb von Prozeduren vereinbart werden, sind innerhalb der gesamten Klasse gültig, hier also innerhalb der Klasse des Formulars. Ihr Wert kann in jeder Prozedur gesetzt oder abgerufen werden und bleibt erhalten, solange das Formular im laufenden Programm existiert. Sie können sie auch mit dem Schlüsselwort Private deklarieren: Private Mx As Integer. Weitere Einzelheiten zu klassenweit gültigen Variablen finden Sie in Kapitel 5, »Objektorientierte Programmierung«.
Variablen, die mit dem Schlüsselwort Public vereinbart werden, sind öffentlich. Damit sind sie auch außerhalb der jeweiligen Klasse, also z. B. auch in anderen Formularen, gültig. Mehr dazu in Abschnitt 4.4.
Gibt es in einem Programmabschnitt mehrere Variablen mit dem gleichen Namen, gelten folgende Regeln:
- Lokale Variablen mit gleichem Namen in der gleichen Prozedur sind nicht zulässig.
- Eine klassenweit gültige Variable wird innerhalb einer Prozedur von einer lokalen Variablen mit dem gleichen Namen ausgeblendet.
Im folgenden Beispiel werden Variablen unterschiedlicher Gültigkeitsbereiche deklariert, an verschiedenen Stellen verändert und ausgegeben (Projekt Gültigkeitsbereich).
Public Class Form1
Private Mx As Integer
Private Sub cmdAnzeigen1_Click(...) Handles ...
Static Sx As Integer
Dim x As Integer
Sx = Sx + 1
Mx = Mx + 1
x = x + 1
lblAnzeige.Text = "Sx: " & Sx &
" x: " & x & " Mx: " & Mx
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...
Dim Mx As Integer
Mx = Mx + 1
lblAnzeige.Text = "Mx: " & Mx
End Sub
End Class
Listing 2.2 Projekt »Gültigkeitsbereich«
Zur Erläuterung:
- In der ersten Prozedur wird der Wert der statischen Variablen Sx und der klassenweit gültigen Variablen Mx bei jedem Aufruf erhöht. Die lokale Variable x wird immer wieder auf 1 gesetzt, siehe Abbildung 2.3.
Abbildung 2.3 Lokale, statische und klassenweit gültige Variable
- In der zweiten Prozedur blendet die lokale Variable Mx die gleichnamige klassenweit gültige Variable aus. Die lokale Variable wird immer wieder auf 1 gesetzt, siehe Abbildung 2.4.
Abbildung 2.4 Lokale Variable
Hinweis: Die Variablen wurden vor ihrer ersten Benutzung nicht initialisiert, d. h. sie wurden nicht mit einem Startwert besetzt. In Visual Basic haben Zahlenvariablen zwar automatisch den Startwert 0, trotzdem sollten Sie die Initialisierung im Sinne eines sauberen Programmierstils im Normalfall selber vornehmen.
Übung
Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Variablen eines geeigneten Datentyps eingesetzt werden:
- die klassenweit gültige Variable x
- die Variable y, die nur lokal in der Prozedur zum Click-Ereignis des ersten Buttons gültig ist
- die Variable z, die nur lokal in der Prozedur zum Click-Ereignis des zweiten Buttons gültig ist
In der ersten Prozedur werden x und y jeweils um 0,1 erhöht und angezeigt, siehe Abbildung 2.5.
Abbildung 2.5 Ausgabe der ersten Methode nach einigen Klicks
In der zweiten Prozedur werden x und z jeweils um 0,1 erhöht und angezeigt, siehe Abbildung 2.6.
Abbildung 2.6 Ausgabe der zweiten Methode nach weiteren Klicks
2.1.5 Konstanten

Konstanten sind vordefinierte Werte, die während der Laufzeit nicht verändert werden können. Geben Sie Konstanten im Allgemeinen aussagekräftige Namen, dadurch sind sie leichter zu behalten als die Werte, die sie repräsentieren. Konstanten werden an einer zentralen Stelle definiert und können an verschiedenen Stellen des Programms genutzt werden. Somit müssen Sie eine eventuelle Änderung einer Konstanten zur Entwurfszeit nur an einer Stelle vornehmen. Der Gültigkeitsbereich von Konstanten ist analog zum Gültigkeitsbereich von Variablen.
Zu den Konstanten zählen auch die integrierten Konstanten, wie z. B. vbCrLf. Auch sie repräsentieren Zahlen, die aber nicht so einprägsam sind wie die Namen der Konstanten.
Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt (Projekt Konstanten).
Public Class Form1
Const MaxWert = 75
Const Eintrag = "Picture"
Private Sub cmdKonstanten_Click(...) Handles ...
Const MaxWert = 55
Const MinWert = 5
lblAnzeige.Text = (MaxWert – MinWert) / 2 &
vbCrLf & Eintrag
End Sub
End Class
Listing 2.3 Projekt »Konstanten«
Zur Erläuterung:
- Die Konstanten MaxWert und Eintrag werden mit klassenweiter Gültigkeit festgelegt.
- Innerhalb der Prozedur werden die beiden lokalen Konstanten MaxWert und MinWert festgelegt. MaxWert blendet die Klassen-Konstante gleichen Namens aus, wie man in Abbildung 2.7 sehen kann.
- Außerdem kommt noch die integrierte Konstante vbCrLf zum Einsatz.
Abbildung 2.7 Konstanten
2.1.6 Enumerationen
Enumerationen sind Aufzählungen von Konstanten, die thematisch zusammengehören. Alle Enumerationen haben den gleichen Datentyp, der ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen, am besten explizit.
Innerhalb von Visual Basic gibt es zahlreiche vordefinierte Enumerationen. Ähnlich wie bei den integrierten Konstanten sind die Namen der Enumerationen und deren Elemente besser lesbar als die durch sie repräsentierten Zahlen.
Ein Beispiel: Die Enumeration DialogResult ermöglicht es Ihnen als Programmierer, die zahlreichen möglichen Antworten des Benutzers beim Einsatz von Windows-Standard-Dialogfeldern (Ja, Nein, Abbrechen, Wiederholen, Ignorieren, ...) anschaulich einzusetzen.
Im folgenden Programm wird mit einer eigenen und einer vordefinierten Enumeration gearbeitet (ebenfalls im Projekt Konstanten).
Public Class Form1
[...]
Enum Zahl As Integer
Eins = 1
Zwei = 2
Drei = 3
Vier = 4
End Enum
[...]
Private Sub cmdEnumeration1_Click(...) Handles ...
lblAnzeige.Text = Zahl.Zwei * Zahl.Drei
End Sub
Private Sub cmdEnumeration2_Click(...) Handles ...
lblAnzeige.Text =
"Sonntag: " & FirstDayOfWeek.Sunday &
", Samstag: " & FirstDayOfWeek.Saturday
End Sub
End Class
Listing 2.4 Projekt »Konstanten«, Teil 2
Zur Erläuterung:
- Es wird die Enumeration Zahl vom Datentyp Integer vereinbart. Da es sich um einen Typ handelt und nicht um eine Variable oder Konstante, muss sie außerhalb von Prozeduren vereinbart werden. Damit ist sie automatisch für die gesamte Klasse gültig.
- In der ersten Ereignisprozedur werden zwei Elemente der eigenen Enumeration Zahl verwendet. Die beiden Zahlen, die sie repräsentieren, werden miteinander multipliziert, siehe Abbildung 2.8.
Abbildung 2.8 Erste Enumeration
- In der zweiten Ereignisprozedur werden zwei Elemente der vordefinierten Enumeration FirstDayOfWeek verwendet, siehe Abbildung 2.9. Sie können sie zur Ermittlung des Wochentags eines gegebenen Datums verwenden.
Abbildung 2.9 Zweite Enumeration
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.