====== Tabellenkalkulation - Visual Basic (Makros) ====== * {{:inf:tabellenkalkulation:skriptum_visualbasic.pdf|Gesamtes Skriptum Visual Basic}} === Einzelne Dokumente=== * {{:informatik:k6inf:tabellenkalkulation:visualbasic_excel.pdf}} * {{:informatik:k6inf:kopieren_zellen_excel.pdf}} * {{:informatik:k6inf:optionbutton_wachstumsformen.pdf}} * {{:informatik:k6inf:makros.pdf}} * {{:inf:k6inf:tk:steuerelemente.pdf|}} ===== Makros ===== ==== Was ist ein Makro? ==== Unter Makros versteht man eine Softwarekomponente, die eine Folge aus Anweisungen zusammenfasst und diese gegebenefalls ausführt. \\ Alle Anweisungen des Makros werden automatisch an der Stelle ausgeführt, an der die Aufzeichnung begonnen wurde.\\ \\ ==== Makro aufzeichnen ==== Um ein Makro aufzuzeichnen benötigt man den Makro - Recorder, der unter EXTRAS - MAKRO - AUFZEICHNEN zu finden ist. {{:inf:k6inf:tk:visual_basic-capture-MakroR.gif|}} Wenn die Aufzeichnung gestartet ist, muss sie wieder beendet werden, indem man beim erscheinenden Zusatzfenster auf AUFZEICHNUNG BEENDEN geht. \\ \\ ==== Makro ausführen ==== * Unter Menü EXTRAS - MAKRO - AUSFÜHREN * Über eine definierte TASTENKOMBINATION * Eine SCHALTFLÄCHE kreieren und dieser das entsprechende Makro ZUWEISEN {{:inf:k6inf:tk:visual_basic-capture-Schaltflaeche.gif|}} * ein SYMBOL in der Symbolleiste unter ANSICHT - SYMBOLLEISTE - ANPASSEN / Befehle - Makros {{:inf:k6inf:tk:visual_basic-capture-SYM_Befehle.gif|}} \\ \\ ===== Visual Basic for Applications ===== ==== Visual Basic Editor ==== EXTRAS - MAKROS - VISUAL BASIC EDITOR oder ALT + F11 \\ \\ ==== Objekte und Hierachie ==== - APPLICATION - Excel Fenster - WORKBOOK - Excel Arbeitsmappe - WORKSHEET - Tabellenblatt - RANGE - Zellenbereich (eine oder mehrere Zellen) \\ ==== Prozedur ==== Sind eine Folge von Anweisungen, die bestimmte Aufgaben wiederverwendbar machen. Sub Prozedurname () ... Anweisung(en) ... End Sub \\ ==== Kommentare ==== Kommentare werden mit einem //einfachen Hochkomma// begonnen. ' Hier wird die Gesamtsumme der Mitarbeiter errechnet Sub GesamtsummeMA () ... \\ ==== Formeleintrag ==== **Formula** - Formel umfasst einen //absoluten Bereich// ... Formula = "=SUM(A1:A20)" ... Formula = "=AVERAGE(A1:A20)" **FormulaR1C1** - Formel umfasst einen //relativen Bereich//\\ R ... Row C ... Column ... FormulaR1C1 = "=SUM(R[-20]C[-1]:R[-1]C[-1])" ... FormulaR1C1 = "=AVERAGE(R[-20]C[-1]:R[-1]C[-1])" **...Local** - würde Formeln in //deutscher Sprache// zulassen ... FormulaLocal = "Summe(A1:A20)" ... FormulaR1C1Local = "Mittelwert(R[-20]C[-1]:R[-1]C[-1])" \\ ==== Variable ==== Variablen sind eine Art von Platzhalter für Zeichenfolgen, Werte und Objekte. Dim VARIABLENNAME As VARIABLENTYP == Variablentypen == Die gebräuchlichen Variablentypen: |Variablentyp | Res.Speicherplatz | Beschreibung| |Boolean | 16 Bit, 2 Bytes | WAHR (-1) oder FALSCH (0) | |Byte | 8 Bit, 1 Byte | 0 ... +255 | |Integer | 16 Bit, 2 Bytes | -32.768 ... +32.767 | |Long | 32 Bit, 4 Bytes | -2.147.483.648 ... +2.147.483.647 | |Currency | | -922.337.203.685.477,5808 ... +922.337.203.685.477,5807 | |Single | 32 Bit, 4 Bytes | 3,402823E38 ... 1,401298E-45 und 0 | |Double | 64 Bit, 8 Bytes | -1.79769313486231E308 bis -4,94065645841247E-324 für negative Werte und von 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte und 0 | |Date | 64 Bit, 8 Bytes | Datum und Zeit | |String | | Zeichenfolgen | |Object | 32 Bit, 4 Bytes | Objekte | |Variant | 128 Bit, 16 Bytes | Alle Typen, Voreinstellung | |Objekttyp | | Objekte wie Workbook, Range | |benutzerdefinierter Typ | | ein oder mehrere Elemente jeden Datentyps. Der Aufbau wird mit einer Type-Anweisung deklariert | == Ebene für Variable == __//Prozedurebene://__ \\ Eine Variable ist innerhalb einer Prozedur deklariert und nur dort gültig.\\ __//Modulebene://__ \\ Eine Variable ist innerhalb eines Moduls, in jeder Prozedur gültig und wird im Moduldkopf deklariert. \\ \\ ==== Konstante ==== Eine Konstante ist ein definierter, fester, unveränderlicher Wert. Const KONSTANTENNAME As KONSTANTENTYP = AUSDRUCK Const Zahl As Single = 1.1 \\ ==== IF Anweisung ==== Bei der IF ... THEN ... ELSE Anweisung muss die Bedingung TRUE oder FALSE entsprechen, damit die nachstehenden Anweisungen durchgeführt werden können. IF Bedingung THEN Anweisung1 ELSE Anweisung2 EndIF \\ ==== For - Next Anweisung ==== Wiederholt eine Reihe von Anweisungen so oft wie angegeben. For Zähler = Anfang To Ende [Step Schritt] [Anweisungen] [Wiederholung For] [Anweisungen] [Exit For] [Anweisungen] Next \\ ==== Do While Schleife ==== Die Do While Schleife wird in jedem Fall einmal durchlaufen. Sie ist damit nachprüfend. DO WHILE Logischer Ausdruck Anweisung(en) LOOP \\ ==== Messagebox (MsgBox) ==== Erzeugt eine gewünschte Meldung, in einem Dialogfeld, auf dem Bildschirm an! MsgBox(prompt[, buttons][, title]) MsgBox ("Befehl ausführen?", vbYesNo + vbQuestion, "Anfrage") MsgBox ("Befehl ausführen?", 4 + 32, "Anfrage") prompt ... Ein String der als Meldung im Dialogfeld angezeigt wird\\ buttons ... Anzahl und Art der gewünschten Schaltfläche am Dialogfeld\\ title ... Sting der den Titel des Dialogfeldes bestimmt\\ \\ **Folgende Buttons und Symbole kann eine MsgBox enthalten:\\ **{{:inf:k6inf:tk:visual_basic-capture-Option-MsgBox.gif|}} \\ \\ **Rückgabewerte der Buttons:**\\ {{:inf:k6inf:tk:visual_basic-capture-Rueckgabe.gif|}} \\ \\ ==== Inputbox ==== Hiermit kann einer Variable eine Eingabe zugewiesen werden! VARIABLENNAME = Inputbox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context]) Vorname = Inputbox ("Bitte geben sie Ihren Vornamen ein!", "Anfrage Vorname", "Hier eintragen") {{:inf:k6inf:tk:visual_basic-capture-Inputbox.gif|}} \\ \\ ==== WITH Funktion ==== Mit Hilfe dieser Funktion können Formatierungen vorgenommen werden! With Selection.Interior 'Innerhalb der Zellen .ColorIndex = 43 'Grüne Farbe .Pattern = xlSolid 'Hintergrund vollflächig färben End With **Das Zahlenformat geht auch ohne WITH:**\\ Selection.NumberFormat = "0.00%" \\ ==== Bildschirmupdate aus- und einschalten ==== Um Bildschirmflimmern während der Ausführung zu unterdrücken\\ Application.ScreenUpdating = False Anweisung Application.ScreenUpdating = True \\ ==== Kopieren und Einfügen von Tabellendaten ==== Range("A1:D5").Select 'Zellenbereich auswählen Selection.Copy 'Auswahl kopieren Sheets("Tabelle2").Select 'Tabellenblatt zum einfügen auswählen Range("A1").Select 'linker - oberer Rand für das Einfügen auswählen ActiveSheet.Paste 'einfügen \\ ==== Wichtige Befehle: ==== * **Range("A1").Select** - Wählt die Zelle A1 als aktive Zelle\\ * **Sheets("[Sheetname]").Select** - Wählt das Blatt mit dem Namen[Sheetname] aus \\ * **ActiveCell.Offset([x],[y]).Select** - Wählt die Zelle um x nach unten und um y nach rechts als neue aktive Zelle\\ * **Range("A1").Value =** - Ändert den Wert der Zelle A1 \\ * **ActiveCell.Value =** - Ändert den Wert der aktiven Zelle \\ * **Columns("B:B").Insert Shift:=xlToRight** - Spalte B wird nach rechts verschoben \\ ==== UserForm ==== Die VBA Programmierung in Excel ermöglicht auch das Anlegen eines VBA Formulars, mit dem Daten benutzerfreundlicher in eine Exceltabelle übermittelt werden können.\\ Dazu muss man im VB Editor - bei **VBAProjekt** (linke Box) - **rechte Maustaste** - **Einfügen** - **UserForm** klicken und es erscheint eine graphische Benutzeroberfläche. Mittels **Steuerelemente** lassen sich nun Formulare entwickeln. {{:inf:k6inf:tk:visual_basic-capture-UserForm.gif|}}\\ \\ **Beispiel:\\ **{{:inf:k6inf:tk:visual_basic-capture-UserForm1.gif|}}