23
Schnellkurs VBA: Einstieg und Berechnungen

Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

  • Upload
    others

  • View
    35

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

Page 2: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

2Fachverlag für Computerwissen

wenn Sie Arbeitsgänge vollständig automatisieren oder Excel erweitern möchten, dann brauchen Sie die integrierte Excel-Programmiersprache VBA. Sie müssen aber gar kein Programmierer sein, um Ihre Excel-Lösungen mit VBA aufzuwerten!

VBA-Makros aufzubauen und zu erstellen, kann jeder Excel-Anwender lernen. Mit den richtigen VBA-Grund lagen können Sie schon nach kurzer Zeit Makros entwickeln, um Excel-Arbeitsgänge einmalig anzulegen und anschließend nach Belieben wieder aufzurufen. Lernen Sie die notwen-digen VBA-Grundlagen mit diesem E-Book kennen. Er-fahren Sie, wie Sie Makros eingeben, verändern und aufru-fen und wie Sie Makros einsetzen, um Ihre Berechnungen zu vereinfachen oder Arbeitsgänge zu wiederholen. Das Praxisbeispiel demonstriert Ihnen die VBA-Makro-Technik am Beispiel des Knobelspiels Sudoku. Das Sudoku-Makro löst nicht nur jedes Sudoku, sondern Sie können es auch als persönlichen Sudoku-Generator einsetzen.

Ich wünsche Ihnen viel Erfolg und Spaß beim Einstieg in die VBA-Welt von Excel.

Herzliche Grüße

Martin Althaus Chefredakteur und Excel-Experte

Inhalt:

VBA-Blitzeinstieg 3

VBA-Berechnungen per Makro durchführen 10

Clever: Mit diesem Programm lösen Sie Sudokus innerhalb von Sekunden! 17

Impressum 23

Warum VBA auch Ihnen weiterhilft

Page 3: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

3Fachverlag für Computerwissen

VBA-Blitzeinstieg

So schaffen Sie den Einstieg in die Programmiersprache VBAIndividuelle Lösungen mit den Office-Anwendungen zu entwickeln, ist die Aufgabenstellung für die meisten Excel-Anwender. Wenn die Standardfunkti-onen der Programme an ihre Grenzen stoßen, dann hilft Ihnen nur VBA weiter.

„Visual Basic für Anwendungen“ ist der Begriff, der sich hinter dem Kürzel VBA verbirgt. Microsoft hat mit VBA eine Programmiersprache entwickelt, die viele Ele-mente der traditionellen Einsteiger-Programmiersprache Basic mit den Microsoft-Anwendungsprogrammen verbindet. VBA ist in die Office-Anwendungen Word, Excel, Access, PowerPoint und Outlook integriert. Sie können VBA einsetzen, um Excel genau an Ihre Wünsche anzupassen.

Ihr Vorteil: Im Gegensatz zur Programmierung eigener Lösungen mit einer tra-ditionellen Programmiersprache können Sie beim Einsatz von VBA alle in Excel verfügbaren Funktionen direkt in Ihren Programmen nutzen.

Verstehen Sie, wie Excel Makros abspeichert und erfahren Sie …

… verändern und anpassen.

… wie Makros funktionieren und wie

Sie Makros …

Dateiname: VBA-Blitzeinstieg.xls

Page 4: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

4Fachverlag für Computerwissen

Sie müssen also beispielsweise nicht erst aufwendige Berechnungsroutinen selbst programmieren, sondern können direkt auf die eingebundenen Routinen von Excel zugreifen. Das spart Entwicklungsaufwand und damit Geld.

Ein weiterer Vorteil: Während sich „echte“, eigenständige Programmiersprachen nur von Programmierern und EDV-Profis bedienen lassen, können VBA auch Anwender einsetzen, die über keine Programmiererfahrung verfügen.

So sind VBA-Programme aufgebautVBA-Programme setzen sich aus einzelnen Anweisungen zusammen. Basis Ihrer VBA-Programme ist der Einsatz von Objekten, Methoden, Eigenschaften und Anweisungen. Diese Bestandteile Ihres Quelltextes binden Sie in die Programme, Unterprogramme und Funktionen ein.

Die einzelnen Komponenten Ihrer VBA-Programme werden in einem Programm-quelltext zusammengefasst. Den geben Sie wie einen Text direkt in ein besonderes VBA-Fenster von Excel ein.

Wie Sie den VBA-Editor startenUm in die VBA-Entwicklungsumgebung zu wechseln, starten Sie zunächst Excel und drücken dann die Tastenkombination A?. Diese Tastenkombination funktioniert in allen Excel-Versionen. Die folgende Abbildung 1 zeigt, mit wel-chem Dialogfenster Excel antwortet:

Wenn Sie eine Arbeitsmappe um VBA-Programm-Code erweitern möchten, ru-fen Sie im VBA-Editor den Befehl Einfügen – Modul auf. Nun zeigt der VBA-Editor ein Eingabefenster an. Das funktioniert wie ein Texteditor. Sie schreiben in dieses Eingabefenster Ihre VBA-Kommandos hinein. Die folgende Abbildung 2 zeigt das Eingabefenster:

Der VBA-Editor nach dem Start

1

Page 5: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

5Fachverlag für Computerwissen

