Einführung in die Programmierung mit Visual Basic für Applikationen. M. Holst, FH Aalen



Ähnliche Dokumente
Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Mediator 9 - Lernprogramm

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen.

Zur drittletzten Zeile scrollen

P r o g r a m m a b l a u f s t e u e r u n g

Erstellen von x-y-diagrammen in OpenOffice.calc

Zwischenablage (Bilder, Texte,...)

Erwin Grüner

Excel Funktionen durch eigene Funktionen erweitern.

Monatstreff für Menschen ab 50 Merkblatt 69 EXCEL Peter Aeberhard, Computeria Olten

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

2. ZELLINHALTE UND FORMELN

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Anleitung zur Verwendung der VVW-Word-Vorlagen

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

xcall White Paper Wählen-Buttons in Excel

Sin-Funktion vgl. Cos-Funktion

E-PRIME TUTORIUM Die Programmiersprache BASIC

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

1 MAKROS AUFZEICHNEN. 1.1 EinfÄhrung

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Erstellen der Barcode-Etiketten:

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Aktivierung von Makros in den Erfassungshilfen

Um eine Person in Magnolia zu erfassen, gehen Sie wie folgt vor:

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Satzhilfen Publisher Seite Einrichten

Stand: Adressnummern ändern Modulbeschreibung

Stammdatenanlage über den Einrichtungsassistenten

Zahlen auf einen Blick

Dokumentation. estat Version 2.0

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Wie halte ich Ordnung auf meiner Festplatte?

Anleitung zur Erstellung einer Gefährdungsbeurteilung

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

NEUES BEI BUSINESSLINE WINDOWS

Modul 122 VBA Scribt.docx

PowerPoint: Text. Text

Microsoft Visual Studio Community 2015

Grundlagen Word Eigene Symbolleisten. Eigene Symbolleisten in Word erstellen

Abb. 1. Abb. 2. Schaltflächen Speichern und Bericht öffnen. Abb. 3.

EINFACHES HAUSHALT- KASSABUCH

Fisch schwimmt gegen eine radioaktive Tonne.

Anleitung über den Umgang mit Schildern

VisualBasic - Variablen

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Dokumentation. Serienbriefe mit Galileo-Daten im Word erstellen

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

KeePass Anleitung. 1.0Allgemeine Informationen zu Keepass. KeePass unter Windows7

Arbeiten mit UMLed und Delphi

Word 2010 Online Formulare mit Vorversionstools

Filialpreisverwaltung

Hilfreiche Funktionen

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

REFLEX Zeiterfassung

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Programme im Griff Was bringt Ihnen dieses Kapitel?

Mandant in den einzelnen Anwendungen löschen

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

Excel Pivot-Tabellen 2010 effektiv

AutoCAD Dienstprogramm zur Lizenzübertragung

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Pixtacy-Anbindung an CleverReach.de

Viele Bilder auf der FA-Homepage

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar 2014 K-W81-G

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar inkl. zusätzlichem Übungsanhang K-W81-G-UA

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

1 Vom Problem zum Programm

Wir arbeiten mit Zufallszahlen

Gruppenrichtlinien und Softwareverteilung

Excel Auswertungen in XAuftrag / XFibu

1 topologisches Sortieren

Die besten Excel-Tastenkombinationen im Überblick

Datenbanken Kapitel 2

Visual Basic Express erstes Projekt anlegen

3. Die tägliche -Flut effizient verwalten

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

MS Excel 2010 Kompakt

Hilfedatei der Oden$-Börse Stand Juni 2014

Vorgehensweise bei Lastschriftverfahren

Programm GArtenlisten. Computerhinweise

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

4.1 Wie bediene ich das Webportal?

ebanking Business: Umwidmung der Einzugsermächtigungen in SEPA-Mandate per Mitteilung im Verwendungszweck

AutoTexte und AutoKorrektur unter Outlook verwenden

Microsoft Access 2010 Navigationsformular (Musterlösung)

Übungen Programmieren 1 Felix Rohrer. Übungen

Internationales Altkatholisches Laienforum

Hinweise zum Übungsblatt Formatierung von Text:

Transkript:

Einführung in die Programmierung mit Visual Basic für Applikationen M. Holst, FH Aalen

Mechatronik / Technischer Redakteur -1- ALLGEMEINES 2 1 MAKROERSTELLUNG 2 1.1 Was ist ein Makro? 2 1.2 Arten der Makroerstellung 2 1.3 Ausführen eines Makros 3 2 DAS ERSTE VBA-MAKRO 3 3 GRUNDLAGEN DER PROGRAMMIERSPRACHE VBA 5 3.1 Variablen 5 3.1.1 Variablenverwaltung 5 3.1.2 Variablendefinition 5 3.1.3 Variablennamen 6 3.1.4 Variablentypen 6 3.1.5 Wertzuweisungen bei Variablen 7 3.2 Felder 8 3.2.1 Felder dimensionieren 8 3.3 Einfacher Zugriff auf das Excel-Arbeitsblatt 9 3.3.1 Zugriff auf eine Zelle einer Excel-Tabelle 9 3.4 Befehle zur Programmablaufsteuerung 10 3.4.1 Verzweigungen mit if then else 10 3.4.1.1 Formulierung von Bedingungen 11 3.4.2 Schleifen 12 3.4.2.1 Schleifen mit for-next 12 3.4.2.2 Schleifen mit do loop until 13 3.4.2.3 Schleifen mit while-wend 14 3.5 Umgang mit Zahlen und Zeichenketten 15 3.5.1 Numerische Funktionen 15 3.5.2 Zeichenketten 15 3.5.3 Umwandlungsfunktionen 16 3.5.3.1 Zeichenketten in Zahlen umwandeln 16 3.5.3.2 Zahlen in Zeichenketten umwandeln 17 4 EREIGNISORIENTIERTES PROGRAMMIEREN 17 5 ÜBUNGSAUFGABEN 20 6 LITERATURVERZEICHNIS 21

