Upload
dangtuyen
View
217
Download
0
Embed Size (px)
Citation preview
Programmieren in Anwendungen
Annette Bieniusa
Technische Universitat Kaiserslautern
24.04.2014
1 / 36
Uberblick
Organisatorisches
Einfuhrung in VBAWas ist VBA?EntwicklungsumgebungArbeiten mit Makros
2 / 36
Administratives
I Homepage mit Informationen und Materialhttp://softech.informatik.uni-kl.de/Homepage/PIA SS14
I Vorlesung: donnerstags, 17:15 - 19:00, in Raum 52-207
I Saalubung: freitags, Fr 13:45h - 15:15h, in Raum 48-379
I Wenn moglich, Raumwechsel in Terminalraum 32-411
I Flexibler Wechsel zwischen Vorlesung und Ubung wegen dervielen Feiertage im Sommersemester
I Bitte im KIS anmelden, um aktuelle Informationen per Emailzu erhalten!
3 / 36
Fragen uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?I Informatik-VorlesungenI ProgrammierkurseI Einfuhrung in Statistik oder Wahrscheinlichkeitsrechnung
I Konnen Sie selbstandig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
4 / 36
Fragen uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?I Informatik-VorlesungenI ProgrammierkurseI Einfuhrung in Statistik oder Wahrscheinlichkeitsrechnung
I Konnen Sie selbstandig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
5 / 36
Fragen uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?I Informatik-VorlesungenI ProgrammierkurseI Einfuhrung in Statistik oder Wahrscheinlichkeitsrechnung
I Konnen Sie selbstandig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
6 / 36
Fragen uber Fragen
I Vorwissen: Welche Veranstaltungen haben Sie bisher besucht?I Informatik-VorlesungenI ProgrammierkurseI Einfuhrung in Statistik oder Wahrscheinlichkeitsrechnung
I Konnen Sie selbstandig arbeiten?
I Abschluss: Klausur oder Projektausarbeitung?
I Was erwarten Sie von dieser Veranstaltung?
7 / 36
Themen
Visual Basic for Applications(VBA)
I Wiederholung grundlegender Konzepte der imperativenProgrammierung anhand der Programmiersprache VB (VisualBasic)
I Einfuhrung in die ereignisorientierte Programmierung
I Anwendungsbeispiele mit VBA in Word und Excel
Statistik und Grafiken mit R
I Einfuhrung in die Statistiksoftware R
I Wiederholung grundlegender Konzepte der Statistik undDatenanalyse
I Datenvisualisierung und Datenanalyse in R an ausgewahltenFallstudien
8 / 36
Visual Basic for Applications (VBA)
I Skriptsprache zur Automatisierung und Anpassung vonMicrosoft Office Programmen
I Basiert auf der Syntax von Visual Basic (nicht mehrkompatibel seit VB.NET)
I Proprietarer Microsoft-Standard
I Modul-orientiert und prozedural
LiteraturhinweisVBA-Programmierung - Integrierte Losungen mit Office 2010, 1.Auflage, Okt 2010 (erhaltlich im Rechenzentrum bzw.HERDT-Verlag)
9 / 36
Typische Einsatzgebiete
I Automatisiertes Erzeugen von Dokumenten wie Serienbriefen
I Benutzerdefinierte Dialogfenster oder Fehlermeldungen
I Dokumentstatistiken erstellen
I Daten aus anderen Anwendungen einbinden (insbesondereAccess-Datenbanken)
I Einbinden von Funktionalitat spezifischer Office-Anwendungen(integrierte Losungen)
I Umsatz- und Budgetzahlen aus einer Access-Datenbankwerden in Excel ausgewertet und visualisiert.
I Umfangreiche Excel-Tabellen konnen uber Word kompaktgedruckt werden.
10 / 36
Microsoft Office-Anwendungen
Word Textverarbeitung,Seriendruck
Excel Tabellenkalkulation,Formeln, Diagramme
Access RelationaleDatenbanken,Formulare
PowerPoint Folienprasentation,Begleitmaterial
Outlook E-Mail,Terminplanung,Adressbucher
11 / 36
Die VBA-Entwicklungsumgebung
12 / 36
Elemente der VBA-Entwicklungsumgebung
Editor, Werkzeuge, Projektverwaltung
Projekt-Explorer gibt eine hierarchisch geordnete Ubersichtvon allen Elemente eines Projekts.
Eigenschaftenfenster listet die Eigenschaften und aktuellenEigenschaftswerte des markiertenElements.
Code-Fenster/Modulfenster dient zum Eingeben und Bearbeiten desProgrammcodes.
Direktfenster erlaubt es einzelne Anweisungen direktauszufuhren.
Lokal-Fenster zeigt die Werte aller lokaler Variablen imDebug-Modus an.
13 / 36
Module
I VBA-Programme bestehen aus einer Kombination vonModulen.
I Jedes Modul enthalt Deklarationen von Konstanten, Variablenund Prozeduren.
Standardmodule sind fur ein gesamtes Projekt gultig.
Klassenmodule definieren ein neues Objekt mitzugehorigen Eigenschaften und Methoden.
Dokumentenmodule sind an ein konkretes Dokumentgebunden.
UserForm-Dialoge gehoren zu einem benutzerdefiniertenFormular und beinhalten die zugehorigenEreignisprozeduren.
14 / 36
Organisation von Modulen
I Module konnen an ganze Dateien oder an einzelneDateielemente gebunden werden.
I Gruppieren Sie Prozeduren, die zusammen gehoren, in jeweilseigene Module!
I Benennen Sie Module mit aussagekraftigen Namen (z.B.Verwaltung oder Dokumentstatistik) statt derautomatisch erzeugten Namen Modul1, Modul2, etc. !
I Module konnen exportiert und importiert werden. BeimExportieren werden sie in Textdateien mit der Dateiendung*.bas gespeichert.
15 / 36
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 Prozedurname ()
...
End Sub
I Syntax von Prozeduraufrufen (ohne Parameter)
Prozedurname
Call Prozedurname
16 / 36
Prozedurnamen und andere Bezeichner
I Bezeichner sind frei wahlbare Namen, mit denen Prozeduren,Variablen und Konstanten benannt werden.
I Sie durfen nicht mit Schlusselwortern ubereinstimmen.
I Sie mussen mit einem Buchstaben beginnen und konnen biszu 255 Buchstaben, Zahlen oder Unterstriche enthalten,jedoch keine Punkte oder Leerzeichen.
I VBA ist nicht case sensitive, d.h. Groß- und Kleinschreibungwerden nicht unterschieden.
I Bezeichner sollten eindeutig und aussagekraftig sein!
17 / 36
Beispiel: Meldungsfenster mit allgemeiner Information
’Information zu Datum und Anwendung
Sub AllgemeineInfo ()
MsgBox "Heute ist " & Date & " und Sie arbeiten mit " &
Application.Name
End Sub
I Kommentare beginnen mit ’.
I Mit & werden Zeichenketten (Strings) zusammengefugt(Konkatenation).
I Date liefert das Datum des heutigen Tages.
I Auf Eigenschaften von Objekten (wie z.B. Application) wirdmit . zugegriffen.
18 / 36
Meldungsfenster
I Meldungsfenster konnen dazu genutzt werden, dem BenutzerInformationen mitzuteilen und auch abzufragen. Sie bestehenaus dem Meldungstext und standardmaßig der Schaltflache“OK”. Sie kann optional mit einem Titel,Informationssymbolen und weiteren Schaltflachen erganztwerden.
I Einfaches Meldungsfenster
MsgBox "Meldungstext"
I Meldungsfenster mit Titel und Informationssymbol
MsgBox "Meldungstext", vbInformation , "Titel"
I Andere Symbole: vbCritical, vbQuestion, vbExclamation
19 / 36
Meldungsfenster mit Ruckgabewert
I Uber Schaltflachen (Buttons) kann der Benutzer dieAnwendung interaktiv steuern.
Ergebniswert = MsgBox ("Text", Buttons + Symbole , "
Titel")
I Mit Ruckgabewert werden die Parameter in Klammernangegeben!
I Um Schaltflachen mit Symbolen zu kombinieren, werden diesemit + addiert.
20 / 36
Ubersicht: Schaltflachen
Konstante Wert Schaltflache
vbOkOnly 0 OKvbOkCancel 1 OK und AbbrechenvbAbortRetryIgnore 2 Abbrechen, Wiederholen und IgnorierenvbYesNoCancel 3 Ja, Nein und AbbrechenvbYesNo 4 Ja und NeinvbRetryCancel 5 Wiederholen und Abbrechen
Die Verwendung der Konstanten ist aussagekraftiger als die derWerte:
MsgBox "Das ist ein Test", 0, "Das ist der Titel"
MsgBox "Das ist ein Test", vbOkOnly , "Das ist der Titel"
21 / 36
Ubersicht: Ruckgabewerte von Schaltflachen
Konstante Wert gewahlte Schaltflache
vbOk 1 OKvbCancel 2 AbbrechenvbAbort 3 AbbrechenvbRetry 4 WiederholenvbIgnore 5 IgnorierenvbYes 6 JavbNo 7 Nein
22 / 36
Beispiel: Verwendung von Schaltflachen
’Abfrage von Essensgewohnheiten
Sub Essensgewohnheiten ()
Wahl = MsgBox("Waren Sie heute in der Mensa essen?",
vbYesNo + vbQuestion , "Essensgewohnheiten")
If Wahl = vbYes Then
MsgBox "Ein Mensabesucher!"
Else ’Wahl = vbNo
MsgBox "Ein Hobbykoch!"
End If
End Sub
23 / 36
Verzweigungen
I Bei Verzweigungen werden Programmteile abhangig von einerBedingung ausgewertet.
I Einseitige Auswahl
If Ausdruck Then
...
End If
If Temperatur >= -3 Then
MsgBox "Gefrierschrank
defekt"
End If
I Zweiseitige Auswahl
If Ausdruck Then
...
Else
...
End If
If Alter >= 18 Then
MsgBox "Normaltarif"
Else
MsgBox "Jugendtarif"
End If
24 / 36
Verzweigungen
Mehrstufige Auswahl
If Ausdruck1 Then
...
ElseIf Ausdruck2 Then
...
ElseIf Ausdruck3 Then
...
Else
...
End If
If Temperatur < 0 Then
MsgBox "Frost!"
ElseIf Temperatur < 20 Then
MsgBox "
Durchschnittstemperatur
"
ElseIf Temperatur < 30 Then
MsgBox "Sommerfeeling"
Else
MsgBox "Hitzewelle!"
End If
25 / 36
Variablen
I Mit Hilfe von Variablen kann man (temporar) Werte speichernund diese in den Prozeduren verwenden.
I Der Wert einer Variablen kann durch eine Zuweisungverandert werden.
I Variablen werden uber Bezeichner (Variablennamen)referenziert.
I Die Deklaration einer Variablen ist das Vereinbaren einerVariablen vor ihrem ersten Gebrauch.
Dim Variablenname As Datentype
I Beispiele:
Dim Anzahl As Integer
Dim AusgabeText As String
Dim Alter As Integer , Temperatur As Integer
Dim Gestern As Date
26 / 36
Deklaration und Sichtbarkeit von Variablen
I Variablen, die im Deklarationsteil zu Beginn eines deklariertwerden, sind im gesamten Modul gultig.
I Variablen, die am Anfang einer Prozedur deklariert werden,sind nur innerhalb der Prozedur gultig.
I VBA erlaubt die implizite und explizite Deklaration vonVariablen.
Implizite Deklaration
I Variablen mussen vor ihrerersten Verwendung nichtdeklariert werden.
Explizite Deklaration
I Variablen mussen vor ihrerersten Verwendungdeklariert werden.
I Angabe von Option Explicit
zu Beginn des Modulserforderlich.
27 / 36
Beispiel: Verwendung von Variablen
’Dauer des Semesters
Sub AnzahlTage ()
Dim Heute As Date , Semesterende As Date , Ausgabe As
String
Heute = Date
Semesterende = DateValue("25.07.2014")
Ausgabe = "Bis zum Ende der Vorlesungszeit sind es
noch " & DateDiff("d", Heute , Semesterende) & "
Tage."
MsgBox Ausgabe
End Sub
I Date ist der Datentyp fur ein Datum
I DateValue berechnet fur eine Datum im String-Format denWert im Datumsformat
I DateDiff liefert die Differenz in Tagen ("d") fur zweiDatumswerte.
28 / 36
Zusammenfassung
I Allgemeine Informationen zu VBA und Microsoft Office
I VBA-Entwicklungsumgebung
I Interaktion mit dem Benutzer uber MeldungsfensterI Programmieren in VBA
I ModuleI ProzedurenI Anweisungen (einfache Prozeduraufrufe, Kontrollstrukturen:
Verzweigungen, Zuweisungen)I Variablen
29 / 36
Ausblick
In der nachsten Vorlesung:
I Funktionen
I Datentypen
I Ausdrucke (Konstanten, Operatoren)
I Kontrollstrukturen: Fallauswahl und Schleifen
30 / 36
Datentypen
I Der Datentyp definiert die Art sowie den Wertebereich einerVariablen oder Konstanten.
I Abhangig vom Datentyp wird Speicherplatz fur Variablen bzw.Konstanten reserviert.
I Bei impliziten Deklarationen wird in VBA der Datentyp Variant
verwendet.
31 / 36
Ubersicht: Datentypen
Integer % Ganze Zahlen -32.768 bis 32.767Long & Ganze Zahlen -2.147.483.648 bis 2.147.483.647Single ! Fliesskommazahlen 7 Ziffern GenauigkeitDouble # Fliesskommazahlen 15 Ziffern GenauigkeitCurrency @ Fliesskommazahlen 15 Vor- und 4 NachkommastellenString $ Zeichenketten bis zu 65.535 ZeichenDate Datum und UhrzeitBoolean Logische Werte True und False
Variant Double, String oder Date
32 / 36
Datentypen in Variablendeklarationen
Dim VarName1 As Datentyp1 , VarName2 as Datentyp 2, ...
Dim VarName1Typkennzeichen , VarName2Typkennzeichen , ...
Beispiele:
Dim Alter As Integer , Name as String
Dim Kundennummer&, Rechnungsbetrag@
I Numerische Variablen werden mit 0 initialisiert.
I Variant-Variablen werden mit Empty initialisiert.
I String-Variablen werden mit “” (leerer String) initialisiert.
33 / 36
Umgang mit Datentypen
Sub ErmittleMonat1 ()
Dim strWert As String
strWert = "24.12.2012"
MsgBox "Monat: " & Mid(strWert , 4, 2)
End Sub
Funktioniert nicht bei "strWert = "1.1.2012"!
Sub ErmittleMonat2 ()
Dim datWert As Date
datWert = #12/24/2012#
MsgBox "Monat: " & Month(datWert)
End Sub
34 / 36
Umgang mit Datentypen
Sub ErmittleMonat1 ()
Dim strWert As String
strWert = "24.12.2012"
MsgBox "Monat: " & Mid(strWert , 4, 2)
End Sub
Funktioniert nicht bei "strWert = "1.1.2012"!
Sub ErmittleMonat2 ()
Dim datWert As Date
datWert = #12/24/2012#
MsgBox "Monat: " & Month(datWert)
End Sub
35 / 36
Umgang mit Datentypen
Sub ErmittleMonat1 ()
Dim strWert As String
strWert = "24.12.2012"
MsgBox "Monat: " & Mid(strWert , 4, 2)
End Sub
Funktioniert nicht bei "strWert = "1.1.2012"!
Sub ErmittleMonat2 ()
Dim datWert As Date
datWert = #12/24/2012#
MsgBox "Monat: " & Month(datWert)
End Sub
36 / 36