Der beste Start: Makros aufzeichnen und verändernDas Aufzeichnen von Arbeitsgängen ist ein wirkungsvolles Hilfsmittel, um kom-plexe Tätigkeiten in einem Zug zu einem Vorgang zusammenzufassen und später bei Bedarf wieder abrufen zu können.

Dabei speichert Excel alle aufgezeichneten Aktionen in Form von VBA-Befehlen ab. Indem Sie sich aufgezeichnete Aktionen anschauen, können Sie daher schnell und einfach einen Einblick in die Arbeitsweise von VBA erhalten.

Um einen Arbeitsgang aufzuzeichnen, klicken Sie das Register Ansicht im Menü-band an. Wählen Sie aus der Gruppe Makros den Befehl Makros – Makro aufzchn. Das Kommando steht Ihnen in Excel ab Version 2007 zur Verfügung.

Wenn Sie eine ältere Excel-Version bis einschließlich Version 2003 verwenden, ru-fen Sie den Befehl über das Kommando Extras – Makro – Aufzeichnen auf.

Die folgende Abbildung 3 zeigt, mit welchem Dialogfeld Excel in allen Versionen antwortet:

Sie legen in diesem Fenster einen Namen für die Aufzeichnung fest und definieren, wo die Aufzeichnung gespeichert werden soll. Nach dem Drücken der Schaltfläche OK erledigen Sie der Reihe nach die Aufgaben, die Sie aufzeichnen möchten.

VBA ist bereit zur Aufnahme Ihres Programm-Codes

2

3

Ein Makro soll aufgezeichnet werden

Page 6: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

6Fachverlag für Computerwissen

Sie können jetzt Formatierungen durchführen, Eingaben vornehmen oder Ähn-liches erledigen. Jede Ihrer Aktionen wird von VBA automatisch in passende Programmbefehle der Programmiersprache übersetzt und an der gewünschten Position abgelegt.

Haben Sie den aufzuzeichnenden Arbeitsgang abgeschlossen, beenden Sie die Aufzeichnung. Dazu rufen Sie im Register Ansicht in der Gruppe Makros den Befehl Makro – Aufzeichnung beenden auf, wenn Sie Excel ab Version 2007 ver-wenden.

Falls Sie eine ältere Excel-Version bis einschließlich Version 2003 verwenden, stop-pen Sie die Aufzeichnung über das Kommando Extras – Makro – Aufzeichnung beenden.

Beim Aufzeichnen hat Excel den kompletten Arbeitsgang gespeichert, den Sie zwi-schen Start und Ende durchgeführt haben. Sie können ihn jederzeit abrufen und erneut ausführen.