Mechatronik / Technischer Redakteur -2- Allgemeines Die folgenden Seiten sind eine Einführung in die Programmierung unter der Betriebssystemfamilie Windows. Anhand der Makroprogrammiersprache Visual Basic für Applikationen (VBA), die in die Programme der Office-Familie integriert ist, ist eine einfache und effektive Einführung in die Strukturen moderner Programmiersprachen möglich. Diese Anleitung kann nicht den Anspruch auf Vollständigkeit erfüllen. Eine vollständige Beschreibung dieser Programmiersprache werden Sie wohl kaum in der Literatur finden. Sicherlich ist es notwendig, bei einem intensiven Einstieg auf verschiedene Bücher zurückzugreifen. 1 Makroerstellung 1.1 Was ist ein Makro? Mit Makros können Arbeitsschritte vereinfacht und automatisiert werden, die sich häufig wiederholen. Sie können Excel ganz an Ihre Bedürfnisse anpassen und mit neuen Menükommandos und Symbolen ausstatten. Zudem können Sie die Bedienung von Excel für andere Benutzer vereinfachen, so dass diese Ihre Excel-Anwendung praktisch ohne Schulung bedienen können. Sogar echte Programme sind erstellbar, denen man kaum mehr anmerkt, dass sie in Excel entstanden sind. Da die heute verwendeten Computer noch keine Spracheingabe beherrschen, müssen Makroanweisungen in einer speziellen Sprache, der Programmiersprache, formuliert werden. Diese Anleitung bezieht sich ausschließlich auf die englische VBA-Variante, die ab Excel 97 alle anderen Versionen abgelöst hat und auch in den neuen Versionen wie Excel 2000 oder XP lauffähig ist. 1.2 Arten der Makroerstellung Generell bestehen zwei Möglichkeiten, Makros zu erstellen: Entweder durch das Eintippen der entsprechenden Kommandos über die Tastatur oder durch das Aufzeichnen der jeweiligen Aktion. Damit ist gemeint, dass Sie über Maus oder Tastatur Daten eingeben, Zellen formatieren, Kommandos ausführen etc. und Excel Ihre Aktionen verfolgt und mitprotokolliert. Dieses Protokoll enthält die entsprechenden VBA-Anweisungen. Wird dieses so erzeugte Makro später ausgeführt, so werden exakt die selben Arbeitsschritte, die Sie vorher manuell ausgeführt haben, durch das Makro wiederholt. In der Praxis wird die Erstellung eines VBA-Makros zumeist in einem Mix aus beiden Methoden erfolgen.

Mechatronik / Technischer Redakteur -3-1.3 Ausführen eines Makros Die unbequemste Form, ein Makro auszuführen, ist der Start über EXTRAS MAKRO MAKROS. Es wird Ihnen eine Liste mit allen definierten Makros zur Auswahl gestellt. Sobald Sie einen der Makronamen anklicken, wird dieses ausgeführt. Weitere Möglichkeiten sind: Ein Makro mit einem beliebigen Symbol in der Symbolleiste, mit einem neuen Menüeintrag oder mit einem Tastenkürzel zu verbinden. In Excel ist es auch möglich, die Ausführung eines Makros vom Eintreten bestimmter Ereignisse abhängig zu machen. Die zuletzt genannte Form der Makroaktivierung wird auch bei unseren VBA-Programmen die am häufigsten verwendete sein. 2 Das erste VBA-Makro Das Ziel dieser kleinen Übung ist es, ein Makro durch Aufzeichnung zu erstellen, anschließend anzuschauen und dann separat ausführen zu lassen. Gehen Sie hierzu wie folgt vor: 1. Aufruf von Excel 2.EXTRAS MAKRO AUFZEICHNEN wählen An dieser Stelle kann dem Makro noch eine Beschreibung zugewiesen werden oder auch eine Tastenkombination, mit der das Makro zu starten ist. 3. Durch einen Klick auf OK starten Sie den Makrorecorder. Alle nun mit Excel ausgeführten Operationen werden gespeichert und können später über dieses Makro wieder aufgerufen werden. 4. Schreiben Sie nun einen beliebigen Text, z.b. TEST in die erste Zelle Ihres Arbeitsmappe. Drücken Sie ENTER, um die Eingabe abzuschließen. 5. Beenden Sie den Makrorecorder über EXTRAS MAKRO AUFZEICHNUNG BEENDEN Der erfasste Programmcode wird nun gespeichert.

