Objektorientierung mit VBA

Slides:



Advertisements
Ähnliche Präsentationen
Forschungszentrum caesar
Advertisements

Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
10. Grundlagen imperativer Programmiersprachen
Softwareverteilung.
IrfanView starten Doppelklick Es erscheint dieses Fenster.
Objektorientierte Programmierung mit Java unter BlueJ
Objektorientierung mit VBA
Ereignisgesteuerte Programmierung mit VBA
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
ARRAY oder FELD oder VEKTOR
Dynamische Programmierung (2) Matrixkettenprodukt
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Diskrete Mathematik I Vorlesung Arrays-
Zusammenfassung Vorwoche
Teil I - Erstellen einer Excel-Tabelle zur Deckungsbeitragsrechnung
VB .NET Proseminar .NET SS04.
Schiller-Gymnasium Hof Manuel Friedrich OStR, PHP – Variablen und Formulardaten speichern! © 2010 Manuel Friedrich - Wie.
Excel Kurs Teil I Excel starten, Verknüpfungen auf dem Desktop anlegen. F. Bäumer.
Vortrag in DVG 3 Hans Zais Matr. Nr
DVG Klassen und Objekte
© Katharina Brachmann Zusammenfassung © Katharina Brachmann.
Einführung in die Programmierung Datensammlung
Einführung MySQL mit PHP
Presenter: Daniel Walzenbach Technologieberater
Struktogramme IF-ELSE FOR – Schleife
Objektorientierte Modellierung
Fakultät WirtschaftJürgen Guter Dipl. Physiker (Univ.) Microsoft Office Excel 2007 Specialist Zertifizierung Wirtschaftsinformatik Specialist Zertifizierung.
Starbull Daten aktualisieren Anleitung. Outlook Express öffnen, um die Datei ADS.ADR abzurufen.
Druckerinstallation HP1050C
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Excel verschiedene Anwendungen
Excel 97 Einführung - Start -.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Technische Hilfe Datenauswertung
1 Excel 97 und Windows-Grundlagen
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
FORTRAN 77.
Öffnen und Laden Aktenordner Symbol in der Symbolleiste oder in der Menüleiste unter [Datei] [Öffnen] anklicken Laufwerk und Verzeichnis auswählen, auf.
Datenreihen erzeugen –
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Teil 1: VBA Visual Basic for Applications (VBA) von Microsoft ist eine aus dem von Microsoft entwickelten Basic-Dialekt Visual Basic (VB) abgeleitete.
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Purga - Scriptengine Ein Einblick.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Variablen in Programmiersprachen
Blatt nur mit Werten kopieren
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
PHP: Operatoren und Kontrollstrukturen
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Anna Steinke‌ WG13 ‌‌‌ Köln, Wie sichere ich meine Daten? Wie mache ich meinen PC sicher?
Musterlösung zum Arbeitsblatt Nr. 1
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Willkommen zur Ventrilo einstellhife. 1.Zu erst installieren Sie das Programm. 2.Starten Sie das Programm mit Doppelklick auf.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Programmierung mit ArcObjects Frank Münster Proseminar Geoinformation II.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
III c WINF 1 Mag. Edwin Schädler. Symbolleiste für den Schnellzugriff anpassen.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Die programmierte Lösung
Schleifen Datenfelder (Arrays) Verzweigungen
Microsoft Excel S-Verweis Excel: SVerweis.
 Präsentation transkript:

Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis 2007

Agenda VBA und Objekte Daten- u. Grundstrukturen in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen C.O.

Agenda VBA und Objekte Daten- u. Grundstrukturen in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

VBA … … ist eine Programmiersprache … ist in die Office-Anwendungen integriert … erlaubt das Arbeiten mit Objekten … kann als Schnittstelle zu Office, aber auch zu VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Windows - Ressourcen insgesamt benutzt werden C.O.

