Jump to content

Grundkurs Programmierung mit Visual Basic


Recommended Posts

In diesem Thread soll nach und nach ein Grundkurs für die Programmierung mit Visual Basic und Excel Visual Basic for Application entstehen. Es wird an mehreren konkreten Roulette-Beispielen eine Einführung in die Programmierung gegeben.

Jeder kann sich beteiligen und die gestellten Aufgaben in diesem Thread lösen und darüber diskutieren. Damit ein zusammenhängender Kurs entsteht, dient dieser Thread nur zur Darstellung und Erklärung des VB Codes.

Viel Spaß und viel Erfolg mit dem Kurs.

Vielen Dank auch an den User Ranger, der mit seinen Know-How tatkräftig die Kursteilnehmer unterstützt und bei Erstellung der Unterlagen geholfen hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

1. Lektion - Permanenzdatei einlesen

1. Aufgabe - Funktionskopf

Die erste Aufgabe wird die Entwicklung einer Funktion zum Einlesen einer Hamburger Permanenz-Datei sein. Als Grundlage kann die Hamburger Permanenz-Datei, Tisch 1 vom 13.09.2004 mit dem Dateinamen "Hamburg.txt" heruntergeladen werden.

Aufgabe

Als erstes muß jetzt eine Prozedur oder Funktion angelegt werden.

Damit die Funktion auf unterschiedliche Permanenzen anwenden können, wird als Argument der Dateinamen übergeben.

Die Aufgabe ist nun zu entscheiden, ob eine Prozedur oder eine Funktion benötigt wird und den Datentyp für das Argument. Der entsprechende Code für diese Prozedur/Funktion mit dem Argument für den Dateinamen ist zu erstellen. Als Namen für die Prozedur/Funktion wird "EinlesenPerm" und als Namen für das Argument "Dateiname" verwendet.

Stichwörter

(Unter diesen Stichwörtern kann in der Online-Hilfe gesucht werden)

Function

Sub

Argumente

Datentypen

Hinweise

Die VBA-Hilfe ist in Excel über den Visual Basic Editor erreichbar. Dieser ist über das Menü "Extras -> Makro -> Visual Basic Editor" erreichbar. Im Editor Fenster dann über das Hilfemenü "?".

Zum Schreiben des Codes wird in Editor ein Modul angelegt. Dazu einfach in Excel eine neue Datei anlegen und dann den VB Editor aufrufen. Im Editor dann über das Menü "Einfügen -> Modul" ein sog. Modul anlegen. Im nun geöffneten Modul-Fenster kann der Code erfasst werden. Zur Speicherung entweder im Editor oder im eigentlichen Excel-Fenster die Excel-Datei speichern. Das Modul wird automatisch mit der Excel-Datei gespeichert und kann somit in Zukunft über diese Datei aufgerufen und bearbeitet werden. Es empfiehlt sich also diese Excel-Datei für den Kurs zu verwenden.

Lösungsvorschlag

Sub PermEinlesen(Dateiname As String)

     'Permanenzzahlen einlesen und in Liste speichern

End Sub

Es wird eine Prozedur (Sub) für diese Aufgabe angelegt. Der Unterschied zwischen einer Function und einer Prozedur ist ganz einfach: Die Function kann einen Wert zurückgeben, die Prozedur nicht! Für den ersten Schritt genügt eine Prozedur. Die einzelnen Permanenzzahlen werden im weiteren Verlauf des Kurses in eine Liste bzw. alternativ in eine Excel-Tabelle eingelesen.

Das Argument "Dateiname" ist vom Datentyp "String". Übergeben wird ein Dateinname in der Form "C:\eigene Dateien\Hamburg.txt". Somit wird ein Text verarbeitet. Dieser wird im Visual Basic als Datentyp "String" behandelt. Wichtig ist, dass der eigentliche Text immer in Anführungszeichen steht. VB behandelt dann die Zeichen zwischen den beiden Anführungszeichen als Text und interpretiert diesen nicht weiter.

Ein Argument wird in der Form "<Argumentname> As <Datentyp> in runden Klammern nach dem Funktionsname definiert. In diesem Fall also

(Dateiname As String)

Mit "End Sub" wird die Prozedur abgeschlossen. Somit gehört alles, was zwischen "Sub ..." und "End Sub" steht, zum Funktionskörper. Dieser beinhaltet also beliebige Anweisungen zur Durchführung einer Aufgabe.

Code

Als Grundlage für den Kurs wird der bisherige Code in der Excel-Datei "VB Kurs.xls" fortgeschrieben. Für die Anwender der VB-Entwicklungsumgebung steht in der Zip-Datei das Modul "Modul1.bas" zur Verfügung. Dieses kann in die VB-Entwicklungsumgebung importiert werden.