Mechatronik / Technischer Redakteur -4-6. Nun können Sie sich den erzeugten VBA-Programcode anschauen. Über EXTRAS MAKRO MAKROS BEARBEITEN können Sie die VBA-Entwicklungsumgebung aufrufen. Der von Excel angelegte Programmcode sollte nun wie folgt aussehen: Sub Makro1() Range("A1").Select ActiveCell.FormulaR1C1 = "TEST" Range("A2").Select End Sub Die Programmzeilen Sub Makro1() und End Sub umrahmen das eigentliche Programm. Mit etwas Programmierkenntnissen könnten diese 3 Programmzeilen durch eine einzige ersetzt werden: Range("A1") = "TEST" Probieren Sie es aus!! Ändern Sie hierzu den Programmcode, schließen die VBA-Entwicklungsumgebung und starten Sie das Makro wie oben beschrieben.

Mechatronik / Technischer Redakteur -5-3 Grundlagen der Programmiersprache VBA 3.1 Variablen 3.1.1 Variablenverwaltung Variablen sind Platzhalter für Zahlen, Textzeichen oder andere Daten. Variablen werden dazu verwendet, Daten während des Programmablaufs vorübergehend zu speichern und mit ihnen Berechnungen durchzuführen. Das folgende Programmbeispiel zeigt ein einfaches Programm: sub makro1() Dim laenge, breite, flaeche laenge = 3 breite = 2 flaeche = laenge * breite Range("A1") = flaeche end sub In den Variablen laenge und breite werden die Länge und Breite eines Rechtecks gespeichert. Daraus wird der Flächeninhalt berechnet und in der Variablen flaeche gespeichert. Das Ergebnis wird in die Zelle A1 des aktiven Arbeitsblattes gespeichert. Die Anweisung sub makro1() und end sub sind erforderlich, um VBA mitzuteilen, dass es sich hier um ein sogenanntes abgeschlossenes Unterprogramm handelt. VBA kann Programmcode nur in solchen abgeschlossenen Einheiten abarbeiten. 3.1.2 Variablendefinition In den meisten heute verwendeten Programmiersprachen müssen bei Erstellung eines Programms die in dem Programm verwendeten Variablen vor einer Benutzung definiert werden. Standardmäßig kann zwar in Visual Basic auf eine Variablendefinition verzichtet werden, was im ersten Moment meist als praktisch und vorteilhaft gewertet wird. Aber in Wirklichkeit ist die notwendige Variablendefinition ein wichtiger und wirksamer Schutz gegen Tippfehler und damit auch ein Schutz vor Programmfehlern. Unter dem Menüpunkt EXTRAS OPTIONEN kann die Option Variablendeklaration erforderlich aktiviert werden. Excel weigert sich nun, eine Prozedur (=Unterprogramm) auszuführen, bevor nicht alle darin verwendeten Variablennamen definiert, d.h. Excel bekannt gemacht worden sind. Die Variablendefinition wird unter Excel mit dem Kommando dim (siehe auch obiges Beispiel) vorgenommen. In allen Basic-Varianten ist es möglich, auf die Variablendefinition verzichten zu können. Wenn

Mechatronik / Technischer Redakteur -6- man diese Vorgehensweise verwendet, so sollte man aber unbedingt darauf achten, dass die benutzten Variablen durch das Anhängen des Kurzzeichens (s. unten) in ihrem Typ bestimmt sind. 3.1.3 Variablennamen Variablennamen müssen mit einem Buchstaben beginnen, dürfen maximal 255 Zeichen lang sein und keine Leerzeichen, Punkte und Sonderzeichen (-,+,*,\,...) enthalten. VBA unterscheidet Großund Kleinschreibung nicht. Variablennamen dürfen nicht mit den in VBA vordefinierten Schlüsselwörtern (z.b. sub, function, end, for, next, dim,...) übereinstimmen. Eine Liste aller Schlüsselwörter ist unter den VBA-Online-Hilfe unter dem Suchbegriff Schlüsselwörter zu finden. 3.1.4 Variablentypen Im obigen Beispiel wurden drei Variablen (laenge, breite und flaeche) zwar mit dim definiert, aber es wurde kein Variablentyp angegeben. Im Gegensatz zu anderen Programmiersprachen ist dies zwar in VBA zulässig, aber nicht unbedingt sinnvoll. VBA wählt so automatisch den Typ Variant (dazu später mehr). Dennoch ist es sinnvoll stets die der Aufgabe entsprechenden Variablentypen zu wählen, weil so die Verarbeitungsgeschwindigkeit erhöht, Speicherverbrauch und Fehlergefahren vermindert werden. VBA kennt folgende Variablentypen: Variablentyp Beschreibung Kurzzeichen Byte Ganze Zahlen zwischen 0 und 255 Nicht vorhanden Boolean Wahrheitswerte (True oder False) Nicht vorhanden Integer Ganze Zahlen zwischen -32768 und +32767 % Long Ganze Zahlen zwischen -2147483648 und & +2147483647 Double Fließkommazahlen mit 16 Stellen Genauigkeit # Single Fließkommazahlen mit 8 Stellen Genauigkeit! String Zeichenketten; maximale Anzahl von Zeichen: $ 2147483647 Variant Defaultvariablentyp; nimmt je nach Bedarf einen @ der obigen Variablentypen an, was einen hohen internen Verwaltungsaufwand erfordert. Beispiele: Der Befehl dim laenge% definiert eine Variable mit Namen laenge vom Typ Integer. Bei der Definition von Variablen mit dim kann der Variablentyp entweder durch die Angabe des Kurzzeichens unmittelbar hinter dem Variablennamen oder durch die Angabe von As Variablentyp bestimmt werden.