Wie Sie eine Aufzeichnung wieder abrufenUm eine Aufzeichnung wieder abzurufen, drücken Sie die Tastenkombination A(. Sie funktioniert in allen Excel-Versionen. Alternativ rufen Sie in Excel ab Version 2007 das Kommando Makro – Makros anzeigen aus der Gruppe Makros im Register Ansicht auf. In Excel bis einschließlich Version 2003 lautet der Befehl Makro – Makros aus dem Extras-Menü.

Excel zeigt Ihnen alle verfügbaren Makros an. Die folgende Abbildung 4 zeigt, wie das aussehen kann:

Um ein Makro aufzurufen, klicken Sie es in der Liste an und wählen danach die Schaltfläche Ausführen. Wenn Sie sich den Programm-Code des Makros anschau-en möchten, klicken Sie auf die Schaltfläche Bearbeiten. Excel führt Sie daraufhin im VBA-Editor automatisch an die Position, an der das Makro gespeichert ist.

4

Alle verfügbaren Makros können Sie aufrufen

Page 7: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

7Fachverlag für Computerwissen

So verstehen Sie den Quelltext eines MakrosDie wichtigsten Schlüsselwörter für das Formulieren eines Programms sind „Sub“ und „End Sub“. Die Sub-Anweisung deklariert eine Prozedur, mit dem End-Sub-Befehl definieren Sie das Ende eines Unterprogramms.

Hinter dem Schlüsselwort „Sub“ platzieren Sie den Namen, den Sie dem Unterpro-gramm geben möchten. Dieser Name muss mit einem Buchstaben beginnen und darf keine Leerzeichen enthalten. Der Unterstrich ist als Trennzeichen erlaubt.

Wie Objekte, Methoden und Eigenschaften funktionierenVBA organisiert den Zugriff auf die Office-Anwendungen über Objekte, Methoden und Eigenschaften. Ein Objekt ist ein Element einer Office-Anwendung, das alle Daten und Parameter des Elements zusammenfasst. Beispielsweise gibt es ein Ob-jekt „Cell“, mit dem Excel Zellen verwaltet. Die Parameter eines Objekts nennt man Eigenschaften.

Diese Eigenschaften können Sie in Ihren VBA-Programmen lesen oder ändern. Beispielsweise verfügt das Objekt „Cell“ über Eigenschaften wie „Value“ (der ak-tuelle numerische Inhalt der Zelle), „Row“ (die Zeilennummer der Zelle), „Text“ (der Inhalt der Zelle, wie Excel ihn auf dem Bildschirm darstellt) und viele mehr. Objekte sind in Hierarchien angeordnet.

Die Beispieldatei VBA-Blitzeinstieg.xls stellt die wichtigsten VBA-Schlüsselwörter für Sie zusammen.

In Excel gibt es beispielsweise Tausende von Zellen, die auf unterschiedlichen Ar-beitsblättern und in unterschiedlichen Arbeitsmappen zu finden sind. Das Objekt „Cell“ ist daher ein Unterobjekt von „Sheet“ (also dem Tabellenblatt), „Sheet“ wie-derum ist ein Unterobjekt von „Workbook“ (also der Arbeitsmappe).

Zu fast allen Objekten stellt Excel Anweisungen zur Verfügung, die auf diese Ob-jekte abgestimmt sind. Diese Anweisungen können Sie nur in Kombination mit einem bestimmten Objekt einer bestimmten Objektart aufrufen. Man nennt diese Anweisungen „Methoden“.

Eine Methode ist ein Unterprogramm, das an ein bestimmtes Objekt geknüpft ist. Beispielsweise gibt es die Methode „Activate“, mit der ein Objekt aktiviert werden kann. In Excel kann es sich dabei um ein Anwendungsobjekt, ein Tabellenblatt-objekt oder eine Reihe anderer Objekte handeln.

Wenn Sie beispielsweise dafür sorgen möchten, dass eine bestimmte Seite in einer bestimmten Arbeitsmappe aktiviert wird, setzen Sie das Kommando „Activate“ ein. Sie trennen den Objektnamen und die Methode durch einen Punkt.

Workbooks("dreh.xls").Sheets("Eingabe").Activate

Page 8: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

8Fachverlag für Computerwissen

Die Anweisung sorgt dafür, dass das Tabellenblatt „Eingabe“ aus der Arbeitsmappe „dreh.xls“ aktiviert wird. Die Objektliste „Workbooks“ gibt dazu ein Objekt vom Typ „Workbook“ (also Arbeitsmappe) zurück. Zu diesem Objekt wird über die Me-thode „Sheets“ ein Unterobjekt vom Typ „Sheet“ ausgewählt, das mit der Methode „Activate“ eingeschaltet wird.

Grundsätzlich gilt: Falls nicht anders vereinbart, bezieht die Office-Anwendung Ihre Anweisungen auf das aktuelle Objekt. Wenn beim Ausführen der obigen Pro-grammzeile beispielsweise die Arbeitsmappe „dreh.xls“ schon aktiv ist, können Sie sich die Auswahl des entsprechenden Objekts über die Sheets-Methode sparen. Dann wird die Anweisung einfacher:

Sheets("Eingabe").Activate

Eine Übersicht über alle Objekte, Methoden und Eigenschaften von Excel erhalten Sie über den Objektkatalog.

Sie können dieses Fenster über das Kommando Ansicht – Objektkatalog im VBA-Editor anschalten. Die folgende Abbildung 5 zeigt den Objektkatalog:

Sie können sich im Objektkatalog die Objekte, Eigenschaften und Methoden an-schauen. Wenn Sie genauere Informationen zu einem Objekt benötigen, aktivieren Sie über die Taste ! die Hilfefunktion.

Wie Sie mit Variablen arbeitenUnter einer Variablen versteht man einen Speicherplatz für eine Zahl, einen Text oder andere Daten. Sie können sich eine Variable wie eine Schublade vorstellen, auf der ein Name steht.

Um beispielsweise eine Zahl vom Anwender einzulesen und das Zehnfache der Zahl auf dem Bildschirm auszugeben, liest ein VBA-Programm die Zahl von der

Der VBA-Objekt-katalog von Excel

5

Page 9: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

9Fachverlag für Computerwissen

Tastatur ein und speichert sie in einer Variablen. Im nächsten Schritt wird in einer weiteren Variablen das Zehnfache der Zahl gebildet und gespeichert.

Um die Zahl schließlich auf dem Bildschirm auszugeben, verwendet das Komman-do wiederum den Variablennamen. Der Vorteil beim Einsatz von Variablen liegt in der hohen Flexibilität.

Der Befehl zur Datenausgabe auf dem Bildschirm gibt immer den Inhalt der Vari-ablen auf dem Bildschirm aus, egal, welcher Wert in der Speicherstelle der Varia-blen zu finden ist. Angenommen, Sie benötigen eine Variable zur Speicherung einer Zahl. Die Variable möchten Sie gern „Zahl“ nennen. Die Variable soll als Inhalt den Wert 100 erhalten. In Ihrem Programm können Sie die Variable mit dem folgenden Kommando definieren:

Zahl=100

Der Name einer Variablen ist für Excel nichts weiter als eine symbolische Bezeich-nung. Achten Sie aber auf Folgendes, wenn Sie Variablen festlegen:

1. Das erste Zeichen muss ein Buchstabe oder der Unterstrich sein. Als weitere Zeichen können Buchstaben, Ziffern, Punkte und Unterstriche folgen.

2. Leerzeichen können nicht verwendet werden. Setzen Sie stattdessen den Unter-strich oder Punkt ein.

3. Buchstaben dürfen in Groß- oder in Kleinschreibung verwendet werden. VBA unterscheidet nicht zwischen den beiden Schreibweisen.

4. Eine Variable hat eine maximale Länge von 255 Zeichen.

Es ist sinnvoll, ausführliche Namen für Variablen zu verwenden. Sie sollten die Namen so wählen, dass ihre Aufgabe im Programm klar und deutlich bezeichnet wird.

Download

Dateinamen: VBA-Blitzeinstieg.xlsAlle Beispieldateien finden Sie zum Download unter www.excelwissen.de/vba

Page 10: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

10Fachverlag für Computerwissen

VBA-Berechnungen per Makro durchführen

Wie Sie Berechnungen in Makros durchführenAuch in VBA-Programmen müssen Berechnungen durchgeführt werden. Aber es ist nicht erforderlich, die notwendigen Rechenschritte vollständig über VBA-Kommandos, Schleifen oder andere Wege abzubilden.

Es gibt einen einfacheren Weg: Realisieren Sie die notwendigen Berechnungen in einem versteckten Tabellenblatt direkt in Excel und liefern Sie nur die Ergebnisse per Makro an die Anwender Ihrer Lösungen aus.

In Ihren VBA-Prozeduren schreiben Sie die Eingangswerte für die Berechnungen in die entsprechenden Zellen dieses Rechenblatts. Passende Formeln berechnen daraus die Ergebnisse. Anschließend lesen Sie diese Ergebnisse aus und verarbeiten sie per Makro weiter.

Zuerst fragt Ihr Makro einen Eingabewert über

ein Dialogfenster ab.

Anschließend zeigt das Makro das Ergebnis auf

dem Bildschirm an.

Dann führt ein verstecktes Tabellenblatt die notwendigen

Berechnungen aus.

Dateiname: VBA-Berechnung.xls

Page 11: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

11Fachverlag für Computerwissen

Der große Vorteil dieser Methode besteht darin, dass Sie auf die vielen Spezial-funktionen von Excel zum Ermitteln der Ergebnisse vertrauen können und Berech-nungsschritte nicht in Ihren Makros nachbauen müssen. Das spart Zeit und ver-meidet Fehler.

Auch für Anwendungen, mit denen Sie Daten in eine bestimmte Form bringen müs-sen, können Sie diese Methode einsetzen. Verwenden Sie die Excel-Berechnungs-tabelle, um Daten per Makro in die gewünschte Form zu bringen.

So verwenden Sie ein BerechnungsblattZum Durchführen von Berechnungen in einem speziellen, VBA-gesteuerten Be-rechnungsblatt legen Sie dieses Blatt zunächst in Ihrer Arbeitsmappe an. Öffnen Sie zuerst die Arbeitsmappe mit dem passenden VBAProjekt und fügen Sie dann ein neues, leeres Tabellenblatt über das Kommando Einfügen – Tabellenblatt ein.

Diesem Tabellenblatt geben Sie nun einen Namen, unter dem es nicht verwechselt werden kann, beispielsweise „VBABerechnung“, wie in der folgenden Abbildung 1 gezeigt:

Um dieses Tabellenblatt in Ihrem VBA-Programm anzusprechen, setzen Sie das Objekt „ThisWorkbook“ ein. Dieses Objekt bezieht sich immer auf die Arbeitsmap-pe, in der sich der Programmcode befindet, in dem das Objekt verwendet wird. Unabhängig davon, wie Sie Ihre Arbeitsmappe nennen und wo Sie die Datei abspei-chern, verweist „ThisWorkbook“ daher immer auf die richtige Arbeitsmappe.

Um das Tabellenblatt „VBABerechnung“ innerhalb dieser Arbeitsmappe anzuspre-chen, setzen Sie die Auflistung „Sheets“ ein. Hinter dem Schlüsselwort „Sheets“ übergeben Sie in Klammern den Namen des Tabellenblatts.

Das Ganze erledigen Sie mit einem einzigen Befehl, den Sie überall in Ihren Pro-grammen einsetzen können:

ThisWorkbook.Sheets("VBABerechnung")

Zellen im Berechnungsblatt ansprechenHaben Sie das Berechnungsblatt adressiert, können Sie im nächsten Schritt einzelne Zellen in diesem Tabellenblatt ansprechen. Dazu setzen Sie die beiden Methoden „Range“ oder „Cells“ ein.

Das Tabellenblatt zur Berechnung ist angelegt

1

Page 12: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

12Fachverlag für Computerwissen

An die „Range“-Methode können Sie eine Zelladresse in alphanumerischer Schreib-weise übergeben. Wenn Sie also beispielsweise die Zelle B2 im Berechnungsblatt ansprechen möchten, verwenden Sie das folgende VBA-Kommando:

ThisWorkbook.Sheets("VBABerechnung").Range("B2")

Alternativ verwenden Sie die „Cells“-Methode, wenn Ihnen die Informationen über die Position der Zelle in numerischer Form vorliegen. Dem Kommando „Cells“ übergeben Sie als ersten Parameter eine Zeilennummer und als zweiten Parameter eine Spaltennummer. Das folgende Beispiel zeigt, wie Sie die Zelle B2 aus dem Berechnungsblatt über die „Cells“-Methode ansprechen:

ThisWorkbook.Sheets("VBABerechnung").Cells(2,2)

Wie Sie Zellinhalte in Berechnungsblätter eintragenSie setzen die Eigenschaft „Formula“ ein, um einen Inhalt aus einem VBA-Pro-gramm heraus in eine Zelle zu schreiben, die Sie per „Range“ oder „Cells“ adressiert haben. Dieser Eigenschaft können Sie einfach einen Wert zuweisen, den Excel dann in die entsprechende Zelle übernimmt.

Stellen Sie sich folgende Aufgabe vor: Ihr VBA-Programm soll über ein Dialog-fenster eine Zahl vom Anwender abfragen, diese Zahl mit 988,471 multiplizieren und das auf glatte Zehnerwerte gerundete Ergebnis als Betrag mit zwei Nachkom-mastellen und dem Euro-Zeichen darstellen.

Im ersten Teil dieses Programms übernehmen Sie den Inhalt aus dem Dialogfenster vom Anwender und tragen ihn in Zelle A1 des Tabellenblatts „VBABerechnung“ ein. Hier ist der passende Programmcode für diese Aufgabe:

Sub RechnenUndRunden()

Dim Eingabe As Variant

Eingabe = InputBox("Ausgangswert eingeben", _ "Eingabe für Berechnung")

If Eingabe <> "" Then

ThisWorkbook.Sheets("VBABerechnung").Range("a1"). _ Formula = Eingabe

End If

End Sub

Wenn Sie dieses Programm starten, zeigt Excel zunächst ein Eingabefenster an, wie es in der folgenden Abbildung 2 dargestellt ist:

Page 13: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

13Fachverlag für Computerwissen

Dieses Eingabefenster wird über den Befehl „InputBox“ angelegt. Geben Sie hier eine Zahl Ihrer Wahl ein und klicken Sie auf die OK-Schaltfläche. Daraufhin trägt Excel die Zahl in die Zelle A1 des Tabellenblatts „VBABerechnung“ ein. Durch die Wertzuweisung im VBA-Quelltext enthält die Variable „Eingabe“ anschließend die Zahl, die der Anwender in das Dialogfenster eingetragen hat.

In dieses Tabellenblatt müssen Sie nun die entsprechenden Formeln einbinden, um die gewünschte Berechnung durchzuführen.

Diese Formeln benötigen Sie in Ihrem BerechnungsblattAusgangspunkt ist die Zahl in Zelle A1. Sie soll für das Beispiel mit dem Wert 988,471 multipliziert werden.Tragen Sie daher im Tabellenblatt „VBABerechnung“ in Zelle A2 die folgende Formel ein:

=A1*988,471

Anschließend soll dieses Ergebnis auf glatte Zehnerwerte gerundet werden. Dazu verwenden Sie die folgende Formel in Zelle A3:

=RUNDEN(A2;-2)

Durch diese Formel wird die Zahl aus Zelle A2 ab der zweiten Stelle vor dem Kom-ma gerundet. Um festzustellen, ob die Formeln funktionieren, geben Sie die Zahl 1 in Zelle A1 ein. Die folgende Abbildung 3 zeigt, welche Inhalte daraufhin die drei Zellen A1 bis A3 besitzen:

Im nächsten Schritt soll die Zelle wie gewünscht formatiert werden: zwei Nach-komma stellen mit Euro-Symbol. Klicken Sie Zelle A3 an, drücken Sie die Tasten-kombination S1 und wählen Sie im Register Zahlen die passende Formatie-rung aus der Gruppe Währung. Die folgende Abbildung 4 zeigt, wie die formatierte Tabelle aussieht. Sie sehen, dass die Ergebniszelle A3 nun das gewünschte Format erhalten hat.

Eine Zahl wird vom Anwender abgefragt

Excel führt die Berechnung durch

2

3

Page 14: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

14Fachverlag für Computerwissen

Ergebnisse aus Berechnungsblättern auslesenWird nun im Rahmen des VBA-Programms eine andere Zahl in Zelle A1 eingetra-gen, dann ändert sich auch das Ergebnis in Zelle A3. Sie müssen nun dieses Ergeb-nis nur noch in Ihre VBA-Lösung einlesen. Dazu stellt Ihnen VBA zwei Methoden zur Verfügung: „Value“ und „Text“. Über die Methode „Value“ lesen Sie den nume-rischen Inhalt einer Zelle aus. Mit der Methode „Text“ lesen Sie den Inhalt der Zelle aus, wie er von Excel dargestellt wird.

Denken Sie an die Abbildung oben: Fragen Sie Zelle A3 mit „Value“ ab, dann erhal-ten Sie die Zahl 1.000 als Rückgabewert. Setzen Sie hingegen die Methode „Text“ ein, liefert Ihnen Excel den Ausdruck „1.000,00 €“ als Ergebnis.

Indem Sie die Übernahme Ihres Berechnungsergebnisses aus der Tabelle mit einer Wertzuweisung an eine Variable verbinden, können Sie mit dem berechneten Wert in Ihrem VBA-Programm sofort weiterrechnen. Die folgende Programmzeile zeigt, wie das aussieht:

Ausgabe = ThisWorkbook.Sheets("VBABerechnung"). _ Range("a3").Text

Hier wird das Ergebnis aus der Berechnungstabelle in die Variable „Ausgabe“ über-nommen. Setzen Sie diese Variable ein, um dem Anwender das Berechnungsergeb-nis in einem Dialogfenster anzuzeigen. Dazu ergänzen Sie das Unterprogramm „RechnenUndRunden“ wie folgt:

Sub RechnenUndRunden()

Dim Eingabe As Variant

Dim Ausgabe, Dialog As Variant

Eingabe = InputBox("Ausgangswert eingeben", _ "Eingabe für Tabelle")

If Eingabe <> "" Then

ThisWorkbook.Sheets("VBABerechnung").Range("a1"). _ Formula = Eingabe

Ausgabe = ThisWorkbook.Sheets("VBABerechnung"). _ Range("a3").Text

Ergebniszelle ist korrekt formatiert

4

Page 15: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

15Fachverlag für Computerwissen

MsgBox "Das Ergebnis lautet: " & Ausgabe, vbOKOnly, _ "Berechnungsergebnis")

