Dies ist eine alte Version des Dokuments!


Namenskonventionen

Für Controls gelten Namenskonventionen. Das heißt, der NAME des Controls soll mit einem Kürzel beginnen, das auf den Typ des Controls hinweist. Eine Textbox soll also zB tbMeineTextBox heißen, mit dem Kürzel 'tb' beginnen. Ein Label mit 'lbl' usw.

  • Form - frmName
  • Textbox - tbName
  • Label - lblName
  • Checkbox - cbName
  • DropdownList - ddName
  • ComboBox - cboName
  • Button - pbName oder btnName
  • Bild - imgMeinBild
  • RadioButton - rbName

usw…

Für nicht gelistete Controls können eigene Kürzel verwendet werden. Wichtig ist nur, dass bei gleichen Controls immer das gleiche Kürzel verwendet wird.

Datentypen

TypBeschreibung
Empty Der Variant ist nicht initialisiert. Der Wert ist 0 für numerische Variablen oder ein Leerstring für Stringvariablen.
Null Der Variant enthält keine gültigen Daten.
BooleanEnthält entweder True oder False.
Byte Ganzzahliger Wertebereich von 0 bis 255.
Integer Ganzzahliger Wertebereich von -32.768 bis 32.767.
Currency Wertebereich von -922.337.203.685.477,5808 - 922.337.203.685.477,5807.
Long Ganzzahliger Wertebereich von -2.147.483.648 - 2.147.483.647.
Single Gleitkommazahlen mit einfacher Genauigkeit. Wertebereich von -3,402823E38 bis -1,401298E-45 für negative Werte und von 1,401298E-45 bis 3,402823E38 für positive Werte.
Double Gleitkommazahlen mit doppelter Genauigkeit. Wertebereich von -1,79769313486232E308 bis -4,94065645841247E-324 für negative Werte und von 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte.
Date (Time)Enthält eine Nummer, die ein Datum zwischen dem 1. Jänner 100 und dem 31. Dezember 9999 repräsentiert.
String Enthält Zeichenketten bis zu einer Länge von 2 Milliarden Zeichen.
Object Enthält ein Objekt.
Error Enthält eine Fehlernummer.

Zugriff auf Controls

Ausgabe des Namens in TextBox 'tbName':

 MessageBox.Show( Me.tbName.Text )

Variablen

Variablen werden in VB.NET durch das Dim, Public oder Private-Statement deklariert. Durch das Public- bzw. Private-Statement wird die Sichtbarkeit der Variablen bei Klassendefinitionen spezifiziert.

Variablen sollten zur Gewährleistung der Übersichtlichkeit gleich am Anfang der Prozedur oder Funktion deklariert werden. Benennungsregeln

  • Variablennamen müssen mit einem Buchstaben beginnen
  • Variablennamen dürfen maximal 255 Zeichen lang sein
  • Variablennamen dürfen nur einmal innerhalb ihres Sichtbarkeitsbereiches deklariert werden

Sichtbarkeitsbereiche

Der Sichtbarkeitsbereich einer Variablen ist durch den Ort ihrer Deklaration definiert. Globale Variablen können innerhalb des gesamten Scripts verwendet werden.

Procedure-level Variablen werden innerhalb von Prozeduren bzw. Funktionen deklariert und können auch nur dort verwendet werden. Diese Variablen hören auf zu existieren sobald die Funktion bzw. Prozedur verlassen wird.

Einfache Variablen

Dezimalzahlen

Dim nettoPreis as Decimal
Dim bruttoPreis as Decimal

nettoPreis = 33.22
bruttoPreis = nettoPreis * 1.2

Text

Dim adresse as String

Dim hausnummer as Integer
Dim strasse as String
Dim plz as Integer
Dim ort as String

hausnummer = 10
strasse = "Landstrasse"
plz = 3988
ort = "Roggenstadt"

adresse = "Ihre Adresse: " & strasse & " " & hausnummer & ", in " & plz & " " & ort