Mechatronik / Technischer Redakteur -7- Beispiele: dim laenge% definiert eine Variable mit Namen laenge vom Typ Integer. dim laenge as Double definiert eine Variable mit Namen laenge vom Type Double. 3.1.5 Wertzuweisungen bei Variablen Bei allen Variablentypen erfolgt die Zuweisung eines neuen Wertes mit folgender Syntax: Variablenname = Wert oder Formel oder Variable oder eine Kombination aus allen drei Möglichkeiten Beispiele: FLAECHE = BREITE * LAENGE UMFANG = 2*3.14*RADIUS Typvermischungen sollten unbedingt vermieden werden, da dies zu Fehlberechnungen führen kann. Derartige Fehler sind immer wieder die Ursache für ein typisches Softwareversagen. Immer wieder verlieren Firmen und öffentliche Einrichtungen teuerste Hardware (z.b. Satelliten) durch solche Fehler. Dazu ein einfaches Beispiel: Sub makro1() Dim i As Integer i = 255 * 255 End Sub Damit VBA den Unterschied zwischen einem Variablennamen und einer zuzuweisenden Zeichenkette unterscheiden kann, werden Zeichenketten in Anführungszeichen gesetzt. Beispiel: Dim Name as String... Name = "MEIER"

Mechatronik / Technischer Redakteur -8-3.2 Felder Felder sind Listen von Variablen mit gleichem Namen, die über einen oder mehrere Indexnummern angesprochen werden. Felder werden immer dann eingesetzt, wenn mehrere ähnliche Informationen (z.b. Namenslisten, Zahlenwerte einer Matrix etc.) bearbeitet werden sollen. 3.2.1 Felder dimensionieren Felder müssen vor Ihrer Verwendung definiert werden. Dazu dient wiederum der Befehl dim, wobei hinter dem Feldnamen der größte erlaubte Index in Klammern angegeben wird. Der Typ des Felds wird wie bei Variablen mit dem Kurzzeichen oder mit dem Schlüsselwort As angegeben. Beispiel: dim feld(10) as Integer Der Zugriff auf das Feld erfolgt dann immer mit der Angabe des Indexes. Beispiele: feld(4) = 5 feld(1) = feld(4) feld(0) = feld(1) * feld(2) Der Index darf sich maximal im Bereich von 0 bis zu dem unter dim angegeben maximalen Wert bewegen. Obige Definition erzeugt also ein Feld mit elf Elementen. VBA erlaubt auch die Definition mehrdimensionaler Felder, etwa in folgender Form: dim schachbrett(7,7) as Integer Felder mit bis zu 7 Dimensionen sind unter VBA definierbar.

Mechatronik / Technischer Redakteur -9-3.3 Einfacher Zugriff auf das Excel-Arbeitsblatt Im Gegensatz zu der allgemeinen Programmiersprache Visual Basic, mit der alleinstehende Programme erzeugt werden, ist Visual Basic für Applikationen eine Programmiersprache, mit der komplexe Abläufe innerhalb der Programme der Microsoft Office-Familie programmiert werden können. Aber dazu muss natürlich jedes Programm der Office-Familie seinerseits die Möglichkeit bieten, auf die dort erstellten Daten zugreifen zu können. 3.3.1 Zugriff auf eine Zelle einer Excel-Tabelle Um auf einzelne Zellen innerhalb des aktiven Arbeitsblattes zugreifen zu können, bietet Excel viele verschiedene und teils sehr mächtige Möglichkeiten an. Im Rahmen dieser Einführung kann ich nicht auf alle Möglichkeiten eingehen. Deshalb sei an dieser Stelle auf [1] verwiesen. Daten aus einer Zelle in eine Variable kopieren: Laenge = Range("A1") Daten aus einer Variablen in eine Zelle schreiben: Range("A1") = Flaeche Auch sind Berechnungen mit solchen Zellbezügen möglich: Range("B1") = Range("A1") * Range("A2") Statt dieser umständlichen Schreibweise Range("A1") ist auch die Kurzschreibweise [A1] erlaubt. Eine weitere Möglichkeit, auf Zellen des Excelarbeitsblattes zugreifen zu können, ist die Methode Cells. Cells benötigt als Angabe den Zeilen- und Spaltenindex der anzusprechenden Zelle, wobei hier nicht mit 0 sondern mit 1 angefangen wird zu zählen. Cells(1,1) beschreibt also die Zelle A1. Somit würde das letzte obige Beispiel wie folgt zu programmieren sein: Cells(1,2) = Cells(1,1) * Cells(2,1) Der Vorteil dieser Schreibweise ist der, dass nun nicht mehr Zeichenketten die anzusprechende

