VBA mit Excel - ReadingSample - beck-shop.de · PDF file99 3 Kapitel 3 3 Die Sprachelemente...

download VBA mit Excel - ReadingSample - beck-shop.de · PDF file99 3 Kapitel 3 3 Die Sprachelemente von Excel-VBA Das Wesentliche, was eine Programmiersprache ausmacht, sind ihre Sprachelemente.

If you can't read please download the document

Transcript of VBA mit Excel - ReadingSample - beck-shop.de · PDF file99 3 Kapitel 3 3 Die Sprachelemente...

  • 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