Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

VBA für Excel 25.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 25.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, was Ereignis-gesteuerte Programmierung ist; den Unterschied zwischen Formular- und ActiveX- Steuerelementen kennen; Formular- und ActiveX-Steuerelemente einsetzen und 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 ein Eingabe-Formular (UserForm) ist; UserForms erstellen und benutzen können; auch nicht-triviale Aufgaben wohldurchdacht lösen können;

6 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel Teil IV: Eingabeformulare

7 VBA für Excel Andreas RozekHyMeSys Software & Consulting Eingabeformulare (UserForms) sind eigentlich eigenständige (Eingabe-)Dialoge

8 VBA für Excel Andreas RozekHyMeSys Software & Consulting Eingabeformulare (Fortsetzung) können modal und nicht-modal angezeigt werden modalExcel ist während der Eingabe blockiert nicht-modalBenutzer kann Excel weiterhin bedienen im nicht-modalen Fall: Vorsicht z.B. mit ActiveSheet! können vom Code-Fenster aus getestet werden (F5)

9 VBA für Excel Andreas RozekHyMeSys Software & Consulting Erstellen eines Eingabeformulars im Code-Editor: neues Formular anlegen Eigenschaften anpassen wichtige Eigenschaften Name Caption evtl. Scrollbars, KeepScrollbarsVisible showModal, StartUpPosition

10 VBA für Excel Andreas RozekHyMeSys Software & Consulting Erstellen eines Eingabeformulars (Fortsetzung) im Code-Editor auf dem Formular selbst: Steuerelemente anlegen und konfigurieren wieder im Code-Editor: Ereignisbehandlungsroutinen schreiben für die Vorbereitung des Formulares evtl. für die Steuerelemente des Formulares selbst für Ok Formular auslesen, evtl. Fehler melden ansonsten UserForm.hide für Cancel UserForm.hide evtl. Start-Makro schreiben und... ausprobieren!

11 VBA für Excel Andreas RozekHyMeSys Software & Consulting UserForm-Steuerelemente (Überblick) Bezeichnungen (Label) Schaltflächen (CommandButton) Umschaltflächen (ToggleButton) Drehfelder (SpinButton) Kontrollkästchen (Checkbox) Optionsfelder (Radiobutton) Rahmen (Frame) Listenfelder (Listbox) Kombinationsfelder (Combobox) Rollbalken (Scrollbar) Tabulatorstreifen (TabStrip) TabulatorFelder (MultiPage)

12 VBA für Excel Andreas RozekHyMeSys Software & Consulting UserForm-Steuerelemente (allg. Arbeitsschritte) Anlegen eines Steuerelementes aus der Toolbox in das Formular ziehen (praktisch!) oder in der Toolbox anwählen und auf dem Formular mit der Maus einen Umriß zeichen Bearbeiten eines Steuerelementes mit linker Maustaste selektieren und im Eigenschaftenfenster Anpassungen vornehmen mit linker Maustaste doppelt anklicken und im Code-Editor die Ereignisroutine schreiben

13 VBA für Excel Andreas RozekHyMeSys Software & Consulting Achtung! manche Steuerelemente besitzen andere Eigenschaften, wenn Sie in einem Eingabeformular verwendet werden: Kombinationsfelder:RowSource Listenfelder:RowSource manche Steuerelemente sind nur in Eingabeformularen verfügbar: Rahmen (Frame) Tabulatorstreifen (TabStrip) TabulatorFelder (MultiPage)

14 VBA für Excel Andreas RozekHyMeSys Software & Consulting UserForm-Steuerelemente: Rahmen dienen der (echten) Gruppierung von Steuerelementen wichtige Eigenschaften Name Caption evtl. Scrollbars, KeepScrollbarsVisible

15 VBA für Excel Andreas RozekHyMeSys Software & Consulting UserForm-Steuerelemente: Rahmen um z.B. Optionsfelder zu gruppieren: Rahmen anlegen Optionsfelder innerhalb des Rahmens anlegen oder Optionsfelder anlegen Rahmen anlegen Optionsfelder in den Rahmen schieben Elemente im Rahmen werden mit dem Rahmen verschoben!

16 VBA für Excel Andreas RozekHyMeSys Software & Consulting UserForm-Steuerelemente: MultiPages dienen der seitenweise Anzeige von Steuerelementen jede Seite kann im Entwurfs- formular einzeln angewählt werden! Konfiguriert werden die einzelnen Seiten!