Wo versteckt sich VBA? Wechsel mit <Alt> <F11> von der Office Anwendung in das VBA – Programmiersystem VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Zurück zur Office Anwendung: Hier klicken C.O.

Zunächst ein „warming up“ VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Einfache Ausgabe - Anweisung 1. Schritt: Excel aufrufen 2. Schritt: Mit <Alt> <F11> in die Programmierumgebung wechseln 3. Schritt: „Diese Arbeitsmappe“ anklicken (Das wird später anders gemacht!) 4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen 5. Schritt: Obiges Programm eingeben 6. Schritt: Mit <F5> Programm starten 7. Schritt: Programm testen, gegebenenfalls korrigieren 8. Schritt: Mit <Alt><F11> zurück zu Excel C.O.

Weitere Möglichkeiten VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Auch hier kann das Programm gestartet werden: ein Klick genügt! … und wenn es mal abgestürzt ist: hier klicken. Und wer es ganz genau wissen will: F8 ist der Einzelschritt-Mode zum Debugen. C.O.

Objekte: Intuitiver Zugang in Word VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Hier klicken! C.O.

Überall Objekte! C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

„Application“ ist der Boss! VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Drücke F1, und das Objekt verrät seine „Geheimnisse“ C.O.

Was das Objekt so hat und kann VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Eigenschaften und Methoden Ausgabe - Anweisung Punkt - Operator: Trennt den Objekt - Namen von der Eigenschaft oder der Methode VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Eigenschaft, hier:Benutzername Methode, jetzt wird gedruckt (Drucker bitte einschalten) C.O.

Leichter Zugriff! Objekt_bezeichner.Methode_1 VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Objekt_bezeichner.Methode_1 Objekt_bezeichner.Eigenschaft_1 Beachte die Ähnlichkeit hinsichtlich des Zugriff auf Record – Komponenten! C.O.

EXCEL - Objekte Mit Hilfe von VBA-Programmen können EXCEL –Tabellen-blätter, Arbeitsmappen, einzelne Zellen oder Zellbereiche verändert werden. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Wichtige Objekte: Application (Das gesamte EXCEL-Fenster) Workbook (eine Arbeitsmappe) Worksheet (das einzelne Arbeitsblatt) Range (Zellenbereich oder einzelne Zelle) Wichtige Objekteigenschaften: Caption (Beschriftung der Objekte) Name Selection (das markierte Objekt) Value (Wert/Inhalt, z. B. einer Zelle) C.O.

Die „Quadratur“ mit VBA Wichtige Objektmethoden: Select (Zelle auswählen) Clear (löschen) Cells (Zugriff auf spezielle Zellen, Cells erwartet eine Zeilen- und Spaltenindex) Close (Applications - Objekt oder Arbeitsmappe schließen) VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Schleifenprogrammierung, Füllen einer EXCEL-Tabelle: Option Explicit Sub quadate() Dim x As Integer Dim i As Integer x = 1 i = -5 Workbooks("Mappe1").Worksheets("Tabelle1").Select Do While i < 6 Cells(x, 1).Select ActiveCell.Value = i Cells(x, 2).Select ActiveCell.Value = i * i x = x + 1 i = i + 1 Loop End Sub quadrate x := 1, i := -5 Tabelle1 auswählen Solange i < 6 Zelle auswählen i in Zelle übertragen Nachbarzelle auswählen i * i in Zelle übertragen Spaltenzähler (=x) und i erhöhen C.O.

Deklaration von Variablen VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Deklaration ist zwingend (kann abgestellt werden) Deklaration zweier Variablen mit Typenangabe Option Explicit Dim net As Double Dim x As Integer C.O.