Arrayvariablen (Felder)

Arrayvariablen werden wie alle Variablen deklariert, mit dem einzigen Unterschied, daß hinter dem Variablennamen die Elementanzahl in Klammern folgt:

Dim a(10)

In diesem Fall wird eine Arrayvariable mit dem Namen a angelegt, die 11 Elemente enthält. In VB.NET hat das erste Element einer Arrayvariable den Index 0 und der Index des letzten Elements ist jener Wert, der bei der Variablendeklaration in den Klammern angegeben wird.

Elementzuweisungen erfolgen nach folgendem Prinzip:

a(5) = 10

In diesem Beispiel wird also dem sechsten Element der Variable a der Wert 10 zugewiesen.

In VB.NET kann man auch mehrdimensionale Arrays deklarieren, wobei man bis zu 60 Dimensionen angeben kann. Die Deklaration von mehrdimensionalen Arrayvariablen erfolgt wie die Deklaration von einfachen Arrayvariablen, wobei jedoch innerhalb der Klammern die Größe der einzelnen Dimensionen durch Beistriche getrennt angegeben wird. Die Deklaration einer zweidimensionalen Arrayvariable mit 5 Zeilen und 10 Spalten sieht dann wie folgt aus:

Dim b(4, 9)

VB.NET unterstützt auch dynamische Arrays. Das heißt, daß bei der Deklaration einer Arrayvariablen keine Dimension spezifiziert wird. Als einzige Kennzeichnung eines dynamischen Arrays erfolgt hinter dem Variablennamen ein Klammernpaar „()“. Dynamische Arrayvariablen können entweder mittels des Dim- bzw. ReDim-Statements deklariert werden: Dim a() ReDim b()

Die Dimension(en) des Arrays werden dann irgendwo innerhalb des Scripts mittels des ReDim-Statements spezifiziert:

ReDim b(10)

Danach können die Elemente der Arrayvariablen belegt werden. Will man dann die Arrayvariable redimensionieren, so erfolgt das ebenfalls mit dem ReDim-Statement. Es sei jedoch erwähnt, daß dann zwar die Arrayvariable redimensioniert wird, der Inhalt der Elemente aber verloren geht. Um dies zu verhindern dient das Preserve Schlüsselwort:

ReDim Preserve b(15)

In diesem Beispiel wird die Anzahl der Elemente der Arrayvariablen b von 11 Elementen auf 16 Elemente erhöht, wobei der Inhalt der einzelnen Elemente erhalten bleibt. Selbstverständlich kann sowohl die Anzahl der Dimensionen also auch die Größe der einzelnen Dimensionen von Arrayvariablen auch verkleinert werden, wobei dann aber die „abgeschnittenen“ Elemente verloren gehen.