17 VBA für Excel Andreas RozekHyMeSys Software & Consulting UserForm-Steuerelemente: MultiPages wichtige Eigenschaften: Name Caption evtl. Scrollbars, KeepScrollbarsVisible Elemente auf den einzelnen Seiten bleiben selektierbar – es werden aber immer nur die gerade sichtba- ren Elemente gezeigt!

18 VBA für Excel Andreas RozekHyMeSys Software & Consulting Lebenszyklus eines Eingabeformulares (Erstellen) LadenLoad UserForm Initialisierenprivate sub UserForm_Initialize() Vorbereiten und Einblenden (und Benutzen)UserForm.Show [vbModeless] Auslesen und AusblendenUserForm.Hide Aufräumen und private sub UserForm_Terminate() EntladenUnload UserForm

19 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ein konkretes Beispiel...

20 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ein konkretes Beispiel: Erstellen

21 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ein konkretes Beispiel: Vorbereiten und Einblenden Sub showDialog() Load BeispielFormular With BeispielFormular.SalutationChoice.Value = End With BeispielFormular.Show End Sub

22 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ein konkretes Beispiel: Auslesen und Ausblenden Private Sub OkButton_Click()... (Eingaben überprüfen, Beispiel folgt) If (Trim(SalutationChoice.Value) = "") Then MsgBox "Bitte wählen Sie eine Anrede" Exit Sub End If... (Eingaben auslesen und in Tabelle schreiben) BeispielFormular.Hide End Sub

23 VBA für Excel Andreas RozekHyMeSys Software & Consulting VBA für Excel Teil IV: Programmiertips

24 VBA für Excel Andreas RozekHyMeSys Software & Consulting Das Wasserfallmodell Analyse Entwurf Implementierung Test Einsatz MockUp Pflichtenheft Prototyp

25 VBA für Excel Andreas RozekHyMeSys Software & Consulting Programmiertips dies ist keine Vorlesung über Entwurfstheorie Systemmodellierung Algorithmenentwurf stattdessen erhalten Sie ein paar ganz pragmatische Tips zur Programmierung – bitte nicht Ihrem Professor zeigen!

26 VBA für Excel Andreas RozekHyMeSys Software & Consulting Konkretes Beispiel: Zahlenmemory

27 VBA für Excel Andreas RozekHyMeSys Software & Consulting Ereignis-orientierte Programmierung Ereignisse lösen i.a. Zustandsänderungen aus (Zustand, Zustandsübergang) formal korrekte Modellierung und Darstellung z.B. durch Zustandsdiagramm Petri-Netz in der Praxis privat: zeichnen Sie einfach irgendwie ein Zustandsdiagramm - aber zeichnen Sie es!

28 VBA für Excel Andreas RozekHyMeSys Software & Consulting Irgendein Zustandsdiagramm Start :Reset Spiel initialisiert 1. Karte aufgedeckt 2. Karte aufgedeckt ungleich:zudecken alle Felder aufgedeckt: weitere Felder verdeckt: Ende gleich:

29 VBA für Excel Andreas RozekHyMeSys Software & Consulting Programmablauf formal korrekte Modellierung und Darstellung z.B. durch Flußdiagramm o.ä. (PseudoCode) in der Praxis privat: zeichnen Sie einfach irgendein Flußdiagramm ohne gra- fischen Schnickschnack - aber zeichnen Sie es!

30 VBA für Excel Andreas RozekHyMeSys Software & Consulting Irgendein Flußdiagramm Memory-Feld füllen Liste (String) aller Feldinhalte erstellen (je zweimal 0 bis 9) for Row = 1 to 4 for Column = 1 to 5 Inhalt Nr. rnd(1...len(Liste)) in Feld (r-1)*5+c eintragen Inhalt aus Liste entfernen Ende

31 VBA für Excel Andreas RozekHyMeSys Software & Consulting Weitere Tips aus der Praxis Machen Sie es so einfach wie möglich - aber nicht einfacher KISS-Prinzip: Keep It Simple - but not Stupid! die Produktivität von Programmierern variiert um den Faktor 20 (und je länger es dauert, desto unwahrscheinlicher wird es, daß das Projekt abgeschlossen wird) ZEIT!

