vba mit excel - readingsample - beck-shop.de · pdf file99 3 kapitel 3 3 die sprachelemente...
TRANSCRIPT
VBA mit Excel
Das umfassende Handbuch. Konzepte und Techniken der VBA-Programmierung. Das Standardwerk frEinsteiger und fortgeschrittene Anwender
Bearbeitet vonBernd Held
2., aktualisierte und erweiterte Auflage 2015. Buch. 950 S. HardcoverISBN 978 3 8362 3821 2
Format (B x L): 16 x 24 cm
Weitere Fachgebiete > EDV, Informatik > Datenbanken, Informationssicherheit,Geschftssoftware > Tabellenkalkulation
schnell und portofrei erhltlich bei
Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbcher, insbesondere Recht, Steuern und Wirtschaft.Im Sortiment finden Sie alle Medien (Bcher, Zeitschriften, CDs, eBooks, etc.) aller Verlage. Ergnzt wird das Programmdurch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Bchern zu Sonderpreisen. Der Shop fhrt mehr
als 8 Millionen Produkte.
http://www.beck-shop.de/Held-VBA-Excel/productview.aspx?product=16187470&utm_source=pdf&utm_medium=clickthru_lp&utm_campaign=pdf_16187470&campaign=pdf/16187470http://www.beck-shop.de/trefferliste.aspx?toc=8245http://www.beck-shop.de/trefferliste.aspx?toc=8245
LeseprobeIn diesem Auszug erfahren Sie von Bernd Held alles ber die prak-tische Anwendung der VBA-Sprachelemente. Auerdem lernen Sie, wie Sie Diagramme programmieren und knnen einen Blick in das vollstndige Inhalts- und Stichwortverzeichnis des Buchs werfen.
Bernd Held
VBA mit Excel Das umfassende Handbuch950 Seiten, gebunden, 2. Auflage 2015 49,90 Euro, ISBN 978-3-8362-3821-2
www.rheinwerk-verlag.de/3891
Die Sprachelemente der VBA Tabellen und Diagramme programmieren
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Wissen, wies geht.
99
3
Kapitel 3
3 Die Sprachelemente von Excel-VBA
Das Wesentliche, was eine Programmiersprache ausmacht, sind ihre
Sprachelemente. In diesem Kapitel erfahren Sie, wie Sie mit Hilfe von
Abfragen, Schleifen und anderen Anweisungen Ihre Makros flexibel
gestalten.
Die Sprachelemente lassen sich nicht mit dem Makrorekorder aufzeichnen, sondern
Sie mssen sie selbst erstellen. Der richtige Einsatz der Sprachelemente macht letzt-
endlich die Kunst der Programmierung aus.
Die Beispiele
Sie finden alle Beispiele zum Download unter http://www.rheinwerk-verlag.de/3891
in der Datei Sprachelemente.xlsm.
Fragen zum Download?
Nhere Angaben zum Download finden Sie bei Bedarf im betreffenden Hinweiskas-
ten in der Einleitung von Kapitel 1, Die Entwicklungsumgebung von Excel.
3.1 Bedingungen
Mit Bedingungen knnen Sie in Excel bestimmte Zustnde abfragen und je nach
Zustand anders reagieren. Es ist aus meiner Sicht eines der wichtigsten Elemente in
der Programmierung. Jede Verzweigung hat eine oder mehrere Bedingungen, dann
einen Zweig, der eintritt, wenn die Bedingung zutrifft, und einen Zweig, der abgear-
beitet wird, wenn die Bedingung nicht zutrifft.
Bei den Verzweigungen kann zwischen zwei Formen unterschieden werden:
Normalform:
IF Bedingung Then Aktion1 Else Aktion2
3821-2.book Seite 99 Mittwoch, 2. Dezember 2015 1:04 13
3 Die Sprachelemente von Excel-VBA
100
Blockform:
If Bedingung ThenAktion1aAktion1bAktion1c
ElseAktion2aAktion2b
End if
Verwenden Sie die Blockform, knnen mehrere Schritte nacheinander durchgefhrt
werden. Dabei mssen Sie aber beachten, dass Sie die Anweisung mit einem End If
abschlieen mssen.
Bedingungen werden in der Praxis unter anderem fr Prfungen aller Art eingesetzt.
Sie sind in fast jeder Schleife als Innerei vorhanden.
Es folgen nun einige typische Beispiele fr den Einsatz von Verzweigungen.
3.2 Typische Aufgaben aus der Praxis
Lernen Sie auf den nchsten Seiten ausgewhlte Praxisbeispiele kennen, die mit Be-
dingungen arbeiten.
3.2.1 Wert in einer Spalte suchen
Bei der folgenden Aufgabenstellung soll ein eindeutiger Wert in einer Spalte gefun-
den und anschlieend gekennzeichnet werden. Der zu suchende Wert soll ber eine
InputBox vom Anwender eingegeben werden. Schauen Sie sich dazu das Makro aus
Listing 3.1 an.
Sub WertInSpalteSuchen()Dim rngTreffer As RangeDim strSuchbegriff As String
Tabelle1.Range("A:A").Interior.ColorIndex = xlColorIndexNonestrSuchbegriff = InputBox("Suchbegriff eingeben!", "Direktsuche", 4720)
If Len(strSuchbegriff) 0 Then
Set rngTreffer = Tabelle1.Range("A:A").Find _(What:=strSuchbegriff, LookIn:=xlValues, LookAt:=xlWhole)
3821-2.book Seite 100 Mittwoch, 2. Dezember 2015 1:04 13
3.2 Typische Aufgaben aus der Praxis
101
3
If rngTreffer Is Nothing ThenMsgBox "Wert nicht gefunden"
ElserngTreffer.Interior.ColorIndex = 4
End If
End IfEnd Sub
Listing 3.1 Einen bestimmten Wert in einer Spalte finden
Deklarieren Sie im ersten Schritt des Makros aus Listing 3.1 eine Objektvariable mit
dem Namen rngTreffer vom Typ Range sowie eine String Variable mit dem Namen
strSuchbegriff.
Entfrben Sie Spalte A ber die Eigenschaft ColorIndex, der Sie die Konstante
xlColorIndexNone zuweisen.
Rufen Sie danach die Funktion InputBox auf. Dabei geben Sie im ersten Argument die
Meldung an, die im Meldungsfenster erscheinen soll. Im zweiten Argument definie-
ren Sie den Titel, der oberhalb des Meldungsfensters angezeigt werden soll. Beim
dritten Argument knnen Sie eine Vorbelegung fr das Textfeld im Meldungsfenster
bestimmen.
Abbildung 3.1 ber eine InputBox mit Vorbelegung eine Eingabe verlangen
Werten Sie die Eingabe des Anwenders aus. Wenn er nichts eingegeben hat, dann lie-
fert die Funktion Len den Wert 0. In diesem Fall soll nichts weiter passieren.
Im anderen Fall setzen Sie eine Direktsuche in Excel auf, indem Sie die Methode Find
einsetzen. Diese Methode hat drei wichtige Parameter:
What: Bei diesem Parameter muss der zu suchende Begriff eingegeben werden. DieAngabe dieses Parameters ist Pflicht.
LookIn: Dieser Parameter bestimmt, dass beispielsweise in Werten, nicht in For-meln gesucht werden soll.
LookAt: ber diesen Parameter legen Sie fest, ob Sie vollqualifiziert oder teilquali-fiziert suchen mchten. Wenn Sie diesen Parameter nicht angegeben, dann wird
3821-2.book Seite 101 Mittwoch, 2. Dezember 2015 1:04 13
3 Die Sprachelemente von Excel-VBA
102
dafr die Konstante xlPart angenommen, was bedeutet, dass Excel auch Werte,
die dem Suchbegriff hnlich sind, findet. Weisen Sie diesem Parameter die Kons-
tante xlWhole zu, damit die Suche wirklich nur eine eindeutige bereinstimmung
findet.
Nachdem die Suche aufgesetzt ist, muss geprft werden, ob sie erfolgreich war. Auch
zu diesem Zweck kommt die Anweisung If ins Spiel. War die Folge erfolglos, dann ist
die Objektvariable rngTreffer leer. Im anderen Falle ist die Objektvariable erfolgreich
gesetzt und zeigt genau auf die Fundstelle. Damit haben Sie Zugriff auf die gefundene
Zelle, die Sie im Anschluss daran ber die Eigenschaft ColorIndex einfrben.
Abbildung 3.2 Der gesuchte Wert wurde gefunden und gekennzeichnet.
3.2.2 Liegt die aktive Zelle in einem vorgegebenen Bereich?
Bei dieser Fragestellung liegt in Tabelle2 der Bereich A1:D10 vor. Das Makro aus Lis-
ting 3.2 prft, ob die aktive Zelle in diesem Bereich liegt.
Sub LiegtZelleImBereich()Dim rngBereich As Range
Set rngBereich = Tabelle2.Range("A1:D10")
If Intersect(ActiveCell, rngBereich) Is Nothing ThenMsgBox "Die Zelle " & ActiveCell.Address & _
3821-2.book Seite 102 Mittwoch, 2. Dezember 2015 1:04 13
3.2 Typische Aufgaben aus der Praxis
103
3
" liegt auerhalb des Zielbereichs " & rngBereich.AddressElse
MsgBox "Die Zelle " & ActiveCell.Address & _" liegt im Zielbereich " & rngBereich.Address
End If
End Sub
Listing 3.2 Prfung, ob eine Zelle in einem Bereich liegt
Deklarieren Sie zu Beginn des Makros aus Listing 3.2 eine Objektvariable vom Typ
Range mit dem Namen rngBereich. Geben Sie danach ber die Anweisung Set
bekannt, wo sich der Bereich in Tabelle2 befinden soll.
Mit Hilfe der Methode Intersect knnen Sie berprfen, ob die aktive Zelle in dem
vorgegebenen Bereich liegt. Wenn nicht, dann liefert die If-Bedingung als Rckgabe
den Wert Nothing, was Sie mit einer Meldung am Bildschirm ber die Funktion MsgBox
quittieren.
Abbildung 3.3 Die Bereichsprfung ist in diesem Fall positiv.
3.2.3 Prfung, ob eine bestimmte Datei verfgbar ist
Das Beispiel aus Listing 3.3 prft, ob eine bestimmte Datei in einem vorgegebenen
Verzeichnis existiert.
3821-2.book Seite 103 Mittwoch, 2. Dezember 2015 1:04 13
3 Die Sprachelemente von Excel-VBA
104
Sub IstDateiVorhanden()Dim strDatei As StringConst ConstDatei = _"C:\Users\Bernd.Held\Desktop\Excel-VBA-Handbuch\Beispiele\Kundenliste.txt"
strDatei = Dir(ConstDatei)If strDatei "" Then
MsgBox "Datei vorhanden!", vbExclamationElse
MsgBox "Datei " & strDatei & " nicht da!", vbCriticalEnd If
End Sub
Listing 3.3 Prfung, ob eine bestimmte Datei in einem vorgegebenen Verzeichnis liegt
Deklarieren Sie im ersten Schritt des Makros aus Listing 3.3 eine String-Variable mit
dem Namen strDatei. Als Konstante geben Sie den Pfad und Dateinamen zu der
Datei an, deren Existenz Sie prfen mchten. Selbstverstndlich mssen Sie den
Pfad- und Dateinamen anpassen.
Mit Hilfe der Funktion Dir knnen Sie prfen, ob die angefragte Datei im vorgegebe-
nen Verzeichnis