End If

End Sub

Wenn Sie das Programm starten, zeigt Excel zunächst das Eingabefenster an, in das Sie eine Zahl eintragen können. Anschließend zeigt Excel das Ergebnisfens-ter nach Ausführung der Rechenoperation in der Excel-Tabelle. Die Abbildung 5 zeigt, welches Ergebnis die Zahl 184 als Eingabe liefert.

Wenn Sie anstelle der Eigenschaft „Text“ für die Wertzuweisung an die Variable „Ausgabe“ die Eigenschaft „Value“ verwenden, erhalten Sie ein Ergebnis ohne Zah-lenformat. Möchten Sie mit den Inhalten einer Zelle in VBA weiterrechnen, so lesen Sie die Zelle über die Eigenschaft „Value“ aus. Interessiert Sie aber die Zelle inklusi-ve der Formatierung, dann verwenden Sie die Eigenschaft „Text“.

Wie Sie Ihre Berechnungen im Makro versteckenDas Tabellenblatt, in dem Sie die Berechnungen für Ihre VBA-Programme durch-führen, sollten Sie immer verbergen. So verhindern Sie nicht nur neugierige Bli-cke, sondern vor allem das versehentliche Ändern oder Löschen von Formeln und Funktionen, die Sie in Ihren VBA-Programmen benötigen.

