Programmieren in Anwendungen
Annette Bieniusa
Technische Universit¨at Kaiserslautern bieniusa@cs.uni-kl.de
24.04.2014
Uberblick ¨
Organisatorisches
Einf¨uhrung in VBA Was ist VBA?
Entwicklungsumgebung Arbeiten mit Makros
Administratives
I Homepage mit Informationen und Material
http://softech.informatik.uni-kl.de/Homepage/PIA SS14
I Vorlesung: donnerstags, 17:15 - 19:00, in Raum 52-207
I Saal¨ubung: freitags, Fr 13:45h - 15:15h, in Raum 48-379
I Wenn m¨oglich, Raumwechsel in Terminalraum 32-411
I Flexibler Wechsel zwischen Vorlesung und ¨Ubung wegen der vielen Feiertage im Sommersemester
I Bitte im KIS anmelden, um aktuelle Informationen per Email zu erhalten!
Fragen ¨ uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?
I Informatik-Vorlesungen
I Programmierkurse
I Einf¨uhrung in Statistik oder Wahrscheinlichkeitsrechnung
I K¨onnen Sie selbst¨andig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
Fragen ¨ uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?
I Informatik-Vorlesungen
I Programmierkurse
I Einf¨uhrung in Statistik oder Wahrscheinlichkeitsrechnung
I K¨onnen Sie selbst¨andig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
Fragen ¨ uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?
I Informatik-Vorlesungen
I Programmierkurse
I Einf¨uhrung in Statistik oder Wahrscheinlichkeitsrechnung
I K¨onnen Sie selbst¨andig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
Fragen ¨ uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?
I Informatik-Vorlesungen
I Programmierkurse
I Einf¨uhrung in Statistik oder Wahrscheinlichkeitsrechnung
I K¨onnen Sie selbst¨andig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
Themen
Visual Basic for Applications(VBA)
I Wiederholung grundlegender Konzepte der imperativen Programmierung anhand der Programmiersprache VB (Visual Basic)
I Einf¨uhrung in die ereignisorientierte Programmierung
I Anwendungsbeispiele mit VBA in Word und Excel
Statistik und Grafiken mit R
I Einf¨uhrung in die Statistiksoftware R
I Wiederholung grundlegender Konzepte der Statistik und Datenanalyse
I Datenvisualisierung und Datenanalyse in R an ausgew¨ahlten Fallstudien
Visual Basic for Applications (VBA)
I Skriptsprache zur Automatisierung und Anpassung von Microsoft Office Programmen
I Basiert auf der Syntax von Visual Basic (nicht mehr kompatibel seit VB.NET)
I Propriet¨arer Microsoft-Standard
I Modul-orientiert und prozedural
Literaturhinweis
VBA-Programmierung - Integrierte L¨osungen mit Office 2010, 1.
Auflage, Okt 2010 (erh¨altlich im Rechenzentrum bzw.
HERDT-Verlag)
Typische Einsatzgebiete
I Automatisiertes Erzeugen von Dokumenten wie Serienbriefen
I Benutzerdefinierte Dialogfenster oder Fehlermeldungen
I Dokumentstatistiken erstellen
I Daten aus anderen Anwendungen einbinden (insbesondere Access-Datenbanken)
I Einbinden von Funktionalit¨at spezifischer Office-Anwendungen (integrierte L¨osungen)
I Umsatz- und Budgetzahlen aus einer Access-Datenbank werden in Excel ausgewertet und visualisiert.
I Umfangreiche Excel-Tabellen k¨onnen ¨uber Word kompakt gedruckt werden.
Microsoft Office-Anwendungen
Word Textverarbeitung, Seriendruck
Excel Tabellenkalkulation, Formeln, Diagramme Access Relationale
Datenbanken, Formulare
PowerPoint Folienpr¨asentation, Begleitmaterial Outlook E-Mail,
Terminplanung, Adressb¨ucher
Die VBA-Entwicklungsumgebung
Elemente der VBA-Entwicklungsumgebung
Editor, Werkzeuge, Projektverwaltung
Projekt-Explorer gibt eine hierarchisch geordnete ¨Ubersicht von allen Elemente eines Projekts.
Eigenschaftenfenster listet die Eigenschaften und aktuellen Eigenschaftswerte des markierten Elements.
Code-Fenster/Modulfenster dient zum Eingeben und Bearbeiten des Programmcodes.
Direktfenster erlaubt es einzelne Anweisungen direkt auszuf¨uhren.
Lokal-Fenster zeigt die Werte aller lokaler Variablen im Debug-Modus an.
Module
I VBA-Programme bestehen aus einer Kombination von Modulen.
I Jedes Modul enth¨alt Deklarationen von Konstanten, Variablen und Prozeduren.
Standardmodule sind f¨ur ein gesamtes Projekt g¨ultig.
Klassenmodule definieren ein neues Objekt mit
zugeh¨origen Eigenschaften und Methoden.
Dokumentenmodule sind an ein konkretes Dokument gebunden.
UserForm-Dialoge geh¨oren zu einem benutzerdefinierten Formular und beinhalten die zugeh¨origen Ereignisprozeduren.
Organisation von Modulen
I Module k¨onnen an ganze Dateien oder an einzelne Dateielemente gebunden werden.
I Gruppieren Sie Prozeduren, die zusammen geh¨oren, in jeweils eigene Module!
I Benennen Sie Module mit aussagekr¨aftigen Namen (z.B.
Verwaltung oderDokumentstatistik) statt der automatisch erzeugten NamenModul1,Modul2, etc. !
I Module k¨onnen exportiert und importiert werden. Beim Exportieren werden sie in Textdateien mit der Dateiendung
*.bas gespeichert.
Sub-Prozeduren
I Sub-Prozeduren bestehen aus einer Folge von Anweisungen (z.B. Zuweisungen von Variablen, Prozeduraufrufen, Verzweigungen, Schleifen, ...)
I Syntax von einfachen Sub-Prozeduren
Sub P r o z e d u r n a m e () ...
End Sub
I Syntax von Prozeduraufrufen (ohne Parameter)
P r o z e d u r n a m e C a l l P r o z e d u r n a m e
Prozedurnamen und andere Bezeichner
I Bezeichner sind frei w¨ahlbare Namen, mit denen Prozeduren, Variablen und Konstanten benannt werden.
I Sie d¨urfen nicht mit Schl¨usselw¨ortern ¨ubereinstimmen.
I Sie m¨ussen mit einem Buchstaben beginnen und k¨onnen bis zu 255 Buchstaben, Zahlen oder Unterstriche enthalten, jedoch keine Punkte oder Leerzeichen.
I VBA ist nichtcase sensitive, d.h. Groß- und Kleinschreibung werden nicht unterschieden.
I Bezeichner sollten eindeutig und aussagekr¨aftig sein!
Beispiel: Meldungsfenster mit allgemeiner Information
’ I n f o r m a t i o n zu D a t u m und A n w e n d u n g Sub A l l g e m e i n e I n f o ()
M s g B o x " H e u t e ist " & D a t e & " und Sie a r b e i t e n mit " &
A p p l i c a t i o n .N a m e End Sub
I Kommentare beginnen mit ’.
I Mit & werden Zeichenketten (Strings) zusammengef¨ugt (Konkatenation).
I Date liefert das Datum des heutigen Tages.
I Auf Eigenschaften von Objekten (wie z.B.Application) wird mit .zugegriffen.
Meldungsfenster
I Meldungsfenster k¨onnen dazu genutzt werden, dem Benutzer Informationen mitzuteilen und auch abzufragen. Sie bestehen aus demMeldungstext und standardm¨aßig der Schaltfl¨ache
“OK”. Sie kann optional mit einem Titel,
Informationssymbolen und weiteren Schaltfl¨achen erg¨anzt werden.
I Einfaches Meldungsfenster
M s g B o x " M e l d u n g s t e x t "
I Meldungsfenster mit Titel und Informationssymbol
M s g B o x " M e l d u n g s t e x t ", v b I n f o r m a t i o n , " T i t e l "
I Andere Symbole: vbCritical,vbQuestion,vbExclamation
Meldungsfenster mit R¨ uckgabewert
I Uber¨ Schaltfl¨achen (Buttons)kann der Benutzer die Anwendung interaktiv steuern.
E r g e b n i s w e r t = M s g B o x (" T e x t ", B u t t o n s + Symbole , "
T i t e l ")
I Mit R¨uckgabewert werden die Parameter in Klammern angegeben!
I Um Schaltfl¨achen mit Symbolen zu kombinieren, werden diese mit +addiert.
Ubersicht: Schaltfl¨ ¨ achen
Konstante Wert Schaltfl¨ache
vbOkOnly 0 OK
vbOkCancel 1 OK und Abbrechen
vbAbortRetryIgnore 2 Abbrechen, Wiederholen und Ignorieren
vbYesNoCancel 3 Ja, Nein und Abbrechen
vbYesNo 4 Ja und Nein
vbRetryCancel 5 Wiederholen und Abbrechen
Die Verwendung der Konstanten ist aussagekr¨aftiger als die der Werte:
M s g B o x " Das ist ein T e s t ", 0 , " Das ist der T i t e l "
M s g B o x " Das ist ein T e s t ", v b O k O n l y , " Das ist der T i t e l "
Ubersicht: R¨ ¨ uckgabewerte von Schaltfl¨ achen
Konstante Wert gew¨ahlte Schaltfl¨ache
vbOk 1 OK
vbCancel 2 Abbrechen
vbAbort 3 Abbrechen
vbRetry 4 Wiederholen
vbIgnore 5 Ignorieren
vbYes 6 Ja
vbNo 7 Nein
Beispiel: Verwendung von Schaltfl¨ achen
’ A b f r a g e von E s s e n s g e w o h n h e i t e n Sub E s s e n s g e w o h n h e i t e n ()
W a h l = M s g B o x(" W a r e n Sie h e u t e in der M e n s a e s s e n ? ", v b Y e s N o + v b Q u e s t i o n , " E s s e n s g e w o h n h e i t e n ") If W a h l = v b Y e s T h e n
M s g B o x " Ein M e n s a b e s u c h e r ! "
E l s e ’ W a h l = v b N o
M s g B o x " Ein H o b b y k o c h ! "
End If End Sub
Verzweigungen
I Bei Verzweigungen werden Programmteile abh¨angig von einer Bedingung ausgewertet.
I Einseitige Auswahl
If A u s d r u c k T h e n ...
End If
If T e m p e r a t u r >= -3 T h e n M s g B o x " G e f r i e r s c h r a n k
d e f e k t "
End If
I Zweiseitige Auswahl
If A u s d r u c k T h e n ...
E l s e ...
End If
If A l t e r >= 18 T h e n M s g B o x " N o r m a l t a r i f "
E l s e
M s g B o x " J u g e n d t a r i f "
End If
Verzweigungen
Mehrstufige Auswahl
If A u s d r u c k 1 T h e n ...
E l s e I f A u s d r u c k 2 T h e n ...
E l s e I f A u s d r u c k 3 T h e n ...
E l s e ...
End If
If T e m p e r a t u r < 0 T h e n M s g B o x " F r o s t ! "
E l s e I f T e m p e r a t u r < 20 T h e n M s g B o x "
D u r c h s c h n i t t s t e m p e r a t u r
"
E l s e I f T e m p e r a t u r < 30 T h e n M s g B o x " S o m m e r f e e l i n g "
E l s e
M s g B o x " H i t z e w e l l e ! "
End If
Variablen
I Mit Hilfe von Variablen kann man (tempor¨ar) Werte speichern und diese in den Prozeduren verwenden.
I Der Wert einer Variablen kann durch eine Zuweisung ver¨andert werden.
I Variablen werden ¨uber Bezeichner (Variablennamen) referenziert.
I Die Deklarationeiner Variablen ist das Vereinbaren einer Variablen vor ihrem ersten Gebrauch.
Dim V a r i a b l e n n a m e As D a t e n t y p e
I Beispiele:
Dim A n z a h l As I n t e g e r Dim A u s g a b e T e x t As S t r i n g
Dim A l t e r As Integer, T e m p e r a t u r As I n t e g e r Dim G e s t e r n As D a t e
Deklaration und Sichtbarkeit von Variablen
I Variablen, die im Deklarationsteil zu Beginn eines deklariert werden, sind im gesamten Modul g¨ultig.
I Variablen, die am Anfang einer Prozedur deklariert werden, sind nur innerhalb der Prozedur g¨ultig.
I VBA erlaubt die implizite und explizite Deklaration von Variablen.
Implizite Deklaration
I Variablen m¨ussen vor ihrer ersten Verwendung nicht deklariert werden.
Explizite Deklaration
I Variablen m¨ussen vor ihrer ersten Verwendung
deklariert werden.
I Angabe von Option Explicit
zu Beginn des Moduls erforderlich.
Beispiel: Verwendung von Variablen
’ D a u e r des S e m e s t e r s Sub A n z a h l T a g e ()
Dim H e u t e As Date, S e m e s t e r e n d e As Date, A u s g a b e As S t r i n g
H e u t e = D a t e
S e m e s t e r e n d e = D a t e V a l u e(" 2 5 . 0 7 . 2 0 1 4 ")
A u s g a b e = " Bis zum E n d e der V o r l e s u n g s z e i t s i n d es n o c h " & D a t e D i f f(" d ", Heute , S e m e s t e r e n d e ) & "
T a g e . "
M s g B o x A u s g a b e End Sub
I Date ist der Datentyp f¨ur ein Datum
I DateValue berechnet f¨ur eine Datum im String-Format den Wert im Datumsformat
I DateDiff liefert die Differenz in Tagen ("d") f¨ur zwei Datumswerte.
Zusammenfassung
I Allgemeine Informationen zu VBA und Microsoft Office
I VBA-Entwicklungsumgebung
I Interaktion mit dem Benutzer ¨uber Meldungsfenster
I Programmieren in VBA
I Module
I Prozeduren
I Anweisungen (einfache Prozeduraufrufe, Kontrollstrukturen:
Verzweigungen, Zuweisungen)
I Variablen
Ausblick
In der n¨achsten Vorlesung:
I Funktionen
I Datentypen
I Ausdr¨ucke (Konstanten, Operatoren)
I Kontrollstrukturen: Fallauswahl und Schleifen
Datentypen
I Der Datentyp definiert die Art sowie den Wertebereich einer Variablen oder Konstanten.
I Abh¨angig vom Datentyp wird Speicherplatz f¨ur Variablen bzw.
Konstanten reserviert.
I Bei impliziten Deklarationen wird in VBA der DatentypVariant
verwendet.
Ubersicht: Datentypen ¨
Integer % Ganze Zahlen -32.768 bis 32.767
Long & Ganze Zahlen -2.147.483.648 bis 2.147.483.647
Single ! Fliesskommazahlen 7 Ziffern Genauigkeit
Double # Fliesskommazahlen 15 Ziffern Genauigkeit
Currency @ Fliesskommazahlen 15 Vor- und 4 Nachkommastellen
String $ Zeichenketten bis zu 65.535 Zeichen
Date Datum und Uhrzeit
Boolean Logische Werte Trueund False
Variant Double,Stringoder Date
Datentypen in Variablendeklarationen
Dim V a r N a m e 1 As D a t e n t y p 1 , V a r N a m e 2 as D a t e n t y p 2 , ...
Dim V a r N a m e 1 T y p k e n n z e i c h e n , V a r N a m e 2 T y p k e n n z e i c h e n , ...
Beispiele:
Dim A l t e r As Integer, N a m e as S t r i n g Dim K u n d e n n u m m e r & , R e c h n u n g s b e t r a g @
I Numerische Variablen werden mit 0 initialisiert.
I Variant-Variablen werden mitEmpty initialisiert.
I String-Variablen werden mit “” (leerer String) initialisiert.
Umgang mit Datentypen
Sub E r m i t t l e M o n a t 1 () Dim s t r W e r t As S t r i n g
s t r W e r t = " 2 4 . 1 2 . 2 0 1 2 "
M s g B o x " M o n a t : " & Mid( strWert , 4 , 2) End Sub
Funktioniert nicht bei"strWert = "1.1.2012"!
Sub E r m i t t l e M o n a t 2 () Dim d a t W e r t As D a t e
d a t W e r t = # 1 2 / 2 4 / 2 0 1 2 #
M s g B o x " M o n a t : " & M o n t h( d a t W e r t ) End Sub
Umgang mit Datentypen
Sub E r m i t t l e M o n a t 1 () Dim s t r W e r t As S t r i n g
s t r W e r t = " 2 4 . 1 2 . 2 0 1 2 "
M s g B o x " M o n a t : " & Mid( strWert , 4 , 2) End Sub
Funktioniert nicht bei"strWert = "1.1.2012"!
Sub E r m i t t l e M o n a t 2 () Dim d a t W e r t As D a t e
d a t W e r t = # 1 2 / 2 4 / 2 0 1 2 #
M s g B o x " M o n a t : " & M o n t h( d a t W e r t ) End Sub
Umgang mit Datentypen
Sub E r m i t t l e M o n a t 1 () Dim s t r W e r t As S t r i n g
s t r W e r t = " 2 4 . 1 2 . 2 0 1 2 "
M s g B o x " M o n a t : " & Mid( strWert , 4 , 2) End Sub
Funktioniert nicht bei"strWert = "1.1.2012"!
Sub E r m i t t l e M o n a t 2 () Dim d a t W e r t As D a t e
d a t W e r t = # 1 2 / 2 4 / 2 0 1 2 #
M s g B o x " M o n a t : " & M o n t h( d a t W e r t ) End Sub