Mechatronik / Technischer Redakteur -10- Zelle benennen, sondern Zahlen. Diese Zahlen könnten auch durch Variablen ersetzt werden, so dass folgende Syntax richtig wäre (was später bei Schleifen von entscheidendem Vorteil ist): ZEILE% = 1 SPALTE% = 2 Cells(ZEILE%,SPALTE%) = Cells(ZEILE%,1) * Cells(ZEILE%+1,1) 3.4 Befehle zur Programmablaufsteuerung Jedes etwas größere Programm besteht nicht nur aus Berechnungen, sondern es soll auch in der Lage sein, auf unterschiedliche Aufgaben flexibel reagieren zu können. So kann man mit ein und dem selben Bildbearbeitungsprogramm unterschiedlichste Dateiformate (jpg, bmp, tif,...) lesen und bearbeiten. Das bedeutet aber, dass das Bildbearbeitungsprogramm zunächst prüfen muss, um welches Bildformat es sich handelt und in Abhängigkeit davon verschiedene Unterprogramme zum Öffnen der Datei aufrufen muss. Natürlich bietet auch die Programmiersprache VBA Befehlsstrukturen an, mit denen der Programmablauf gesteuert werden kann. Die wichtigsten finden Sie in den nächsten Kapiteln näher beleuchtet. 3.4.1 Verzweigungen mit if then else Mit if-anweisungen können Programmteile wahlweise - je nach Eintreten einer bestimmten Bedingung ausgeführt werden. Das Programm verzweigt sich in mehrere Äste, von denen allerdings immer nur einer ausgeführt werden kann. Die genaue Syntax lautet: If <Bedingung> then <Programmteil1> else <Programmteil2> end if In Worten würde eine Beschreibung dieser Syntax etwa lauten: Wenn die Bedingung erfüllt ist, dann führe Programmteil1 aus, wenn nicht, dann Programmteil2. Am besten erläutert aber ein Beispielprogramm diesen Sachverhalt: Sub test() Dim zahl As Double zahl = InputBox("Geben Sie eine Zahl ein")

Mechatronik / Technischer Redakteur -11- If zahl = 0 Then MsgBox ("Eingabe gleich 0") Else MsgBox ("Eingabe ungleich 0") End If End Sub 3.4.1.1 Formulierung von Bedingungen In IF-Verzweigungen und in Schleifen (s. nächster Abschnitt) müssen Sie logische Bedingungen formulieren, die als Ergebnis immer nur wahr (true) oder falsch (false) sein können. In obigem Beispiel wird die Bedingung zahl = 0, also ob der Inhalt der Variablen Zahl gleich null ist, geprüft und als Ergebnis wahr oder falsch ermittelt. Ergibt sich der Wert TRUE als Ergebnis, so erfolgt die Ausgabe Eingabe gleich 0, im anderen Fall, wenn also das Ergebnis der Prüfung FALSE ist, wird der Text Eingabe ungleich 0 ausgegeben. Als logische Vergleichsoperatoren stehen Ihnen folgende zur Verfügung: = Prüfung auf Gleichheit <> Prüfung auf Ungleichheit < Prüfung auf kleiner als > Prüfung auf größer als <= Prüfung auf kleiner gleich >= Prüfung auf größer gleich Das Ergebnis eines Vergleichs ist der sogenannte Wahrheitswert. Im binären System eines Computers kommen nur zwei Werte in Frage: True oder False. Für die beiden Schlüsselwörter True und False verwendet VBA intern die Werte 1 und 0. In fast allen Programmsprachen können Sie mehrere Vergleiche miteinander verknüpfen. Auch in diesem Fall ergibt sich als Gesamtergebnis ein Wahrheitswert. Als Verknüpfungsoperatoren kommen and, or, xor und not in Frage. Soll also z.b. geprüft werden, ob sich eine Zahl in einem gültigen Zahlenbereich z.b. 0 bis 10 befindet, so wäre folgende Syntax notwendig: If (Zahl >= 0) and (Zahl <= 10) Then

Mechatronik / Technischer Redakteur -12-3.4.2 Schleifen Schleifen dienen dazu, Programmteile mehrfach hintereinander auszuführen. VBA kennt hier drei verschiedene Programmstrukturen: for-next, do-loop und while-wend. 3.4.2.1 Schleifen mit for-next Dies stellt die einfachste Form einer Schleife in VBA dar. Dazu wird einer Variablen zu Beginn der Schleife ein Startwert zugewiesen. Dieser Wert wird mit jedem Schleifendurchlauf erhöht, bis der Endwert erreicht ist. Das folgende Beispiel zeigt ein einfaches Testprogramm: Sub test() Dim i% For i% = 1 To 10 Debug.Print i% Next i% Debug.Print "FERTIG" End Sub Anmerkung: Der Befehl Debug.Print erzeugt eine Ausgabe nicht in das Excel-Sheet, sondern in den sogenannten Direktbereich. Dieser kann mit ANSICHT DIREKTBEREICH oder der Tastenkombination [STRG)+(G]im Visual-Basic-Fenster aktiviert werden. In oben gezeigtem Beispiel durchläuft die Integer-Variable I% die Werte 1 bis 10. Erst nach dem 10. Durchlauf der Schleife wird die Programmzeile DEBUG.Print "Fertig" abgearbeitet. Wiederholt abgearbeitet wird der Programmcode, der zwischen den Zeilen for und next steht. Daher der Begriff for-next-schleife. Beim Einsatz dieser Art von Schleifen muss die Anzahl von Durchläufen bei Eintritt in die Schleife bekannt sein. Die Anzahl der Durchläufe kann nicht innerhalb der Schleife verändert werden. Außerdem darf auf keinen Fall der Schleifenvariablen (hier I%) innerhalb der Schleife ein neuer Wert zugewiesen werden, weil damit die gesamte interne Programmablaufstruktur von VBA durcheinander gebracht werden könnte. Statt der Zahlen 1 und 10, die den Start- und Endwert darstellen, können auch Variablen verwendet werden: Start% = 1 Ende% = 10 For i% = Start% To Ende% Debug.Print i% Next i% Standardmäßig ist die Schrittweite, also der Wert, um den in obigem Beispiel die Variabel I% nach jedem Durchlauf erhöht wird, eins. Da aber auch andere Schrittweiten erforderlich sein können, bietet VBA hierfür auch eine Möglichkeit an: Durch das Schlüsselwort step kann die Schrittweite vorgegeben werden.

Mechatronik / Technischer Redakteur -13- Start = 1 Ende = 1.5 For i = Start To Ende step 0.1 Debug.Print i Next i Probieren Sie aus, was passiert. Frage: Warum wurde das %-Zeichen bei den Variablennamen weggelassen? 3.4.2.2 Schleifen mit do loop until For-next-Schleifen sind in einer Beziehung unflexibel: Es steht von Anfang an fest, wie oft die Schleife durchlaufen wird. Häufig ist aber nicht bekannt, wie oft eine Schleife durchlaufen werden muss. Als Beispiel: Ein Programm soll solange Zahlen von einer Datei lesen, bis das Ende der Datei erreicht ist. Ob 10, 20 oder evtl. 2347 Zahlen in der Datei sind, ist vorher nicht bekannt. Also ist eine for-next-schleife für diese Aufgabe die falsche Lösung. do loop until kann man auch übersetzen mit: Mache so lange bis... Ein kleines Beispiel erläutert diese Schleifenart wieder am besten: Sub test() Dim i As Integer i = 1 Do Debug.Print i i = i + 1 Loop Until i > 10 End Sub Alle Befehle, die zwischen den Schlüsselwörtern Do und loop stehen, werden so oft wiederholt, wie es die Bedingung nach dem Schlüsselwort until erlaubt. Da die Prüfung dieser Bedingung aber erst am Ende der Schleife erfolgt, wird eine do-loop-until-schleife auf alle Fälle einmal durchlaufen!

Mechatronik / Technischer Redakteur -14-3.4.2.3 Schleifen mit while-wend while-wend-schleifen sind in Ihrer Funktion ähnlich wie do-loop-until-schleifen, nur dass die Prüfung, ob die Schleife durchlaufen werden soll, am Anfang, also vor Eintritt in die Schleife stattfindet. Sub test() Dim i As Integer i = 1 While i <= 10 Debug.Print i i = i + 1 Wend End Sub Übersetzen könnte man dies etwa so: Während die Bedingung erfüllt ist, mache... Anmerkung: Für die zu programmierenden Bedingungen bei Schleifen gilt die gleiche Syntax wie unter if-thenelse beschrieben.

Mechatronik / Technischer Redakteur -15-3.5 Umgang mit Zahlen und Zeichenketten 3.5.1 Numerische Funktionen Visual Basic stellt zahlreiche Funktionen für den Umgang mit Zahlen zu Verfügung. So gibt es von einfachen Funktionen für das Runden von Zahlen bis hin zu trigonometrischen Funktionen fast alles, was das Herz begehrt. Sollte eine Funktion nicht vorhanden sein, so kann man sich diese natürlich auch selbst programmieren. Wie das geht, finden Sie in der VBA-Hilfe oder in [1]. Eine kurze Erläuterung zum Begriff Funktion: Letztendlich ist ein Funktion ein Unterprogramm, das mit einem oder mehreren Zahlenwerten und/oder Zeichenketten aufgerufen werden kann und ein Ergebnis wieder als Zahlenwert oder Zeichenkette zur Verfügung stellt. Zum Beispiel: sin(0.5) ruft die Funktion sin auf, übergibt dieser den Zahlenwert 0.5 und berechnet den Sinuswert von 0.5. Ein Programm, das eine solche Funktion aufruft, könnte z.b. wie folgt aussehen: dim Wert as single wert = sin(0.5) Nun gibt es viele Funktionen, die mit Zahlenwerte Berechnungen durchführen. Stellvertretend seien an dieser Stelle ein paar wichtige genannt: Int(): Rundet Fließkommazahlen generell ab Fix(): Schneidet die Nachkommastellen ab Abs(): liefert den Absolutwert (=Betrag) einer Zahl Sgn(): Signum-Funktion Rnd: Liefert eine Zufallszahl zwischen 0 und 1, wobei 0 gilt: 0 inklusiv und 1 exklusiv 3.5.2 Zeichenketten Zeichenketten werden immer dann benötigt, wenn Informationen als Text bearbeitet werden müssen. Zeichenketten müssen in VBA zwischen Hochkommata eingeschlossen werden, damit VBA zwischen Zeichenketten und Variablennamen unterscheiden kann. Um Zeichenketten einer Variablen zuweisen zu können, müssen diese als Typ Variant oder String definiert werden. Die Länge von Zeichenketten ist unter den modernen Betriebssystemen praktisch nur noch durch den vorhandenen Arbeitsspeicher begrenzt. Auch zur Verarbeitung von Zeichenketten stellt VBA zahlreiche Funktionen zur Verfügung. Eine der wichtigsten und am häufigsten gebrauchte ist die Funktion len, die die Länge eines Strings ermittelt.