Arrays Sub selsort() Dim Z(10) As Integer Dim I As Integer Dim K As Integer Dim H As Integer ………… Z(I) = InputBox("Wert: ", I) VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Verbund - Variablen Option Explicit Type record_1 Anum As Integer Abez As String Apreis As Double End Type Sub datensatz() Dim Artikelsatz As record_1 Artikelsatz.Anum = InputBox("Artikelnummer: ") VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Files Open "Artikeldatei" For Output As #1 ……  …… Write #1, Artikeltabelle(I).A_nummer, Artikeltabelle(I).A_bezeichnung, Artikeltabelle(I).A_preis VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Open "Artikeldatei" For Input As #1  …… Input #1, Artikeltabelle(I).A_nummer, Artikeltabelle(I).A_bezeichnung, Artikeltabelle(I).A_preis C.O.

Abfragen C.O. VBA & Objekte Daten&Grund-strukturen Option Explicit   Sub rabatt_1() Dim net As Double Dim brut As Double Const rab = 3 Const mwst = 19 net = InputBox("Nettobetrag: ") If net > 99.99 Then net = net - (net * rab / 100) brut = ((net * mwst) / 100) + net MsgBox ("Rechnungsbetrag BRUTTO " & brut) End Sub VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

If … Else If jahre > 5 Then rueck = beitrag_j * 0.09 Else End If VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Hinweis: Zeilengliederung muss so sein! Ansonsten bei Fortsetzungszeile: In der vorhergehenden Zeile das Zeichen ´_´! C.O.

Schleifen C.O. VBA & Objekte Daten&Grund-strukturen Option Explicit Sub durchschnitt_1() Dim tage As Integer Dim anzahl As Double Dim summe As Double Dim schnitt Dim z As Integer tage = InputBox("Anzahl Tage: ") z = 1 summe = 0 Do While z <= tage anzahl = InputBox("Anzahl Besucher: ", anzahl) summe = anzahl + summe z = z + 1 Loop schnitt = summe / tage MsgBox ("Durchschnitt: " & schnitt) End Sub VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

For - Schleife VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen For i = 1 To j z = (k * p) / 100 t = r - z k = k - t aus = aus & Format(i, "00 ") & Format(z, "0000000.00 ") _ & Format(t, "0000000.00 ") & Format(k, "0000000.00") & vbCrLf Next i Formatierung numerischer Werte (vgl. Prg.: Tilgungsplan) C.O.

Modelle und Modellierung Wirkliche Welt: Autohaus VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Modell: Idealisierte Darstellung (Abbildung) der realen Welt zur Veranschaulichung bestimmter Sachverhalte/Eigenschaften/Prozesse, Vereinfachung der Realität C.O.

Diesen da ... C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

... picken wir uns mal raus… VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

…und untersuchen ihn genauer! VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

„Objektive“ Tatsachen! Kfz Hersteller= „Daihatsu“ Typ= „Terios“ ……… Hubraum= 1495 Farbe= „metallic silber“ ……. VKPreis= 17800,00 VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen „konkretes“ individuelles Fahrzeug „abstrakte“ Darstellung Beachte: Zu jedem Fahrzeug gehört eine Herstellerangabe eine Typenangabe usw. (Gemeinsamkeit); diese Attribute haben je nach Kfz einen unterschiedlichen Inhalt. C.O.

Produktion am Fließband VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs. C.O.

Produktion am Fließband Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl Farbe: Text ……. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs. So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse). C.O.

Klasse: Fertig! Klassenname Attribute Methoden Notation in UML (Unified Modeling Language) Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl Farbe: Text ……. VKPreis: Währung Erfassung() Ändern() Löschen() Drucken() …………… Klassenname Attribute Methoden VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Von der Klasse … „Abstrakter“ Bauplan Kfz Hersteller: Text Typ: Text ……… Hubraum: Ganzzahl Farbe: Text ……. VKPreis: Währung Erfassung() Ändern() Löschen() Drucken() …………… VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

... zum Objekt „Konkretes“ individuelles Fahrzeug :Kfz Hersteller= „Daihatsu“ Typ= „Terios“ ……… Hubraum= 1495 Farbe= „metallic silber“ ……. VKPreis= 17800,00 Erfassung() Ändern() Löschen() Drucken() …………… VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Die erste eigene Klasse VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Die Klasse besitzt drei Attribute und zwei Methoden. Damit lässt sich in der Realität selbstverständlich kein Fahrzeug hinreichend modellieren – es geht jetzt zunächst darum, die Klasse und ein dazu passendes Testprogramm in VBA zu implementieren. C.O.

Klasse erfassen Hier den Menüpunkt „Klassenmodul“ anwählen … C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Hier den Menüpunkt „Klassenmodul“ anwählen … C.O.

Klasse erfassen … und die neue Klasse anlegen. C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen … und die neue Klasse anlegen. C.O.

Klasse erfassen Doppelklick auf „Klasse“... ... und Name ändern (Kfz)! VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Doppelklick auf „Klasse“... ... und Name ändern (Kfz)! C.O.

Klasse erfassen C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Klasse: Erläuterungen VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Klasse: Erläuterungen Private Hersteller Das Attribut „Hersteller“ darf nur von „Verarbei-tungsschritten“ der eigenen Klasse manipuliert wer-den (Kapselung). Das Gegenstück wäre „Public“, wenn die Attribute allerdings dann „von überall“ verändert werden können, ist das Einrichten einer Klasse eigentlich unsinnig. Sub erfassen(her, ty, hub) Sub kennzeichnet eine Methode der Klasse, in den Klammern stehen Platzhalter (Variablen) für die Daten, die von außen (vom Testprogramm) dem Objekt übermittelt werden. Die Verarbeitungs-schritte stehen zwischen Sub und End Sub. Hersteller = her Das Attribut „Hersteller“ erhält den Wert, der in Her von außen an das Attribut übermittelt wurde. Function ErmittleTyp()  Der im Objekt gespeicherte Wert für den Autotyp soll an das Testprogramm zurückgeliefert werden. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Das Testprogramm C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Das Testprogramm Noch besser: Fachkonzept unter „Module“ codieren. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Noch besser: Fachkonzept unter „Module“ codieren. C.O.

Erläuterungen C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Erläuterungen VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Das Testprogramm setzt hier die Werte der Attribute. In der Praxis wäre die Quelle dieser Daten z. B. eine Datenbank. Ein Programm, welches die Daten zu-nächst setzt und dann unmittelbar danach wieder abfragt, ist aus der Sicht der Praxis „unsinnig“. Es wäre eher so, dass ein Programm für die Erfassung der Daten zuständig ist und ein anders für die Weiter-verarbeitung. Das wird auch später so vorgeführt – jetzt geht es zunächst einmal nur darum, den „Mecha-nismus“ zu begreifen. Daher wurde auch die Bezeich-nung „Testprogramm“ gewählt! C.O.

Programmtest Es klappt: C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Es klappt: C.O.

Beziehungen zwischen Klassen/Objekten Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren? VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Beziehungen zwischen Klassen/Objekten Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren? VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Assoziation zwischen Klassen C.O.

Beziehungen zwischen Klassen/Objekten Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren? VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Assoziation zwischen Klassen Eine Methode der Klasse nutzen: Auto1.erfassen a, b, c C.O.

Jetzt wird gerechnet! Aufgabe: VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Aufgabe: Für den Autoteilezubehörshop ist eine ähnliche Klasse wie bei dem vorherigen Beispiel festzulegen. Die Verkaufspreisberechnung funktioniert folgendermaßen: Der VK Preis (netto) ergibt sich aus dem Einkaufspreis multipliziert mit dem Kalkulationsfaktor (Prozentzahl). C.O.