Listen (Generics)

 Dim schuelerListe As New List(Of String)

        '3 Schüler hinzufügen
        schuelerListe.Add("Herbert")
        schuelerListe.Add("Hannah")
        schuelerListe.Add("Pepi")

        'Hannah wieder entfernen
        schuelerListe.Remove("Hannah")

        'Wenn es einen Eintrag 'Huberta' gibt, diesen entfernen
        If schuelerListe.Contains("Huberta") Then
            schuelerListe.Remove("Huberta")
        End If

        'Die Anzahl der Einträge in der Liste ausgeben
        MessageBox.Show("Anzahl Einträge: " & schuelerListe.Count)

        'Die Liste in Listbox anzeigen (einer Listbox zuweisen als Datenquelle)
        Me.lbSchueler.DataSource = schuelerListe
 Dim zahlenListe as New List(Of Integer)

    '3 Zahlen in die Liste speichern
    zahlenListe.Add(43)
    zahlenListe.Add(3)
    zahlenListe.Add(7)
    
    'Die Anzahl der Einträge in der Liste ausgeben
    MessageBox.Show("Anzahl Einträge: " & zahlenListe.Count)
    
    'Zahlen-Liste sortieren (aufsteigend)
    zahlenListe.Sort()
    
    'Die 1. Zahl ausgeben:
    MessageBox.Show("Die erste Zahl lautet: " & zahlenListe(0)
    
    'Die 2. Zahl ausgeben:
    MessageBox.Show("Die erste Zahl lautet: " & zahlenListe(1)

Konstanten

Konstanten können mittels des Const-Statements deklariert werden:

Const MYSTRING = "Hallo" 'Stringkonstante
Const BIRTHDATE = #28-03-78# 'Datumskonstante

Im ersten Fall wird eine Stringkonstante für die Zeichenkette „Hallo“ deklariert, im zweiten Fall eine Datumskonstante für das Datum 28. März 1978. Wie aus dem Beispiel ersichtlich ist, müssen in VB Datums- bzw. Zeitwerte innerhalb von #-Zeichen eingeschlossen sein. Kommentare werden in VBScript durch ein einfaches '-Zeichen spezifiziert und reichen dann bis zum Zeilenende.

Operatoren

In VB steht eine große Anzahl von Operatoren zur Verfügung, wie arithmetische Operatoren, Vergleichsoperatoren, Konkatenationsoperatoren und logische Operatoren.

Durch Klammerung kann die Reihenfolge der Auswertung beeinflusst werden.

Generell kann man sagen, daß arithmetische Operatoren zuerst evaluiert werden, gefolgt von Vergleichsoperatoren. Logische Operatoren werden erst zum Schluß ausgewertet. Vergleichsoperatoren sind von der Auswertungsreihenfolge als gleichwertig zu betrachten, das heißt, der Ausdruck wird einfach von links nach rechts ausgewertet. Bei arithmetischen bzw. logischen Operatoren soll die folgende Tabelle die Auflösungsreihenfolge veranschaulichen, wobei die Operatoren der ersten Zeile zuerst und jene der letzten Zeile zum Schluß ausgewertet werden.

BezeichnungOperator
Gleichheit =
Logische Negation Not
Negative Zahl -
Ungleichheit <>
Logisches Und And
Multiplikation *
Kleiner <
Logisches Oder Or
Division /
Größer >
Exklusives Oder Xor
Ganzzahlige Division (vgl. div) \
Kleiner gleich
Logische Gleichheit Eqv
Modulo Mod
Größer gleich >=
Addition +
Objektgleichheit Is
Subtraktion -
String-Konkatenation &

Falls eine Multiplikation und Division oder eine Addition und Subtraktion in einem Ausdruck gemeinsam vorkommen, so wird dies einfach von links nach rechts ausgewertet.

Der String-Konkatenationsoperator ist eigentlich kein arithmetischer Operator, er wird jedoch nach allen arithmetischen Operatoren und vor den Vergleichsoperatoren ausgewertet.

Der Objektgleichheitsoperator vergleicht ob zwei Objekte identisch sind, es wird also die Objektreferenzgleichheit und nicht die Gleichheit von Attributwerten geprüft.

Kontrollanweisungen

Als Kontrollanweisungen dienen die If- bzw. die Select Case-Anweisung, welche im folgenden erklärt werden.

If-Anweisung

Die einfache If-Anweisung hat folgende Struktur:

If Bedingung Then Eine Anweisung falls Bedingung wahr ist.

Sind mehrere Anweisungen im Then-Block notwendig, so ist die If-Anweisung mit einem End If abzuschließen. Will man jedoch auch Code ausführen, wenn die Auswertung der Bedingung „False“ liefert, so kann man einen Else-Block einfügen. Enthält dieser mehr als eine Anweisung, so ist das gesamte If-Konstrukt wieder mit einem End If abzuschließen.

Sollen weitere Abfragen erfolgen, falls die erste Bedingung nicht zutrifft, so kann man das mittels des ElseIf-Schlüsselwortes realisieren.

Das folgende Beispiel soll dies nun verdeutlichen:

  Sub Test(value)

    Dim a
    If value = 0 Then

        MsgBox value

    ElseIf value = 1 Then

        a=InputBox("Geben Sie eine Zahl für die Variable a ein",1)
        MsgBox a

    Else

        a=InputBox("Geben Sie eine Zahl für die Variable a ein",1)
        MsgBox a
        MsgBox value

    End If

  End Sub

Select Case-Anweisung

Die Select Case-Anweisung entspricht der „Switch“-Anweisung in Java. Die Select Case-Anweisung wertet eine Variable bzw. einen Wert (im Select-Statement) einmal aus und verzweigt dann in den entsprechenden Case-Block.

Die Struktur der Select Case-Anweisung sieht wie folgt aus:

Select Case Variable oder Wert
  Case Möglichkeit 1
    Anweisungen
  Case Möglichkeit 2
    Anweisungen
  ...
  Case Else
    Anweisungen
End Select

Ein konkretes Beispiel sieht dann so aus:

  Sub Ausgabe(value)

    Select Case value

        Case 1

            MsgBox "Wert: 1"

        Case 2

            MsgBox "Hallo"

        Case Else

            MsgBox "Wert von value: "&value

    End Select

  End Sub

Schleifen

VB unterstützt zwei Arten von Schleifen. Bei der ersten Art handelt es sich um Schleifen, die solange ausgeführt werden bis eine Bedingung falsch wird, wobei bei der zweiten Art die Schleifen solange ausgeführt werden bis eine Bedingung wahr wird.

Folgende Konstrukte für Schleifen werden unterstützt:

  • Do … Loop: Führt die Schleife aus solange eine Bedingung wahr ist bzw. bis eine Bedingung wahr wird
  • While … Wend: Führt die Schleife aus solange eine Bedingung wahr ist
  • For … Next: Mit Hilfe einer Zählvariable kann man genau spezifizieren, wie oft die Schleife ausgeführt werden soll
  • For Each … Next: Führt eine Schleife für jedes Element in einer „Collection“ oder in einem Array aus

Diese Konstrukte werden nun genauer erklärt:

Do ... Loop-Schleife

Eine Do … Loop-Schleife wird, wie zuvor erwähnt, solange ausgeführt wie eine Bedingung wahr ist bzw. bis eine Bedingung wahr wird. Somit ist die Anzahl der Schleifendurchläufe vor der Ausführung der Schleife nicht bekannt. Diese beiden Möglichkeiten werden nun erläutert:

Ausführung solange eine Bedingung wahr ist

Mit dem While-Schlüsselwort spezifiziert man, daß die Schleife solange ausgeführt wird, wie die Auswertung der Schleifenbedingung „True“ ergibt. Das While-Schlüsselwort kann am Anfang der Schleife stehen, sodaß die Schleife unter Umständen niemals betreten wird, sowie auch an deren Ende, was zumindest eine einmalige Ausführung der Schleife veranlaßt. Zwei Beispiele sollen das nun verdeutlichen:

Dim index
index = 0
Do While index < 2

    MsgBox index
    index = index + 1

Loop

In diesem Fall wird die Schleife genau 2 mal ausgeführt. Würde vor Beginn der Schleife der Variablen index nicht der Wert 0 sondern der Wert 2 zugewiesen werden, so würde die Schleife niemals betreten.

Dim index
index = 3
Do

    MsgBox index
    index = index + 1

Loop While index < 2

In diesem Fall wird die Schleife einmal ausgeführt, da die Schleifenbedingung erst am Schleifenende abgefragt wird.

Ausführung bis eine Bedingung wahr wird

Mit Hilfe des Until-Schlüsselwortes spezifiziert man, daß eine Schleife solange ausgeführt wird, bis die Auswertung der Schleifenbedingung „True“ ergibt. Das Until-Schlüsselwort kann ebenfalls wieder am Anfang der Schleife bzw. am Ende der Schleife stehen. Es folgen zwei weitere Beispiele:

Dim index
index = 0
Do Until index = 2

    MsgBox index
    index = index + 1

Loop

In diesem Fall wird die Schleife ebenfalls 2 mal ausgeführt.

Dim index
index = 3
Do

    MsgBox index
    index = index + 1

Loop Until index = 4

In diesem Beispiel wird die Schleife einmal ausgeführt, da bei der Überprüfung der Schleifenbedingung die Variable index bereits den Wert 4 hat.

Aussprung aus dem Schleifeninneren

Mittels der Anweisung Exit Do kann aus dem Schleifeninneren eine Schleife verlassen werden. Das folgende Beispiel soll dies demonstrieren:

Dim index
index = 3
Do

    MsgBox index
    If index = 3 Then Exit Do
    index = index + 1

Loop Until index = 4

Hier wird die Schleife nach dem Anzeigen des Dialogfensters schon beim ersten Schleifendurchlauf verlassen.

While ... Wend-Schleife

Die While … Wend-Schleife gehört nur der Vollständigkeit halber zu den VBScript-Sprachkonstrukten. Es gibt aber keinen Unterschied zu einer Do … Loop-Schleife mit Schleifenbedingung am Schleifenanfang bei gleichzeitiger Verwendung des While-Schlüsselwortes.

For ... Next-Schleife

Die For … Next-Schleife ist eine einfache Zählschleife, wobei die Schleife einem spezifizierten Wert entsprechend oft durchlaufen wird.

Ein einfaches Beispiel soll die Verwendung dieses Schleifentyps zeigen:

Dim index
For index = 1 To 10

    MsgBox index

Next

Diese Schleife wird dann genau 10 mal ausgeführt. In diesem Fall wird der Schleifenzähler automatisch nach jedem Schleifendurchlauf um 1 erhöht. Mit dem Step-Schlüsselwort kann man jedoch eine andere (ganzzahlige) Schrittweite definieren. Das folgende Beispiel, indem der Schleifenzähler jeweils um den Wert 2 erniedrigt wird, soll dies demonstrieren:

Dim index
For index = 10 To 0 Step -2

    MsgBox index

Next

Innerhalb einer For … Next- Schleife kann man die Schleife auch mittels der Exit For-Anweisung verlassen.

For Each ... Next-Schleife

Die For Each … Next-Schleife ist mit der For … Next-Schleife vergleichbar. Der einzige Unterschied ist, daß diese Schleife keinen expliziten Schleifenzähler benutzt. Somit kann man als Programmierer auch nicht die Anzahl der Schleifendurchläufe festlegen. Stattdessen wird die Schleife für jedes Element einer Arrayvariablen bzw. für jedes Element in einer Collection einmal ausgeführt. Dies ist besonders hilfreich, wenn man beispielsweise die Anzahl der Elemente in einer Collection nicht kennt. Ein weiteres Beispiel zeigt die Verwendung dieses Schleifentyps:

Dim myVar(10)
...
For Each elem in myVar


    MsgBox myVar(elem)

Next

Prozeduren und Funktionen (Unterprogramme)

In VB gibt es sowohl Prozeduren als auch Funktionen, wobei Prozeduren keinen Rückgabewert haben, Funktionen jedoch schon. Prozeduren

Prozeduren weisen in VB folgende Struktur auf:

Sub Prozedurname([Parameterliste])

  Anweisungen

End Sub

Eine Prozedur muß immer mit dem Schlüsselwort Sub beginnen, danach folgt der Prozedurname. Nach dem Prozedurnamen kann innerhalb von runden Klammern eine durch Beistriche getrennte Parameterliste angegeben werden. Da es ja nur einen Datentyp gibt, werden nur die Parameternamen spezifiziert. Will man der Prozedur keine Parameter übergeben, so muß man ein leeres Paar von runden Klammern schreiben. In Bezug auf Parameterübergabe sei noch erwähnt, daß VB nur Call-by-Reference unterstützt.

Die folgenden Zeilen enthalten dann Anweisungen. Abgeschlossen wird eine Prozedur durch das Schlüsselwort End Sub. Funktionen

Funktionen müssen folgende Struktur aufweisen:

Function Funktionsname([Parameterliste])

Anweisungen

Funktionsname = Rückgabewert

End Function

Die Struktur von Funktionen ist praktisch gleich wie jene von Prozeduren, es wird jedoch statt des Schlüsselwortes Sub das Schlüsselwort Function verwendet. Ebenso wird statt des Schlüsselwortes End Sub das Schlüsselwort End Function verwendet. Die Parameterübergabe erfolgt nach dem gleichen Prinzip wie bei Prozeduren.

Wie bereits zuvor erwähnt haben Funktionen einen Rückgabewert vom Typ Variant. Die Rückgabe eines Wertes wird durch folgende Anweisung veranlaßt: „Funktionsname = Rückgabewert“. Diese Anweisung kann auch mehrmals im Funktionscode vorkommen, was bedeutet, daß man auch mehrere Austrittspunkte definieren kann. Prozedur- bzw. Funktionsaufrufe

Eine Möglichkeit für Prozeduraufrufe ist die Verwendung der Call-Anweisung. In diesem Fall schreibt man im Code einfach „Call Prozedurname (Parameter)“, wobei auch bei keiner Parameterübergabe runde Klammern notwendig sind.

Die zweite Möglichkeit ist die Angabe des Prozedurnamens, gefolgt von einer durch Beistriche getrennten Parameterliste (falls Parameter übergeben werden). Klammern sind in diesem Fall nicht erlaubt.

Funktionen werden in VBScript durch Angabe des Funktionsnamens, gefolgt von einer Parameterliste in runden Klammern, aufgerufen. Werden keine Parameter übergeben, so muß trotzdem ein leeres Klammernpaar angegeben werden. Wird der Rückgabewert einer Funktion einer Variablen zugewiesen, so muß der Funktionsaufruf immer auf der rechten Seite der Zuweisung stehen.

Das folgende Beispiel soll die Deklaration und Verwendung von Prozeduren und Funktionen verdeutlichen:

Sub ConvertTemp(t)

    MsgBox "Die Temperatur beträgt "&Celsius(t)&" Grad Celsius"

End Sub


Function Celsius(f)

    Celsius=(f-32)*5/9

End Function


Dim temp
temp = InputBox ("Geben Sie die Temperatur in Fahrenheit ein",1)

Call ConvertTemp(temp)
'bzw. ConvertTemp temp

Unterprogramm vorzeitig beenden

Soll ein Unterprogramm vorzeitig beendet werden, zB weil ein Fehler auftritt und die Bestellung nicht fortgesetzt werden darf, so wird der Befehl 'return' verwendet. Return beendet das Unterprogramm und kehrt zum Aufrufer zurück.

Sub RechnungVerschicken()

    ...
    If( Me.tbLieferadresse.Text == "" )
         return
    End If

    MsgBox "Ihre Rechnung wurde verschickt"

End Sub

Fehlerbehandlung

Auf falsche Eingaben mit Fehlermeldung reagieren:

   Try

     'Anmerkung: bei falschen Eingaben würde das Programm hier abstürzen...
     meinePerson.Geburtsdatum = Me.tbGeburtsdatum.Text
     meinePerson.Gehalt = Me.tbGehalt.Text

   Catch ex As Exception
     
     'dieser Code wird nur ausgeführt, wenn ein Fehler aufgetreten ist:
     MessageBox.Show("Eine Ihrer Eingaben hat einen Fehler verursacht!")
   
   End Try

   'hier wird das Programm fortgesetzt (auch im Fehlerfall)
visual_basic_kurzeinfuehrung.1301333986.txt.gz · Zuletzt geändert: 2011/03/28 19:39 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki