Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

VBA für Excel 24.02.2010 Andreas RozekHyMeSys Software & Consulting VBA für Excel eine Einführung in das Programmieren mit Visual Basic for Applications.

Ähnliche Präsentationen


Präsentation zum Thema: "VBA für Excel 24.02.2010 Andreas RozekHyMeSys Software & Consulting VBA für Excel eine Einführung in das Programmieren mit Visual Basic for Applications."—  Präsentation transkript:

1 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel eine Einführung in das Programmieren mit Visual Basic for Applications speziell (aber nicht nur) für Excel unter Windows Andreas Rozek HyMeSys Software & Consulting Brunnenstraße 30/ Böblingen Telefon:(07031) URL:www.Rozek.de

2 VBA für Excel Andreas RozekHyMeSys Software & Consulting Überblick über den Kurs MontagGrundlagen (Syntax & Semantik von VBA) Freitagweiterführende Themen ( , Web, usw.) Verwendung externer Objekte, Sudoku DonnerstagEingabeformulare, Programmentwicklung (Anmeldeformular, Zahlen-Memory) MittwochEreignis-gesteuerte Programmierung Formular- und ActiveX-Steuerelemente DienstagDas Excel-Objektmodell

3 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel Fragen zum gestrigen Tag?

4 VBA für Excel Andreas RozekHyMeSys Software & Consulting Lernziele erreicht? Idealerweise sollten Sie seit dem gestrigen Tag wissen, daß Excel ein Objektmodell anbietet; mit den Excel-Objekten umgehen können; das Objektmodell mithilfe von Objektkatalog und eingebau- ter Hilfe inspizieren können; erste Automatisierungsmakros programmieren können.

5 VBA für Excel Andreas RozekHyMeSys Software & Consulting Lernziele des heutigen Tages Idealerweise sollten Sie am Ende des heutigen Tages wissen, was Ereignis-gesteuerte Programmierung ist; den Unterschied zwischen Formular- und ActiveX- Steuerelementen kennen; Formular- und ActiveX-Steuerelemente einsetzen und programmieren können;

6 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel Teil III: Ereignis-gesteuerte Programmierung

7 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ereignis-gesteuerte Programmierung es werden laufend Ereignisse generiert, z.B. Mausbewegungen Tastendrücke Systemereignisse (CD/SD einlegen, USB-Gerät wechseln) abgeleitete Ereignisse (grafische Benutzeroberfläche) Ereignisse werden in Warteschlange (event queue) abgelegt und der Reihe nach bearbeitet Ereignisbehandlungsroutinen (event handler) müssen/sollten zügig terminieren, da sonst u.U. das System blockiert unter VBA: Abbruch mit Esc bzw. Alt-Break

8 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ereignis-gesteuerte Programmierung (Fortsetzung) z.B. Mausklicks

9 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ereignis-gesteuerte Programmierung (Fortsetzung) Benutzer-definiert bearbeiten Excel-intern bearbeiten Ereignis der Warte- schlange entnehmen Während einer Ereignis- behandlung ist Excel blockiert!

10 VBA für Excel Andreas RozekHyMeSys Software & Consulting Quellen für Ereignisse in Excel Excel-eigene Objekte Application Workbook Worksheet (Chart) QueryTable Steuerelemente Excel-interne Steuerelemente ActiveX Controls

11 VBA für Excel Andreas RozekHyMeSys Software & Consulting Welche Ereignisse erzeugt ein bestimmtes Objekt? Nutzen Sie den Code Editor und die Hilfe

12 VBA für Excel Andreas RozekHyMeSys Software & Consulting Wie schreibt man eine Ereignisroutine? Nutzen Sie den Code Editor der automatisch erzeugte Rumpf enthält ggfs. eine Referenz auf die auslösende Komponente

13 VBA für Excel Andreas RozekHyMeSys Software & Consulting Interessante Ereignisse des Application-Objektes WorkbookBeforeSavevor dem Speichern einer Mappe WorkbookBeforePrintvor dem Ausdrucken einer Mappe WorkbookBeforeClosevor dem Schließen einer Mappe SheetFollowHyperlinkbeim Anklicken eines Hyperlinks SheetChangenach Änderung eines Blattes

14 VBA für Excel Andreas RozekHyMeSys Software & Consulting Interessante Ereignisse des Workbook-Objektes Opennach dem Öffnen Activatenach dem Aktivieren BeforeSavevor dem Speichern BeforePrintvor dem Ausdrucken BeforeClosevor dem Schließen SheetFollowHyperlinkbeim Anklicken eines Hyperlinks NewSheetnach Anlegen eines Blattes SheetChangenach Änderung eines Blattes

15 VBA für Excel Andreas RozekHyMeSys Software & Consulting Interessante Ereignisse des Worksheet-Objektes Activatenach dem Aktivieren Deactivatenach Deaktivierung Calculatenach Neuberechnungen Changenach Änderungen FollowHyperlinknach Anklicken eines Hyperlinks SelectionChangenach Änderung der Selektion

16 VBA für Excel Andreas RozekHyMeSys Software & Consulting Interessante Ereignisse des QueryTable-Objektes BeforeRefreshvor Aktualisierung einer Abfrage AfterRefreshnach Aktualisierung einer Abfrage

17 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel Teil III: Steuerelemente & Eingabeformulare

18 VBA für Excel Andreas RozekHyMeSys Software & Consulting Zwei Varianten von Steuerelementen (Controls) Formular-Steuerelemente kleine, nicht erweiterbare Auswahl geringer Funktionalität in Excel integriert, dadurch stets vorhanden vermutlich Plattform-unabhängig (bitte stets vorher testen) keine Unterscheidung Entwurfsmodus Arbeitsmodus ActiveX-Steuerelemente beliebig erweiterbare Auswahl (Drittanbieter) nicht nur für Excel, für alle (ActiveX-fähigen) Programme sehr vielseitig konfigurierbar, viele mögliche Events

19 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente (Überblick) Bezeichnungen (Label) Schaltflächen (Button) Drehfelder (SpinBox) Kontrollkästchen (Checkbox) Optionsfelder (Radiobutton) Gruppenfelder (Group) Listenfelder (Listbox) Kombinationsfelder (Combobox) Rollbalken (Scrollbar)

20 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente (allg. Arbeitsschritte) Anlegen eines Steuerelementes Steuerelement im Menü wählen mit linker Maustaste auf dem Tabellenblatt Umriß zeichnen im Falle einer Schaltfläche: Makro wählen Bearbeiten eines Steuerelementes mit rechter Maustaste selektieren, danach z.B. Verschieben oder Größe ändern Text bearbeiten Makro zuweisen Steuerelement formatieren

21 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Schaltflächen rufen beim Anklicken das zugewiesene Makro auf Änderung des Erscheinungs- bildes mittels Steuerelement formatieren...

22 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Drehfelder erlauben die Auswahl aus einem Zahlenbereich rufen bei Wertänderung das zugewiesene Makro auf aktueller Wert kann mit Tabellenzelle verknüpft werden (blenden Sie diese Zelle ggfs. aus!)

23 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Rollbalken erlauben die Auswahl aus einem Zahlenbereich rufen bei Wertänderung das zugewiesene Makro auf aktueller Wert kann mit Tabellenzelle verknüpft werden (blenden Sie diese Zelle ggfs. aus!)

24 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Kontrollkästchen erlauben das An- und Abwählen rufen bei Wertänderung das zugewiesene Makro auf aktueller Wert kann mit Tabellenzelle verknüpft werden (blenden Sie diese Zelle ggfs. aus!)

25 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Optionsfelder erlauben das An- und Abwählen eines von mehreren Werten rufen bei Wertänderung das zugewiesene Makro auf aktueller Wert kann mit Tabellenzelle verknüpft werden (blenden Sie diese Zelle ggfs. aus!) ggfs. gruppieren!

26 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Gruppenfelder dienen dem Gruppieren anderer Steuerelemente entweder aus optischen Gründen oder damit Optionsfelder wissen, daß Sie zu- sammengehören!

27 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Kombinationsfelder erlauben die Auswahl aus einer Werteliste rufen bei Wertänderung das zugewiesene Makro auf aktueller Wert kann mit Tabellenzelle verknüpft werden (blenden Sie diese Zelle ggfs. aus!)

28 VBA für Excel Andreas RozekHyMeSys Software & Consulting Formular-Steuerelemente: Listenfelder erlauben die Auswahl eines/(mehrerer) Werte aus einer Liste rufen bei Wertänderung das zugewiesene Makro auf aktueller Wert kann mit Tabellenzelle verknüpft werden (blenden Sie diese Zelle ggfs. aus!)

29 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente (Überblick) Bezeichnungen (Label) Schaltflächen (CommandButton) Umschaltflächen (ToggleButton) Drehfelder (SpinButton) Texteingabefelder (Textbox) ein- und mehrzeilig Kontrollkästchen (Checkbox) Optionsfelder (Radiobutton) Listenfelder (Listbox) Kombinationsfelder (Combobox) Grafikanzeigen (Image) Rollbalken (Scrollbar) und beliebig mehr...