Tipp Die Klasse: C.O. VBA & Objekte Daten&Grund-strukturen Option Explicit Private Artikelnummer As Integer Private Bezeichnung As String Private EK_Preis As Double Private K_Faktor As Double Sub erfassen(EkP As Double) Artikelnummer = 1234 Bezeichnung = "Sitzschoner" K_Faktor = 50 EK_Preis = EkP End Sub Function Ausgeben_Bezeichnung() Ausgeben_Bezeichnung = Bezeichnung End Function Function Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_Preis VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Testprogramm C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Sub Testprg() Dim Autoz As Kfz_Zubehoer Dim bez As String Dim EP As Double Dim VkP As Double Set Autoz = New Kfz_Zubehoer EP = InputBox("Bitte Einkaufspreis eingeben: ") Autoz.erfassen EP MsgBox (Autoz.Ausgeben_Bezeichnung) MsgBox (Autoz.Ermitteln_VK_Preis) Set Auto1 = Nothing End Sub C.O.

Eigenschaftsprozeduren Die letzte Klassendefinition zeigt, dass es offensichtlich zwei „Sorten“ von Methoden gibt. Die eine „Sorte“ ist letztlich nur dafür da, den Objekteigen -schaften Werte zuzuweisen oder diese Werte abzurufen: VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Sub erfassen(EkP As Double) ……………… Function Ausgeben_Bezeichnung() Die zweite „Sorte“ führt kompliziertere Dinge durch, hier die Berechnung eines neuen Wertes aus zwei Eigenschaften/Attributen der Klasse: Function Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_Preis End Function C.O.

Eigenschaftsprozeduren VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Es erscheint sicher sinnvoll, diesen Unterschied in der Implementierung zu Ausdruck zu bringen. Dies erfolgt mit den Eigenschaftsprozeduren Property Let (Wert setzen) Property Get (Wert auslesen). Hierbei handelt es sich um eine Alternative zu den bisherigen Möglichkeiten, Attributwerte zu setzen oder zu lesen. Angesprochen ist also nur die erste „Sorte“ Methoden, für „Function Ermitteln_VK_Preis()“ bleibt alles so, wie bisher. C.O.

Eigenschaftsprozeduren Option Explicit Private mBezeichnung As String Private mEK_Preis As Double Private mK_Faktor As Double Public Property Let Artikelbezeichnung(Bez As String) mBezeichnung = Bez End Property Public Property Let Einkaufspreis(EkP As Double) mEK_Preis = EkP Public Property Let K_Faktor(KF As Double) mK_Faktor = KF Public Property Get Artikelbezeichnung() As String Artikelbezeichnung = mBezeichnung Function Ermitteln_VK_Preis() Ermitteln_VK_Preis = (mEK_Preis * mK_Faktor / 100)+EK_Preis End Function VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Das Testprogramm C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Rabattberechnung C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Jahr Zins (in Euro) Tilgung Restkredit Tilgungsplan VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Es ist ein Programm zu erstellen, welchen den Tilgungsplan eines Kredits ausgibt (Annuitätentilgung). Nach der Eingabe der Kredithöhe, des Zinssatzes, der jährlichen Rückzahlung und der Laufzeit soll eine Tabelle mit folgenden Angaben ausgegeben werden: Jahr Zins (in Euro) Tilgung Restkredit Wird eine Laufzeit < 1 oder größer 15 eingegeben, wird standardmäßig eine Laufzeit von 15 Jahren angenommen. C.O.

Exkurs: API Das Component Object Model (COM) muss im Zusammenhang mit dem Begriff API gesehen werden. API (Abk. für "application programming interface") ist eine Schnittstelle für die Programmierung von Anwendungsprogrammen. Beispiele:  - funktionsorientierte (z. B. Dynamic Link Library, DLL)   - dateiorientierte (z. B. Gerätedateien unter UNIX)  - objektorientierte (z. B. ActiveX-DLLs)   - protokollorientierte (z. B. FTP) u.a. Viele Programmierer verwenden die allgemeine Abkürzung API zur Bezeichnung der speziellen Windows - API (auch WinAPI) => Verwirrung! VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Windows - API Systembibliotheken von Windows Bereitstellung von Windows – Funktionen in VBA Bietet damit eine beträchtliche Erweiterung des Sprache Auf Bibliotheken verteilt Die wichtigsten Bibliotheken sind: Kernal32.dll (z. B. Funktion im I/O – Bereich, Dateisystem …) User32.dll (z. B.: Mauszeiger, Menüs …) GDI32.dll (z. B.: Grafik, Farbe …) VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Windows - API VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Aufgabe: Es ist der Ordner des Windows-Systemverzeichnisses zu ermitteln. Hilfe: Aufruf der API – Funktion „GetWindowsDirectory“ Hinweis: Zur Kontrolle wurde das C-Laufwerk umbenannt. C.O.