Mechatronik / Technischer Redakteur -16- Beispiel: Sub test() Dim a$ ' String Dim laenge As Integer ' Integer a$ = "Mueller" laenge = Len(a$) [A1] = laenge End Sub Wenn Sie dieses Programm testen, so wird in der Zelle A1 der Zahlenwert 7 eingetragen. Weitere Funktionen für Zeichenketten: UCase(): wandelt alle Zeichen in Großbuchstaben LCase(): wandelt alle Zeichen in Kleinbuchstaben InStr(): prüft, ob eine bestimmte Zeichenkette in einer anderen enthalten ist Die genaue Syntax finden Sie in der Online-Hilfe vom VBA. Mehrere Zeichenketten können mit dem Operator + zusammengesetzt werden. So ergibt a$ = "abc" + "de" als Ergebnis die Zeichenkette abcde in der Variablen a$. Soll an eine in der Variablen b$ gespeicherten Zeichenkette z.b. ein Leerzeichen angehängt werden, so wäre folgende Syntax zu wählen: b$ = b$ + " " 3.5.3 Umwandlungsfunktionen Beim Programmieren ist es (leider) immer wieder notwendig, Zahlen in Zeichenketten und umgekehrt umwandeln zu müssen. 3.5.3.1 Zeichenketten in Zahlen umwandeln Die einfachste Möglichkeit zur Datenkonversion in ein numerisches Format bieten die Funktionen CInt, CLng, CSng und CDbl. Umwandlungsfunktion Cint CLng CSng CDbl Ergebnis-Typ Integer Long Single Double

Mechatronik / Technischer Redakteur -17-3.5.3.2 Zahlen in Zeichenketten umwandeln Die Funktion CStr nimmt als Argument einen beliebigen Zahlenwert und liefert als Ergebnis eine Zeichenkette. Als Trennzeichen zwischen Vor- und Nachkommateil verwendet diese Funktion ein Komma (bei deutscher Ländereinstellung). So ergibt CStr(1/3) als Ergebnis die Zeichenkette 0,3333333. Beispiel: Sub test() Dim laenge As Single Dim breite As Single Dim flaeche As Single laenge = [A1] breite = [A2] flaeche = laenge * breite [A3] = "Flächeninhalt = " + CStr(flaeche) End Sub 4 Ereignisorientiertes Programmieren In allen Programmiersprachen unter der Betriebssystemfamilie Windows hat sich heute das sogenannte ereignisorientierte Programmieren als Standard etabliert. Ereignisorientiert bedeutet, dass ein geschriebenes Unterprogramm durch ein beliebiges Ereignis wie einen Mausklick, Tastendruck, das Öffnen eines Dokuments etc. gestartet wird. Moderne Programmiersprachen haben dazu eine intelligente Ereignisverwaltung, auf die man als Programmierer(in) problemlos und ganz einfach zugreifen kann. Auch hierzu wieder ein Beispiel: Das Beispiel der Flächenberechnung eines Rechtecks wurde ja schon behandelt. Nun soll dieses Programm so erweitert werden, dass mit Hilfe eines Buttons die Flächenberechnung gestartet werden kann. Feld A1 soll die Länge, Feld A2 die Breite und Feld A3 das Ergebnis der Flächenberechnung enthalten. Gehen Sie dazu wie folgt vor: 1. Starten Sie Excel

Mechatronik / Technischer Redakteur -18-2. Zum Erstellen eines Buttons, der unser Makro starten soll, benötigen wir die Steuerelement- Toolbox von Excel. Sollte diese nicht angezeigt werden, so muss sie mit ANSICHT SYMBOLLEISTEN STEUERELEMENT-TOOLBOX aktiviert werden. 3. Aktivieren Sie mit der Maus den Button Befehlsschaltfläche Hierdurch kommen Sie in den Entwurfsmodus (1. Button der Toolbox wird automatisch akitviert) und nun kann die für das zu erstellende Programm gewünschte Oberfläche erstellt werden. Übrigens kommt daher auch der Name Visual Basic. Sie müssen nämlich die grafischen Elemente Ihrer Benutzeroberfläche nicht mühsam programmieren, sondern können diese komfortabel per Maus gestalten und VBA erzeugt im Hintergrund den notwendigen Programmcode. Genauso arbeiten Programmiersprachen wie Delphi oder Visual C++. 4. Zeichnen Sie nun auf Ihr Excel-Sheet (der Mauszeiger besteht jetzt aus einem +) Ihren Button. Positionieren Sie dazu den Mauszeiger an die gewünschte Position der linken oberen Ecke Ihres Buttons, drücken Sie nun die linke Maus-Taste, halten diese gedrückt und bewegen Sie mit der Maus den Zeiger zur rechten unteren Ecke. Lassen Sie jetzt die linke Maustaste los. 5. Der Button ist gesetzt und nun soll das entsprechende Programm dazu geschrieben werden. Bewegen Sie den Mauszeiger auf den gerade erzeugten Button. Drücken Sie die rechte Maustaste. Wählen Sie den Menüpunkt Code anzeigen aus. 6. Es öffnet sich das Ihnen bereits bekannte Microsoft-Visual-Basic-Fenster. Auch das Grundgerüst für das zu erstellende Unterprogramm ist bereits fertig, so dass nur noch der von uns zu erstellende Programmcode einzugeben ist. Geben Sie nun folgendes Programm ein: [A3] = [A1] * [A2] 7. Schließen Sie jetzt das Visual-Basic-Fenster und schalten Sie den Entwurfsmodus ab (erste Schaltfläche der Steuerelement-Toolbox). 8. Nun ist der Button auf der Oberfläche fixiert und das Programm geschrieben. Geben sie in die