30 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente (allg. Arbeitsschritte) Anlegen eines oder mehrerer Steuerelemente Entwurfsmodus wählen(!) Steuerelement im Menü wählen mit linker Maustaste auf dem Tabellenblatt Umriß zeichnen evtl. weitere Steuerelemente anlegen Bearbeiten eines Steuerelementes z.B. mittels Doppelklick in den Code-Editor wechseln im Eigenschaftenfenster Änderungen vornehmen im Codefenster ggfs. Steuerelement wählen gewünschtes Ereignis wählen und Routine schreiben Verwenden eines Steuerelementes Entwurfsmodus abwählen(!)

31 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente in Excel besitzen ein paar zusätzliche Eigenschaften, u.a. LinkedCellZelle, die aktuellen Wert aufnimmt ListFillRangeZellen, die Listeninhalte vorgeben manche Excel-Methoden sind in Ereignis-Routinen nicht verfügbar: Private Sub CommandButton1.Click Range("a1:a10").Sort Key1:=Range("a1") End Sub Abhilfe: je nach Bedarf Tabellenzelle oder ActiveX-Steuer- element explizit aktivieren: Private Sub CommandButton1.Click Range("a1").Activate Range("a1:a10").Sort Key1:=Range("a1") CommandButton1.Activate End Sub

32 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente in Excel ActiveX-Steuerelemente per Programm hinzufügen ActiveSheet.OLEObjects.Add "Forms.CommandButton.1", _ Left:=10, Top:=10, Height:=20, Width:=100 ActiveX-Steuerelemente sind Bestandteil des Tabellenblattes: ActiveSheet.CommandButton1.Caption = "Click Me und zugleich OLE-Objekte ActiveSheet.OLEObjects(CommandButton1).Caption = "Click Me

33 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Labels dienen der (statischen) Anzeige von Texten (und Bildern), können aber auch auf Mausklicks reagieren wichtige Eigenschaften Name Caption, evtl. Picture Autosize Visible, evtl. BackStyle

34 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Befehlsschaltflächen dienen dem Anstoßen einer Aktion wichtige Eigenschaften: Name Caption, evtl. Picture Enabled

35 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Umschaltflächen springen nach dem Anklicken nicht sofort wieder zurück wichtige Eigenschaften: Name Caption, evtl. Picture Enabled Value, LinkedCell

36 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Drehfelder Auswahl eines Wertes aus einem numerischen Bereich wichtige Eigenschaften: Name Orientation Enabled Value, LinkedCell

37 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Texteingabefelder für ein- oder mehrzeilige Text- eingabe – manchmal auch Anzeige wichtige Eigenschaften: Name MultiLine, Scrollbars Enabled, TextAlign, WordWrap Value oder Text, LinkedCell MaxLength, PasswordChar

38 VBA für Excel Andreas RozekHyMeSys Software & Consulting für einfache Markierungen wichtige Eigenschaften: Name Caption, TextAlign, evtl. WordWrap Enabled, evtl. Picture, Alignment evtl. TripleState Value, LinkedCell ActiveX-Steuerelemente: Kontrollkästchen

39 VBA für Excel Andreas RozekHyMeSys Software & Consulting für Auswahl aus einer statischen Menge, keine Mehrfachauswahl wichtige Eigenschaften: wie Kontrollkästchen, zusätzlich GroupName ActiveX-Steuerelemente: Optionsfelder

40 VBA für Excel Andreas RozekHyMeSys Software & Consulting Anzeige/Auswahl aus einer Liste evtl. Mehrfachauswahl wichtige Eigenschaften: Name ListStyle, MultiSelect, ListFillRange Enabled, IntegralHeight Text oder Value, LinkedCell ActiveX-Steuerelemente: Listenfelder

41 VBA für Excel Andreas RozekHyMeSys Software & Consulting Füllen eines Listenfeldes aus Tabelle (ListFillRange) per Programm: ListBox.AddItem neuer Eintrag Ermitteln der selektierten Werte bei Einfachselektion: ListBox.Value bei Mehrfachselektion: for i = 0 to ListBox.ListCount – 1 if ListBox.Selected(i) then... next Umgang mit Listenfeldern

42 VBA für Excel Andreas RozekHyMeSys Software & Consulting Löschen von Elementen eines Listenfeldes ListBox.RemoveItem (index) ListBox.Clear Anzahl der Elemente eines Listenfeldes ListBox.Count Zugriff auf einzelne Listenelemente ListBox.List (index) Umgang mit Listenfeldern (Fortsetzung)

43 VBA für Excel Andreas RozekHyMeSys Software & Consulting Aufklappmenü (ggfs. editierbar!), Einfachauswahl wichtige Eigenschaften: Name Style(!) ListFillRange Text oder Value, LinkedCell ActiveX-Steuerelemente: Kombinationsfelder

