lerneinheit 3: vba teil 1:...

13
Michaela Weiss | 30. März 2015 Lerneinheit 3: VBA Teil 1: Eingabe/Ausgabe

Upload: lethuan

Post on 06-Feb-2018

223 views

Category:

Documents


2 download

TRANSCRIPT

Michaela Weiss | 30. März 2015

Lerneinheit 3: VBA

Teil 1: Eingabe/Ausgabe

Seite 2

VBA – Was ist das? • Visual Basic: Programmiersprache von Microsoft • Applications: Programme der Office-Familie (z.B. Excel, Word,…) VBA: Programmierung unter Office

VBA

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

Ausgabekanäle: • Meldungsfenster • Zellen • Direktbereich Eingabekanäle: • Zellen • Meldungsfenster (Betätigung der Schaltflächen) • Formulare

VBA

Seite 4

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

VBA

Seite 5

Übungsaufgabe 2: Anhand des in Zelle B1 eingetragenen Integerwerts soll ein Countdown auf den Direktbereich ausgegeben werden

VBA

Seite 6

Übungsaufgabe 3: Was macht die nachfolgende VBA-Sub bei der Ausführung in den einzelnen Zeilen des Quellcodes und was berechnet sie allgemein?

VBA

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

Übungsaufgabe 3: Was macht die nachfolgende VBA-Sub bei der Ausführung in den einzelnen Zeilen des Quellcodes und was berechnet sie allgemein?

VBA

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

Übungsaufgabe 3: Was macht die nachfolgende VBA-Sub bei der Ausführung in den einzelnen Zeilen des Quellcodes und was berechnet sie allgemein?

VBA

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

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

While vs.

Schleifen in VBA

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

2.) Mit Zelle als Anker

'A1

g = Range("A1").Value

'A2

g = g + Range("A1").Offset(1, 0).Value

'A3

g = g + Range("A1").Offset(2, 0).Value

'...

1.) Zellaktivierung

'A1 Range("A1").Activate g = ActiveCell.Value 'A2 ActiveCell.Offset(1, 0).Activate g = g + ActiveCell.Value 'A3 ActiveCell.Offset(1, 0).Activate g = g + ActiveCell.Value '...

Offset(Zeilen-Offset, Spalten-Offset)

Navigation durch das Tabellenblatt ges: Gesamtsumme

der Zellen A1, A2, A3…

While ActiveCell.Value <> ““

g = g + ActiveCell.Value

ActiveCell.Offset(1, 0).Activate

Wend

'Startaktivierung setzen

Range("A1").Activate

i = 0

While Range(“A1“).Offset(i, 0).Value <> ““

g = g + Range(“A1“).Offset(i, 0).Value

i = i + 1

Wend

Seite 12

2.) Mit Zelle als Anker

1.) Mit Zellaktivierung 'Startaktivierung setzen Range("A1").Activate

Offset(Zeilen-Offset, Spalten-Offset)

Navigation durch das Tabellenblatt ges: Gesamtsumme der

Zellen A1 bis A3

For i = 1 To 3

g = g + ActiveCell.Value

ActiveCell.Offset(1, 0).Activate

Next i

For i = 0 To 2

g = g + Range(“A1“).Offset(i, 0).Value

Next i

Seite 13

2.) Mit Zelle als Anker

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

Offset(Zeilen-Offset, Spalten-Offset)-Zusammenfassung

Navigation durch das Tabellenblatt

For i = 0 To 2

g = g + Range(“A1“).Offset(i, 0).Value

Next i

i = 0

While Range(“A1“).Offset(i, 0).Value <> ““

g = g + Range(“A1“).Offset(i, 0).Value

i = i + 1

Wend

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

Range(…).Interior.Color = 255