Auf das verborgene Berechnungsblatt können Sie mit Ihren Makros jederzeit zu-greifen, es ist allerdings nicht mehr sichtbar. Zum Verbergen eines Tabellenblatts setzen Sie die Eigenschaft „Visible“ ein. Über eine Wertzuweisung der Werte „True“ oder „False“ steuern Sie, ob ein Tabellenblatt sichtbar oder unsichtbar ist. Verwen-den Sie das folgende Makro, um Ihr Berechnungsblatt zu verbergen:

Sub VersteckMich()

ThisWorkbook.Sheets("VBABerechnung").Visible = False

End Sub

Wenn Sie dieses Unterprogramm aufrufen, wird das Tabellenblatt „VBABerech-nung“ unsichtbar. Der Name des Tabellenblatts ist in der Registerleiste nicht mehr

Die Ausgabe des Ergebniswerts aus der Tabelle

5

Page 16: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

16Fachverlag für Computerwissen

sichtbar. Dennoch ist das Tabellenblatt unsichtbar vorhanden und kann für Ihre Berechnungen noch immer problemlos verwendet werden.

Es empfiehlt sich, den Aufruf dieses Unterprogramms direkt im Autostartpro-gramm „Auto_open“ vorzunehmen, das Excel beim Öffnen der Arbeitsmappe au-tomatisch aufruft. Dadurch sorgen Sie dafür, dass das Tabellenblatt immer automa-tisch versteckt wird:

Sub auto _ open()

Call Verbergen

End Sub

Wenn Sie die Berechnungen in Ihrem Tabellenblatt verändern möchten, müssen Sie das Blatt natürlich wieder sichtbar machen. Integrieren Sie zu diesem Zweck ein entsprechendes Unterprogramm in Ihren VBA-Code:

Sub EntdeckMich()

ThisWorkbook.Sheets("VBABerechnung").Visible = True

End Sub

Rufen Sie dieses Unterprogramm auf, wenn Sie Formeln in Ihrer Berechnungs-tabelle verändern möchten. Anschließend sorgen Sie mit dem Start des Makros „VersteckMich“ dafür, dass das Berechnungsblatt wieder verborgen wird und die Berechnungen versteckt sind. Bedenken Sie aber, dass das Verstecken eines Tabel-lenblattes keinen effizienten Schutz vor neugierigen Augen darstellt, sondern zu Komfortzwecken gedacht ist. Es ist mit wenigen Handgriffen möglich, versteckte Tabellenblätter wieder anzuzeigen.

Download

Dateinamen: VBA-Berechnung.xlsAlle Beispieldateien finden Sie zum Download unter www.excelwissen.de/vba

Page 17: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

17Fachverlag für Computerwissen

Clever: Mit diesem Programm lösen Sie Sudokus innerhalb von Sekunden!

Mit der Arbeitsmappe aus diesem Beispiel können Sie …… jedes Sudoku in wenigen Sekunden lösen

… sich den Lösungsweg schrittweise anzeigen lassen

… beliebige eigene Sudokus erstellen