44 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Grafiken Anzeige einer (einfachen) Grafik wichtige Eigenschaften: Name Picture, PictureAlignment, PictureSizeMode, PictureTiling SpecialEffect

45 VBA für Excel Andreas RozekHyMeSys Software & Consulting ActiveX-Steuerelemente: Rollbalken für (kontinuierliche) Auswahl aus einem Zahlenbereich wichtige Eigenschaften: Name Orientation Min/Max SmallChange/LargeChange Value, LinkedCell

46 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel Übungen

47 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen programmieren Sie eine Endlosschleife, starten Sie sie und brechen Sie sie ab Nutzen Sie für die nächsten Übungen Formular-Steuerelemente erstellen Sie ein Drehfeld für Monatsnamen verknüpfen Sie das Steuerelement dazu mit einem (unsichtba- ren) Tabellenfeld und reagieren Sie auf Benutzereingaben, in- dem Sie das Feld auslesen und den zugehörigen Monatsnamen in einem anderen Feld anzeigen erstellen Sie einen Rollbalken (mit passendem Wertebereich) und verwenden Sie den vom Benutzer gewählten Wert als Palettenindex für die Hintergrundfarbe

48 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie ein Kontrollkästchen und lesen Sie den Wert aus erstellen Sie mindestens 2 Optionsfelder, verknüpfen Sie diese mit demselben Tabellenfeld und lesen Sie den Wert aus erstellen Sie ein Ausklappmenü für die Tage einer Woche erstellen Sie eine (Auswahl-)Liste für die Monate eines Jahres

49 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) Ab sofort sollten Sie ActiveX-Steuerelemente verwenden - achten Sie auf den Entwurfsmodus! erstellen Sie einen Label und weisen Sie ihm per Programm einen Wert zu: schreiben Sie zu diesem Zweck eine Ereignis- behandlungsroutine, die bei jedem Klick auf den Label einen Zähler erhöht und diesen im Label selbst anzeigt erstellen Sie ein Drehfeld für Monatsnamen: lesen Sie in der Ereignisbehandlungsroutine den aktuellen Wert aus und zeigen Sie den zugehörigen Monatsnamen an

50 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie einen Rollbalken (mit passendem Wertebereich) und verwenden Sie den vom Benutzer gewählten Wert als Palettenindex für die Hintergrundfarbe erstellen Sie eine Umschaltfläche und setzen Sie diese nach zwei Sekunden per Programm zurück. Das Kommando für die Wartezeit lautet: Application.Wait now() + TimeValue(0:0:2)

51 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie ein Kontrollkästchen und zeigen Sie dessen Wert in der Ereignisbehandlungsroutine an erstellen Sie mindestens zwei Optionsfelder, weisen Sie diesen denselben Gruppennamen zu und finden Sie heraus, welches Optionsfeld zu einem gegebenen Zeitpunkt gesetzt ist erstellen Sie ein Listenfeld mit Einfachauswahl, laden Sie dieses aus einer Tabellenzeile oder -spalte und zeigen Sie das jeweils selektierte Element an erstellen Sie ein Listenfeld mit Mehrfachauswahl und füllen Sie dieses in Ihrem Programm, zeigen Sie die Selektion an

52 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie ein Aufklappmenü, füllen Sie dieses aus der Tabelle und zeigen Sie das ausgewählte Element an erstellen Sie ein Texteingabefeld für max. 10 Zeichen und zeigen Sie den eingegebenen Text an machen Sie daraus ein Feld für Paßworteingaben beschränken Sie die eingebbaren Zeichen auf Ziffern erstellen Sie ein mehrzeiliges Texteingabefeld und belegen Sie dieses mit Bitte geben Sie hier Ihren Text ein vor. Zählen Sie die eingegebenen Zeichen

53 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie ein Bildanzeigefeld und simulieren Sie damit (op- tisch) eine Umschaltfläche programmieren Sie Vanity rückwärts: lassen Sie einen Text eingeben (nur Buchstaben und Leerzeichen) und geben Sie auf Knopfdruck aus, welche Ziffern auf einer Telefontaste gedrückt werden müßten, um die betreffenden Zeichen zu erhalten 1 = 2 = ABC3 = DEF 4 = GHI5 = JKL6 = MNO 7 = PQRS8 = TUV9 = WXYZ 0 = (Leerzeichen)


Herunterladen ppt "VBA für Excel 24.02.2010 Andreas RozekHyMeSys Software & Consulting VBA für Excel eine Einführung in das Programmieren mit Visual Basic for Applications."

Ähnliche Präsentationen


Google-Anzeigen