36
Programmieren in Anwendungen Annette Bieniusa Technische Universit¨ at Kaiserslautern [email protected] 24.04.2014 1 / 36

Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

Embed Size (px)

Citation preview

Page 1: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

Programmieren in Anwendungen

Annette Bieniusa

Technische Universitat Kaiserslautern

[email protected]

24.04.2014

1 / 36

Page 2: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

Uberblick

Organisatorisches

Einfuhrung in VBAWas ist VBA?EntwicklungsumgebungArbeiten mit Makros

2 / 36

Page 3: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 4: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 5: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 6: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 7: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 8: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 9: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 10: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 11: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

Microsoft Office-Anwendungen

Word Textverarbeitung,Seriendruck

Excel Tabellenkalkulation,Formeln, Diagramme

Access RelationaleDatenbanken,Formulare

PowerPoint Folienprasentation,Begleitmaterial

Outlook E-Mail,Terminplanung,Adressbucher

11 / 36

Page 12: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

Die VBA-Entwicklungsumgebung

12 / 36

Page 13: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 14: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 15: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 16: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 17: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 18: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 19: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 20: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 21: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 22: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 23: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 24: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 25: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 26: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 27: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 28: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 29: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 30: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

Ausblick

In der nachsten Vorlesung:

I Funktionen

I Datentypen

I Ausdrucke (Konstanten, Operatoren)

I Kontrollstrukturen: Fallauswahl und Schleifen

30 / 36

Page 31: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 32: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 33: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 34: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 35: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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

Page 36: Programmieren in Anwendungen - AG Softech · kompatibel seit VB.NET) I ... I Modul-orientiert und prozedural Literaturhinweis VBA-Programmierung - Integrierte L osungen mit O ce 2010,

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