1 / 73

Objektorientierung mit VBA

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

Olivia
Download Presentation

Objektorientierung mit VBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

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

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

  10. „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.

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

  12. 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.

  13. Leichter Zugriff! 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.

  14. 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 Objekteigenschaften: Caption (Beschriftung der Objekte) Name Selection (das markierte Objekt) Value (Wert/Inhalt, z. B. einer Zelle) Wichtige Objekte: Application (Das gesamte EXCEL-Fenster) Workbook (eine Arbeitsmappe) Worksheet (das einzelne Arbeitsblatt) Range (Zellenbereich oder einzelne Zelle) C.O.

  15. 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.

  16. 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.

  17. 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.

  18. 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.

  19. 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.

  20. Abfragen 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.

  21. If … Else If jahre > 5 Then rueck = beitrag_j * 0.09 Else rueck = beitrag_j * 0.04 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.

  22. Schleifen 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.

  23. 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.

  24. 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.

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

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

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

  28. „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.

  29. 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.

  30. 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.

  31. Klasse: Fertig! 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.

  32. 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.

  33. ... 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.

  34. Die erste eigene Klasse 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. VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

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

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

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

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

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

  40. 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.

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

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

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

  44. Erläuterungen 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! VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

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

  46. 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.

  47. 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.

  48. 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.

  49. Jetzt wird gerechnet! 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.

  50. Tipp Die Klasse: 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 End Function VBA & Objekte Daten&Grund-strukturen Modelle und Modellierung Klassen-Objekte- Beziehungen Übungen COM Quellen C.O.

More Related