32 VBA für Excel Andreas RozekHyMeSys Software & Consulting Weitere Tips aus der Praxis (Fortsetzung) Pareto-Prinzip: mit 20% des Aufwandes erreicht man 80% des Ergebnisses keine unumstößliche Regel, wohl aber eine Beobachtung niemals darauf verlassen, aber im Hinterkopf behalten: => MockUps und Prototypen Der frühe Wurm fängt den Fisch!

33 VBA für Excel Andreas RozekHyMeSys Software & Consulting Weitere Tips aus der Praxis (Fortsetzung) seien Sie pragmatisch – nicht perfektionistisch: Sie können 1000-mal behaupten, daß Ihre Lösung verbesse- rungswürdig ist – wenn Sie denn eine haben aber Sie dürfen kein einziges Mal behaupten, daß Sie die beste aller Lösungen liefern werden, wenn sie noch nicht vorzeigbar ist (setzen Sie Ihre eigenen Ziele nicht zu hoch) => Vorabversionen – keine Vaporware (Duke Nukem)

34 VBA für Excel Andreas RozekHyMeSys Software & Consulting Weitere Tips aus der Praxis (Fortsetzung) planen Sie! Aber nicht sich zu Tode! planen Sie gerade soweit, daß Sie denken, Sie können Ihre Lösung implementieren – es werden ohnehin unvorhergese- hene Probleme auftreten! haben Sie keine Angst vor Kritik – es wird immer jemanden geben, dem Ihre Lösung nicht gefällt! keine Angst vor O(n 2 ) bzw. O(n 3 ) bei kleinen n

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

36 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen implementieren Sie das Beispielformular erstellen Sie zunächst die Tabelle mit den Vorgaben für die Listen sowie den Zellen für die Benutzereingaben legen Sie nun das Formular mit allen Steuerelementen an den Inhalt für Datenschutzerklärung und AGBs lassen Sie sich von einem Lorem Ipsum-Generator erzeugen (dazu recher- chieren Sie im Web!) erstellen Sie die Ereignisroutine für den Cancel-Button

37 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie die Ereignisroutine für den Ok-Button prüfen Sie zunächst die Vollständigkeit aller Eingaben im Fehlerfalle zeigen Sie eine MsgBox an und verlassen Sie die Ereignisroutine, ohne die Tabelle modifiziert zu haben lesen Sie nun die verschiedenen Eingabefelder aus und schreiben Sie passende Werte in die Tabelle Achtung: fassen Sie alle selektierten Interessen in einer Zeichenkette zusammen (Komma-separiert) am Ende blenden Sie den Dialog einfach wieder aus testen Sie Ihr Formular aus dem Code-Editor heraus!

38 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) erstellen Sie nun die Ereignisroutine für den Eingabe-Button auf dem Tabellenblatt laden Sie zunächst das Eingabeformular füllen Sie nun das Formular mit den Vorgaben aus der Tabelle Achtung: die Tabellenzellen müssen dazu bereits gültige Werte enthalten (dürfen insbesondere nicht leer sein - leer nicht mit der leeren Zeichenkette verwechseln!). Verwenden Sie die Funktion split, um den Inhalt der Zelle mit den Adressen in ein Datenfeld umzuwandeln...

39 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) Fortsetzung zum Vorbelegen des Listenfeldes durchlaufen Sie alle Elemen- te des Listenfeldes und setzen ListBox.selected(i) = true für jedes i-te Element, dessen Text im Tabellenfeld vorhanden ist testen Sie das Beispiel in seiner vollen Form

40 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) entwerfen und implementieren Sie ein Zahlenmemory skizzieren Sie die Anforderungen an das Spiel (Anzeige des Spielfeldes, Bedienung (Aufdecken von Feldern) Erkennung des Spielzuges, Erkennung des Spielendes) überlegen Sie sich eine Implementierung in Excel und VBA (so einfach wie möglich)

41 VBA für Excel Andreas RozekHyMeSys Software & Consulting Übungen (Fortsetzung) implementieren Sie das Spiel Schritt für Schritt erstellen Sie das Tabellenfeld mit allen Bedien- und Anzeige- komponenten => MockUp! implementieren Sie die Bedienung und die Ende-Erkennung testen Sie Ihr Spiel – im Zweifelsfalle mogeln Sie, indem Sie sich die aufgedeckten Karten notieren testen Sie auch auf Fehlbedienungen: was passiert, wenn aufgedeckte Karten erneut aufgedeckt werden? Wenn jemand versucht, im selben Zug zweimal dieselbe Karte aufzudecken?


Herunterladen ppt "VBA für Excel 25.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