Lerneinheit 3: VBA Teil 1: Eingabe/Ausgabe
Transcription
Lerneinheit 3: VBA Teil 1: Eingabe/Ausgabe
Lerneinheit 3: VBA Teil 1: Eingabe/Ausgabe Michaela Weiss | 30. März 2015 Seite 2 VBA VBA – Was ist das? • Visual Basic: Programmiersprache von Microsoft • Applications: Programme der Office-Familie (z.B. Excel, Word,…) VBA: Programmierung unter Office Nützliches Wissen: • VBA-Programme (Makros) hängen stets an Office-Dokumenten • Office-Dokumente, die Makros enthalten, werden durch ein „m“ in der Dateiendung gekennzeichnet (*.xlsm, *.docm,…) • Makros können nur innerhalb des zugehörigen Dokuments verwendet werden • Entwicklungsumgebung: IDE muss ins Menüband eingefügt werden • Wechseln in die IDE: Über das Menüband Alt + F11 Seite 3 VBA Ausgabekanäle: • Meldungsfenster • Zellen • Direktbereich Eingabekanäle: • Zellen • Meldungsfenster (Betätigung der Schaltflächen) • Formulare Seite 4 VBA Übungsaufgabe 1: In B1 und B2 werden die ganzzahlige Werte A und B eingetragen. Die Sub soll überprüfen, ob B ein Teiler von A ist und das Ergebnis als Meldungsfenster ausgeben. Ist mindestens eine der Zahlen kleiner oder gleich null, soll eine Fehlermeldung auf der Direktausgabe erzeugt werden und die Sub sofort beendet werden. Die Sub soll über eine Schaltfläche aufrufbar sein. Seite 5 VBA Übungsaufgabe 2: Anhand des in Zelle B1 eingetragenen Integerwerts soll ein Countdown auf den Direktbereich ausgegeben werden Seite 6 VBA Übungsaufgabe 3: Was macht die nachfolgende VBA-Sub bei der Ausführung in den einzelnen Zeilen des Quellcodes und was berechnet sie allgemein? Public Sub TuWas() Dim x As Integer, erg As Integer x = Range("A1").Value erg = 1 If (x < 0) Then Exit Sub End If While (x > 0) erg = erg * x x=x–1 Wend MsgBox "Das Ergebnis ist: " & erg End Sub Seite 7 VBA Übungsaufgabe 3: Was macht die nachfolgende VBA-Sub bei der Ausführung in den einzelnen Zeilen des Quellcodes und was berechnet sie allgemein? Public Sub TuWas() Dim x As Integer, erg As Integer ‘dimensioniert zwei ganzzahlige Variablen x = Range("A1").Value ‘belegt die Varialbe x mit dem Wert aus Zelle A1 erg = 1 ‘belegt die Varialbe erg mit dem Wert 1 If (x < 0) Then ‘prüft ob x < 0 ist Exit Sub ‘beendet Sub End If While (x > 0) ‘läuft solange der Wert der Variablen x größer 0 ist erg = erg * x ‘verändert den Wert der Variablen erg x = x – 1 ‘erniedrigt den Wert der Variablen x Wend MsgBox "Das Ergebnis ist: " & erg ‘Meldungsfenster End Sub Seite 8 VBA Übungsaufgabe 3: Was macht die nachfolgende VBA-Sub bei der Ausführung in den einzelnen Zeilen des Quellcodes und was berechnet sie allgemein? Public Sub TuWas() Dim x As Integer, erg As Integer x = Range("A1").Value erg = 1 If (x < 0) Then Exit Sub End If While (x > 0) erg = erg * x x=x–1 Wend MsgBox "Das Ergebnis ist: " & erg End Sub Berechnet die Fakultät! Michaela Weiss | 30. März 2015 Lerneinheit 3: VBA Teil 2: (Mit Schleifen) Durch das Tabellenblatt Seite 10 Schleifen in VBA While vs. While Bedingung Anweisungsblock [Index hochzählen] Wend Ablauf: • Schleife läuft, solange Bedingung erfüllt • Falls Index verwendet wird, muss dieser manuell erhöht werden (sonst Endlosschleife) Anwendung: • Wenn Anzahl der Schleifendurchläufe nicht bekannt VBA: Durch alle gefüllten Zellen laufen For For index = start To ende [Step s] Anweisungsblock Next index Ablauf: • Schleife läuft x Mal • Index wird durch Next index [und ggf. step] automatisch erhöht Anwendung: • Wenn Anzahl der Schleifendurchläufe bekannt VBA: Durch x Zellen laufen (z.B. Monatsverkaufszahlen eines kompletten Jahres) Seite 11 Navigation durch das Tabellenblatt ges: Gesamtsumme der Zellen A1, A2, A3… Offset(Zeilen-Offset, Spalten-Offset) 1.) Zellaktivierung 2.) Mit Zelle als Anker 'A1 Range("A1").Activate g = ActiveCell.Value 'A1 g = Range("A1").Value 'A2 ActiveCell.Offset(1, 0).Activate g = g + ActiveCell.Value 'A3 ActiveCell.Offset(1, 0).Activate g = g + ActiveCell.Value 'A2 g = g + Range("A1").Offset(1, 0).Value 'A3 g = g + Range("A1").Offset(2, 0).Value '... '... 'Startaktivierung setzen Range("A1").Activate While ActiveCell.Value <> ““ g = g + ActiveCell.Value ActiveCell.Offset(1, 0).Activate Wend i=0 While Range(“A1“).Offset(i, 0).Value <> ““ g = g + Range(“A1“).Offset(i, 0).Value i=i+1 Wend Seite 12 Navigation durch das Tabellenblatt ges: Gesamtsumme der Zellen A1 bis A3 Offset(Zeilen-Offset, Spalten-Offset) 1.) Mit Zellaktivierung 'Startaktivierung setzen Range("A1").Activate For i = 1 To 3 g = g + ActiveCell.Value ActiveCell.Offset(1, 0).Activate Next i 2.) Mit Zelle als Anker For i = 0 To 2 g = g + Range(“A1“).Offset(i, 0).Value Next i Seite 13 Navigation durch das Tabellenblatt Offset(Zeilen-Offset, Spalten-Offset)-Zusammenfassung 1.) Mit Zellaktivierung 'Startaktivierung setzen Range("A1").Activate While ActiveCell.Value <> ““ g = g + ActiveCell.Value ActiveCell.Offset(1, 0).Activate Wend 'Startaktivierung setzen Range("A1").Activate For i = 1 To 3 g = g + ActiveCell.Value ActiveCell.Offset(1, 0).Activate Next i 2.) Mit Zelle als Anker i=0 While Range(“A1“).Offset(i, 0).Value <> ““ g = g + Range(“A1“).Offset(i, 0).Value i=i+1 Wend For i = 0 To 2 g = g + Range(“A1“).Offset(i, 0).Value Next i Range(…).Interior.Color = 255 Aufgaben (immer von A1 aus): 1. Alle gefüllten Zellen der 1. Zeile durchlaufen und Summe berechnen 2. Alle 10 Zeilen der Spalte A durchlaufen und Summe berechnen 3. Alle gefüllten Zellen durchlaufen und Zahlen > 10 rot highlighten