Lösung Quellcode: Als Modul anlegen! Testprozedur C.O. Public Declare Function GetWindowsDirectory _ Lib "kernel32" Alias "GetWindowsDirectoryA" ( _ ByVal lpBuffer As String, _ ByVal nSize As Long) As Long Option Explicit Public Function GetWinDir() As String Dim strWinOrdner As String * 255 Dim lngLaenge As Long 'API-Funktion aufrufen: lngLaenge = GetWindowsDirectory(strWinOrdner, _ Len(strWinOrdner)) GetWinDir = Left(strWinOrdner, lngLaenge) End Function Sub Test_GetWinDir() MsgBox "Windows-Ordner: " & GetWinDir End Sub Wie zu erkennen ist, muss hinsichtlich der Parameter sehr „systemnah“ gearbeitet werden. …As string * 255: Zeichenkette mit fester Länge, Grund: Diese API ist in C programmiert. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Testprozedur C.O.

Test C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Weitere Beispiele und Erklärungen, s. A. JANKA (Quellen) C.O.

Component Object Model Das Component Object Model (COM) erlaubt (u. a.) den objektorientierten Zugriff auf Computerdienste mit VBS/VBA. COM ist damit eine spezielle API. In diesem Zusammenhang ist unter Komponente eine compilierte Programmdatei zu verstehen, welche i. d. R. mehrere Klassen enthält. Damit werden die entsprechenden Objekte (z. B. unter VBS, aber auch unter C++, C#, Java oder VB) erzeugt, mit denen z. B. der Zugriff auf Funktionen des Betriebssystems Windows realisiert werden kann. Die folgenden Beispiele orientieren sich an D. JOHLEN (s. Quellen). VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Das Dateisystem als Komponente FileSystemObject Drives getFile(pfad):File moveFile(quellPfad, zielPfad) …………….. File Name DatelastModified parentFolder moveFile(zielPfad) …………….. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Stark vereinfachte Klassenmodelle der COM – Komponente, die für das Dateisystem zuständig ist. Beispiel eines Anwendungsfalls: Eine Datei soll von einem Verzeichnis in ein anderes verschoben werden. Konkret: Die Datei „test1.txt“ im Verzeichnis c:\vz1\ soll in das Verzeichnis c:\vz2\ verschoben werden. C.O. C.O.

Das Dateisystem als Komponente Z1Z2Z3Z4 Set FSObjekt = CreateObject("Scripting.FileSystemObject") Set Datei = FSObjekt.getFile("h:\SE\test1.txt") Datei.move "h:\SX\" MsgBox "Dateien umkopiert!„ VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Z1: Erzeugung des Objektes „FSObjekt“ mit der Methode CreateObject. Als Schnittstellenparameter muss die Klasse „FileSystemObject“ aus dem Paket „Scripting“ angegeben werden. Z2: Erzeugen des Objektes „Datei“ durch das Senden der Nachricht „getFile“. Z3: Senden der Nachricht „move“ (inkl. Parameter) an das Objekt „Datei“. Sowohl für das Modellieren als auch für die Erklärung eines Programms ist diese verbale Ausdrucksweise „ungeschickt“. UML kennt neben den Klassendiagrammen noch viele weitere Modellierungstechniken. Eine Möglichkeite wird nun vorgestellt. C.O. C.O.

Sequenzdiagramm Erklärung: Beispiel: Zubehörshop des Autohauses C.O. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Das Sequenzdiagramm dient (u. a.) der Darstellung, wie Objekte Nachrichten austauschen. Es werden zeitliche Aspekt berücksichtigt. C.O. C.O. C.O.

Unser Beispiel Sequenzdiagramm für den Anwendungsfall „Datei verschieben“ VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen (new) FSObjekt: FileSystemObject Durch getFile wurde ein neues Objekt erzeugt! getFile(…) Datei: File move(…) Folge: Datei ist verschoben! C.O. C.O. C.O.

Wer hat wann zugegriffen? Nochmals zurück zur Klasse „File“: File Name DatelastModified parentFolder moveFile(zielPfad) …………….. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Aufgabe: Auf das Attribut DatelastModified kann direkt (ohne Methode) zugegriffen werden. Erstellen Sie bitte ein Programm, welches das Datum der letzten Änderung einer beliebigen Datei in einem beliebigen Verzeichnis ermittelt und ausgibt (das entsprechende Sequenzdiagramm bitte nicht vergessen). C.O. C.O. C.O.

Lösung der Aufgabe VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen Set FSObjekt = CreateObject("Scripting.FileSystemObject") Set Ordner = FSObjekt.getFolder("c:\SE\") Set Dateien = Ordner.files Set Datei = Dateien.item("test1.txt") MsgBox "Datum des letzten Zugriffs: " & Datei.dateLastModified C.O. C.O.

Ein Tool zur Projektverwaltung Ein Programm erstellt eine HTML – Seite, in der alle Dateien eines Projekt-Verzeichnisses und das Datum des letzten Zugriffs angezeigt werden. Aufgabe: Beschreiben Sie bitte die notwendigen Lösungsschritte verbal. Tipp: Benötigt wird ein Dateisystem, ein Ordner mit Container, eine HTML – Datei, eine Schleife zum Lesen und Schreiben in die Datei… VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O. C.O.

Lösung: Verbal Dateisystemobjekt erzeugen Auf den Ordner zugreifen Auf den Dateicontainer zugreifen HTML - Datei anlegen Eröffnungstags in HTML – Datei schreiben Relevante Dateien im Dateicontainer suchen und schreiben (Schleife!) Endtags schreiben Datei schließen VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O. C.O.

Lösung: VBA - Code C.O. VBA & Objekte Daten&Grund-strukturen Sub htme() 'Dateisystemobjekt erzeugen. Set projektFSO = CreateObject("Scripting.FileSystemObject") 'Auf den Quellordner zugreifen. Set projektOrdner = projektFSO.getFolder("c:\Projekt_VBA") 'Auf den Dateicontainer des Quellordners zugreifen. Set projektDateien = projektOrdner.Files 'Neue index.html Datei anlegen Set projektHTML = projektFSO.CreateTextFile("c:\Projekt_VBAindex.html") 'HTML Eröffnungstags projektHTML.writeLine "<HTML>" projektHTML.writeLine "<h1> Projektordner " & projektOrdner.Name & "</h1>" projektHTML.writeLine "<hr>" projektHTML.writeLine "<BODY>" For Each datei In projektDateien projektHTML.writeLine "<P> <A href=" & datei.Name & ">" & datei.Name & " </A> , zuletzt geändert: " & datei.datelastmodified & " </P> " Next ' HTML Endtags projektHTML.writeLine "</BODY>" projektHTML.writeLine "</HTML>" projektHTML.Close MsgBox "HTML File erzeugt." End Sub VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

Quellen HELD, B. (2000): EXCEL-VBA-Programmierung. - München, Mark und Technik-Verlag JANKA, A. (2005): VBA mit Word. – Bonn, Galileo Computing – Verlag JOHLEN, D. (2004): Anwendungsentwicklung.- Holland + Josenhans-Verlag MARTIN, R. (1999): VBA mit Office 2000 lernen. – Bonn, Addison-Wesley – Verlag VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.