Für Sie als Anwender liegt die Frage nahe: Wie kann Excel mir helfen, ein Su-doku zu lösen? Sie werden dabei schnell feststellen, dass der Versuch, durch Excel-Formeln eine Unterstützung im Lösungsprozess zu bekommen, schnell zu hoher Komplexität führt.

Aber Excel verfügt – neben der Möglichkeit mit Formeln zu arbeiten – über die integrierte Programmiersprache VBA. Und die eignet sich hervorragend zur Lösung rationaler komplexer Probleme, wie Sudoku eines darstellt.

Dateiname: Sudoku.xls1

Ausgangssituation und Lösung eines Sudokus

Page 18: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

18Fachverlag für Computerwissen

Welche Möglichkeiten bietet Ihnen das Programm?1. Lösung eines Sudokus

Sie geben Ihr Sudoku in den Zellbereich B3:J11 ein, vgl. Abbildung 1 .

Über die beiden Optionen• Falls mehrere Alternativen möglich sind: Auswahl zufällig vornehmen• Lösungsweg protokollierenkönnen Sie den Ablauf des Programms beeinflussen.

Die erste Option wirkt sich nur bei Sudokus aus, bei denen mehrere Lösungsal-ternativen bestehen.• Option ausgeschaltet: Das Programm ermittelt die Lösung nach einem

festen Schema. Ein zweiter Aufruf des Programms liefert eine identische Lösung.

• Option eingeschaltet: Das Programm arbeitet zufallsgesteuert und erzeugt bei einem zweiten Aufruf eventuell eine alternative Lösung.

Über die zweite Option schalten Sie das Protokoll des Lösungsweges ein oder aus.• Option ausgeschaltet: Das Programm ermittelt lediglich die Lösung und

schreibt sie in den Zellbereich L3:T11.• Option eingeschaltet: Das Programm protokolliert im Blatt „Lösungsweg“

detailliert den Weg zum Erreichen der gefundenen Lösung, vgl. dazu die beiden folgenden Abbildungen 2 3 , bei denen ein Schritt zur Reduktion der Anzahl der offenen Möglichkeiten erläutert wird.

Sie starten das Programm durch Klick auf die Schaltfläche Sudoku lösen.

Erläuterung einer möglichen Reduktion

2

Page 19: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

19Fachverlag für Computerwissen

2. Ausgangsbild für eigene Lösung erstellen

Sie geben Ihr Sudoku in den Zellbereich B3:J11 ein und klicken dann auf die Schaltfläche Ausgangsbild für eigene Lösung erstellen.

Die Schaltfläche bewirkt lediglich, dass zu Ihrem Sudoku im Blatt „Lösungs-weg“ das in der Abbildung 4 gezeigte Ausgangsbild erzeugt wird. Mit diesem Ausgangsbild können Sie manuell weiterarbeiten, in dem Sie schrittweise in je-dem Feld alle Ziffern löschen, die dort nicht auftreten können, z. B. löschen Sie in dem Feld in der linken oberen Ecke die Ziffern 6, 2 und 4 usw.

3. Eigene Sudokus erzeugen

Um beliebige eigene Sudokus zu erzeugen, blättern Sie im Tabellenblatt „Sudoku“ etwas nach unten.

Erläuterung einer möglichen Reduktion

Ausgangsbild für eigene Lösung

3

4

Page 20: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

20Fachverlag für Computerwissen

Sie geben in den Zellbereich B28:J36 das von Ihnen gewünschte Muster ein. Dazu können Sie ein „x“ oder ein beliebiges anderes Zeichen verwenden. 5

Anschließend klicken Sie auf die Schaltfläche Nach obigem Muster ein eige-nes Sudoku erzeugen.

Das Programm erzeugt Ihnen jetzt ein Sudoku und gibt das Ergebnis im Zell-bereich L28:T36 aus.

Das Programm zur Erzeugung des Sudokus verwendet den oben beschriebenen Zufallsmechanismus. Sie haben daher bei jedem Programmlauf die Chance auf eine neue Alternative.

Ein Blick hinter die Kulissen des ProgrammsDas Programm geht am Anfang davon aus, dass in jedem Feld, für das kein Vor-gabe wert existiert neun offene Möglichkeiten bestehen, so wie es in Abbildung 4 zu sehen ist.

Schrittweise werden diese Möglichkeiten re-duziert, in dem zu jeder bereits vorhandenen oder gefundenen Lösungsziffer in der zuge-hörigen Zeile, der zugehörigen Spalte und dem zugehörigen Unterquadrat diese Ziffer bei den offenen Möglichkeiten gestrichen wird.

Eine systematische Anwendung dieser ein-fachen Reduktion führt zu dem in Abbildung 6 gezeigten Ergebnis. Die einfache Reduktion ist ausgeschöpft

6

Erzeugung eines eigenen Sudokus nach einem vorgegebenen Muster

5

Page 21: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

21Fachverlag für Computerwissen

Es gibt eine weitere Reduktionstechnik, die etwas komplexer ist.

Dazu schauen wir uns die Situation in Abbil-dung 7 an. In der markierten Spalte beste-hen in den beiden Feldern in Zeile 4 und in Zeile 6 nur die Möglichkeiten 2 oder 3. Diese beiden Ziffern sind in den beiden genann-ten Feldern durch einen hellen Hintergrund markiert.