VB_Kurs_1_1.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Lektion - Permanenzdatei einlesen

2. Aufgabe - Datei öffnen/schliessen

Als nächstes ist das Dateihandling zu programmieren. Es muß die Datei "hamburg.txt" geöffnet, gelesen und geschlossen werden.

Aufgabe

Zunächst wird der Code für das Öffnen und Schliessen der Datei erstellt. Im Argument "Dateiname" wird der vollständige Dateinamen inkl. Pfad an die Funktion übergeben. Diese Datei muß nun geöffnet werden und am Schluß der Verarbeitung auch wieder geschlossen werden.

Daraus ergibt sich als Aufgabe, die Datei "Dateiname" zu öffnen und wieder zu schliessen. Die dazwischenliegende Verarbeitung ist noch nicht Bestandteil dieser Aufgabe.

Stichwörter

(Unter diesen Stichwörtern kann in der Online-Hilfe gesucht werden)

Open

Close

FreeFile

Integer

Hinweise

Wichtig beim Öffnen der Datei ist darauf zu achten, dass die sog. Dateinummer richtig behandelt wird (Stichwort FreeFile). Es sollte auch die Art der Verarbeitung für die Datei berücksichtigt werden. Die Frage hierfür lautet: Für welchen Zweck wird die Datei geöffnet?

Lösungsvorschlag


'Variablendefinitionen erzwingen
Option Explicit

Sub PermEinlesen(Dateiname As String)
    'Permanenzzahlen einlesen und in Liste speichern

    'Variablen definieren
    Dim Dateinummer As Integer

    'Freie Dateinummer ermitteln
    Dateinummer = FreeFile()

    'Datei öffnen
    Open Dateiname For Input As Dateinummer

    'Code zum Einlesen der Daten

    'Datei wieder schliessen
    Close Dateinummer
 
End Sub

Zum Öffnen der Datei "Dateiname" werden folgende Element benötigt:

  • den Dateinamen, der als Argument in der Variable Dateiname übergeben wurde
  • die Dateinummer, die durch die Funktion FreeFile() ermittelt wird und die in einer Variable gespeichert wird
  • eine Angabe zum Modus, in dem die Datei zu öffnen ist. Da eine bestehende Datei nur gelesen werden soll, lautet das Schlüsselwort for input. Damit wird die Datei lediglich zum Lesen "for input" geöffnet.

Als erstes wird die Dateinummer ermittelt. Zunächst wird hierzu eine Variable definiert (angelegt). In Visual Basic müssen Variablen nicht zwangsläufig vor der Benutzung definiert werden, es gehört aber zu einem guten Programmierstil und hilft oft, Fehler im Programm zu vermeiden. Ausserdem kennt der Editor so die gewünschte Schreibweise des Variablennamen und korrigiert später bei Bedarf automatisch die Groß-/Kleinschreibung.

Damit die Definition von Variablen vom Compiler übeprüft werden kann und bei einer fehlenden Variablendefinition ein Fehler erzeugt wird, empfiehlt es sich den Ausdruck "Option Explicit" zu verwenden. Dieser wird am Anfang eines Moduls eingefügt und bewirkt, dass der Compiler jede verwendete Variable auf eine gültige Defintion prüft. Fehlt diese, wird ein Fehler ausgegeben.

Die Definition einer Variable beginnt immer mit dem Schlüsselwort Dim, gefolgt vom Namen der Variable. Danach kommt das Schlüsselwort As und anschliessend der Datentyp. Da eine Variable vom Typ Integer benötigt wird, sieht die Anweisung folgendermassen aus:

Dim Dateinummer As Integer

Somit ist die Variable definiert, sie hat aber noch keinen Wert. Dieser wird mit Hilfe der Funktion FreeFile() ermittelt:

Dateinummer = FreeFile()

Somit liegen alle Komponenten zum Öffnen der Datei vor:

Open Dateiname For Input As Dateinummer

Es folgt der noch zu erstellende Code zum Einlesen der Daten und anschliessend wird die Datei geschlossen.

Close Dateinummer

Nach dem Öffnen der Datei wird diese nur noch über die Dateinummer angesprochen. VB kennt diese Datei nur noch unter dieser Nummer. Alle Funktionen zur Dateiverarbeitung arbeiten deshalb nur mit der Dateinummer.

Code

Als Grundlage für den Kurs wird der bisherige Code in der Excel-Datei "VB Kurs.xls" fortgeschrieben. Für die Anwender der VB-Entwicklungsumgebung steht in der Zip-Datei das Modul "Modul1.bas" zur Verfügung. Dieses kann in die VB-Entwicklungsumgebung importiert werden.

VB_Kurs_1_2.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast
Dieses Thema wurde für weitere Antworten geschlossen.
×
×
  • Neu erstellen...