Mechatronik / Technischer Redakteur -19- Zellen A1 und A2 die Zahlenwerte für Länge und Breite ein. Aktivieren Sie jetzt den Button mit der linken Maustaste. -Was für ein Erlebnis!- 9. Natürlich ist die Buttonbeschriftung etwas unglücklich. Aber auch die kann geändert werden. Entwurfsmodus aktivieren, Button mit linker Maustaste selektieren, rechte Maustaste drücken und aus dem Kontext-Menü Eigenschaften wählen. Die Beschriftung des Buttons ist die Eigenschaft Caption. Durch Ändern des Textes in der rechten Spalte neben dem Begriff Caption wird die Beschriftung des Buttons geändert. 10. Verlassen Sie wieder den Entwurfsmodus. VBA stellt sehr viele weitere Ereignisse zur Verfügung, für die eigener Programmcode entwickelt werden kann. So ist es möglich, VBA-Programme durch das Starten von Excel, das Öffnen oder Schließen eines Arbeitsblattes, durch Einfachklick, durch Doppelklick und und... ausführen zu lassen. Visual-Basic stellt nicht nur Buttons (= Schaltflächen) für die grafische Oberflächengestaltung zur Verfügung. Die Steuerelement-Toolbox enthält weitere mächtige Elemente, so wie Sie sie auch von anderen windows-programmen her kennen. Diese Steuerelemente sind übrigens nicht VBA- oder Excel-spezifisch, sondern werden durch die Windows-Betriebssysteme zur Verfügung gestellt. Sie haben, nachdem Sie jetzt diese kleine Einführung aufmerksam durchgearbeitet haben, sich ein Grundwissen angeeignet, das es Ihnen erlaubt, die unendlichen Weiten der VBA-Welt zu erforschen. Mit diesem Grundwissen sollte Ihnen auch das Erlernen neuer Programmiersprachen wie Visual C++, Java u.s.w. nicht allzu schwer fallen.

Mechatronik / Technischer Redakteur -20-5 Übungsaufgaben 1. Schreiben Sie ein VBA-Programm, das die Fläche eines Rechtecks berechnet. Die Länge ist in der Zelle A1, die Breite in der Zelle A2 und das Ergebnis in der Zelle B1 zu hinterlegen. 2. 2-Punkte-Form einer Geraden: Aus zwei gegebenen Punkten einer Gerade kann nach der sogenannten 2-Punkte-Form die Steigung m und der Y-Achsenabschnitt c einer Gerade berechnet werden. Die Geradengleichung wird dann in der Form y = mx + c angegeben. Schreiben Sie nun ein VBA-Programm, das die Koordinaten des Punktes P1 aus den Zellen A1 (=X) und A2=(Y) und die des Punktes P2 aus den Zellen B1 und B2 ausliest und daraus m und c berechnet. m und c sollen in den Zellen D1 und D2 dargestellt werden. 3. Schreiben Sie ein Programm zur Berechnung von N! (N Fakultät). 4. Schreiben Sie ein VBA-Programm, das in die Zellen A1 bis A10 fortlaufend die Werte 1 bis 10 einträgt. 5. Schreiben Sie ein VBA-Programm, das in eine Spalte (z.b. A) 20 Zufallszahlen zwischen 0 und 1 schreibt. Benutzen Sie hierzu die Funktion RND. Anschließend soll Ihr Programm die Anzahl der Zahlen, die größer als 0.6 ermitteln und diese Anzahl in das Feld B1 schreiben. 6. Erweitern Sie das Programm nach Aufgabe 4 so, dass Ihnen das VBA-Programm den arithmetischen Mittelwert, Standardabweichung, Minimal- und Maximalwert ausgibt. 7. Schreiben einvba-programm, das 10 ganze Zufallszahlen zwischen 1 und 6 erzeugt. 8. Programm zur Auswertung von Tankbelegen: Tragen Sie in Spalte A den beim Tanken abgelesenen Kilometerstand, in Spalte B die Menge getankten Benzins und in Spalte C den Gesamtgeldbetrag für den gekauften Treibstoff ein. Schreiben Sie nun ein VBA-Programm, das aus allen Werten folgende Kennzahlen berechnet: Durchschnittsverbrauch pro 100km, Durchschnittspreis / Liter Treibstoff Durchschnittswert für Treibstoffkosten pro Kilometer 9. Schreiben Sie in die Spalte A beliebige Zahlen (z.b. Anzahl 10). Schreiben Sie ein VBA-Programm, das diese Zahlen der Größe nach sortiert. 10. Ändern Sie das Programm nach 9 so ab, dass die sortierten Zahlen nicht in Spalte A, sondern in Spalte B stehen, d.h. dass nach Programmende die Spalte A die unsortierten und Spalte B die

Mechatronik / Technischer Redakteur -21- sortierten Zahlen beinhaltet. 6 Literaturverzeichnis [1] VBA-Programmierung mit Excel 97, Michael Kofler, Verlag Addison Wesley