Die beiden Felder teilen also die beiden Zif-fern 2 und 3 unter sich auf, auch wenn noch nicht feststeht, welche Ziffer in welchem Feld stehen wird. Auf jeden Fall scheiden diese beiden Ziffern als Möglichkeiten in den üb-rigen Feldern der Gruppe aus und können dort gelöscht werden.

Das Ergebnis des Löschprozesses zeigt die Abbildung 8 .

Analog zu der Reduktionsmöglichkeit mit den beiden Zahlen 2 und 3 gibt es die Mög-lichkeit zu reduzieren, wenn es drei Werte gibt, die nur in drei Feldern auftreten oder wenn es vier Werte gibt, die nur in vier Feldern auftreten, usw.

Einfache und komplexe Reduktion ergeben in unserem Beispiel die in Abbildung 9 gezeigte Situation.

Weitere Reduktionen sind in diesem Fall durch die beiden genannten Verfahren nicht möglich.

Das Programm kommt jetzt nur noch mit einem systematischen Probierprozess weiter.

Dazu wird eines der noch offenen Felder aus-gesucht, in dem möglichst wenige Optionen bestehen, im Idealfall nur zwei Möglich-keiten.

Eine dieser Möglichkeiten wird probehalber gesetzt.

Ausgangssituation für eine komplexe Reduktion

7

Ergebnis der komplexen Reduktion

8

Ergebnis der einfachen und der komplexe Reduktion

9

Page 22: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

22Fachverlag für Computerwissen

Falls die Option Falls mehrere Alternativen möglich sind: Auswahl zufällig vornehmen aktiviert ist, wird das Probierfeld unter allen infrage kommenden Feldern zufällig ausge-wählt. Anderenfalls wird nach einem festen Verfahren immer das erste Feld gewählt.

Grundsätzlich kann die willkürliche Wahl aus zwei möglichen Alternativen in die Sack-gasse führen und gelegentlich kommt das auch vor.

Im vorliegenden Beispiel hat das Programm in dem in Abbildung 10 markierten Feld den Wert 7 gewählt. Anschließend an diese Wahl wird sofort eine einfache Reduktion durch-geführt, die in diesem Fall dazu führt, dass sich zehn weitere Lösungswerte finden. Das Ergebnis zeigt die Abbildung 11 .

Wenn sich herausstellen sollte, dass das Su-doku durch die Wahl der 7 unlösbar wird, dann wird es wieder auf den Stand zurück-gesetzt, der vor der Wahl der 7 erreicht war und es wird die zweite Alternative gewählt, nämlich die 3.

Im vorliegenden Fall führt die Wahl der 7 nicht in die Sackgasse und auch die Wahl der 3 hätte zu einer vollständigen Lösung geführt. Dieses Sudoku hat nämlich mehre-re Lösungen.

Beim Probierprozess werden im Anschluss an die probeweise Wahl eines Wertes immer alle Reduktionsmöglichkeiten ausgeschöpft.

Falls sich dadurch noch keine vollständige Lösung ergibt, wird der Probierprozess mit einem weiteren freien Feld fortgesetzt.

Im vorliegenden Fall findet das Programm nach vier Probierschritten mit den jeweils zugehörigen Reduktionen die in Abbildung 1 gezeigte Lösung.

Ausgangssituation für den systematischen Probierprozess

10

Ergebnis nach Wahl der 7 und anschließender Reduktion

11

Download

Dateinamen: Sudoku.xlsAlle Beispieldateien finden Sie zum Download unter www.excelwissen.de/vba

Page 23: Schnellkurs VBA - tipps.excel-aktuell.detipps.excel-aktuell.de/fileadmin/dateien/EXL/microsite/E-Book-5-Schnellkurs-VBA.pdf · Schnellkurs VBA: Einstieg und Berechnungen Fachverlag

Schnellkurs VBA: Einstieg und Berechnungen

23Fachverlag für Computerwissen

Impressum

„Schnellkurs VBA: Einstieg und Berechnungen“ enthält exklusive Auszüge aus dem Fachdienst „Der Excel-Berater“. „Schnellkurs VBA: Einstieg und Berechnungen“ erscheint beim:

VNR Verlag für die Deutsche Wirtschaft AGComputerwissenTheodor-Heuss-Str. 2–453095 Bonn

Kundenservice: Tel.: (02 28) 9 55 01 50 Fax: (02 28) 3 69 60 01

Die Beiträge wurden mit Sorgfalt recherchiert und überprüft. Sie basieren jedoch auf der Richtigkeit uns erteilter Auskünfte und unterliegen Veränderungen. Daher ist eine Haftung – auch für telefonische Auskünfte – ausgeschlossen.

Chefredakteur: Martin Althaus (V.i.S.d.P.), SchwelmHerausgeber: Patricia Sparacio, Bonn Produktleitung: Barbara Hink, Bonn Layout: Tanja Bregulla, Aachen

© Copyright 2014 by VNR Verlag für die Deutsche Wirtschaft AG, Amtsgericht Bonn, HRB 8165, Vorstand: Helmut Graf, Guido EmsBonn, Warschau, Bukarest, Moskau, London, Manchester, Madrid, Johannesburg, Paris

Vervielfältigungen jeder Art sind nur mit Genehmigung des Verlags gestattet.