Öffnen Sie Excel und den VBE (Visual Basic Editor). Sofern es nicht geändert wurde, enthält das VBE-Fenster das Fenster ProjectExplorer und das Fenster Properties (auf diese kann über das Menü Ansicht zugegriffen werden).

Projektexplorer: Funktioniert wie ein Dateimanager. Hilft Ihnen beim Navigieren im Code in Ihrer Arbeitsmappe.

Eigenschaftenfenster: Zeigt die Eigenschaften des aktuell aktiven Objekts (z. B. Sheet1) der aktuellen Arbeitsmappe (z. B.Book1) an.

In diesem Artikel erfahren Sie, wie einfach die Makroaufzeichnung in Excel ist.

Übung 1: Aufzeichnen eines Makros.

Diese Übung zeigt, was passiert, wenn ein Makro aufgezeichnet wird, und zeigt den Unterschied zwischen der Aufzeichnung absoluter und relativer Referenzen.

  1. Wählen Sie auf einem leeren Arbeitsblatt in einer neuen Arbeitsmappe Zelle C10 aus. 2. Starten Sie den Makrorecorder mit der Option, das Makro in dieser Arbeitsmappe zu speichern. Zu diesem Zeitpunkt erstellt die VBE einen neuen Modules-Ordner. Es ist ziemlich sicher, es sich anzusehen – Ihre Aktionen werden nicht aufgezeichnet. Klicken Sie auf das [+] neben dem Ordner und stellen Sie sicher, dass die VBE ein Modul in den Ordner gelegt und es Module1 genannt hat. Doppelklicken Sie auf das Modulsymbol, um das Codefenster zu öffnen. Wechseln Sie zurück zu Excel.

  2. Stellen Sie sicher, dass die Schaltfläche Relative Referenz in der Symbolleiste Stop Recording NICHT gedrückt ist.

  3. Wählen Sie Zelle B5 aus und stoppen Sie den Rekorder.

  4. Wechseln Sie zur VBE und sehen Sie sich den Code an:

Bereich („B5“). Wählen Sie 6. Nehmen Sie nun ein anderes Makro auf genau die gleiche Weise auf, diesmal jedoch mit gedrückter Taste „Relative Referenz“.

  1. Wechseln Sie zum VBE und sehen Sie sich den Code an:

ActiveCell.Offset (-5, -1) .Range („A1“). Wählen Sie 8. Nehmen Sie nun ein anderes Makro auf, wählen Sie jedoch anstelle von Zelle B5 einen Zellenblock 3×3 ab B5 aus (wählen Sie Zellen B5: F7)

  1. Wechseln Sie zur VBE und sehen Sie sich den Code an:

ActiveCell.Offset (-5, -1) .Range („A1: B3“). Wählen Sie 10. Spielen Sie die Makros ab, nachdem Sie zuerst eine andere Zelle als C10 ausgewählt haben (für Macro2 und Macro3 muss sich die Startzelle in Zeile 6 oder befinden unten – siehe Schritt 11 unten)

Macro1 – verschiebt die Auswahl immer nach B5 Macro2 – verschiebt die Auswahl in eine Zelle 5 Zeilen nach oben und 1 Spalte links von der ausgewählten Zelle.

Macro3 – wählt immer einen Block mit sechs Zellen aus, beginnend mit 5 Zeilen und 1 Spalte links von der ausgewählten Zelle.

  1. Führen Sie Macro2 aus, erzwingen Sie jedoch einen Fehler, indem Sie eine Zelle in Zeile 5 oder höher auswählen. Das Makro versucht, eine nicht vorhandene Zelle auszuwählen, da sein Code sie auffordert, eine Zelle 5 Zeilen über dem Startpunkt auszuwählen, und das befindet sich oben auf dem Blatt. Drücken Sie Debug, um zu dem Teil des Makros zu gelangen, der das Problem verursacht hat.

HINWEIS: Wenn sich die VBE im Debug-Modus befindet, wird die Codezeile, die das Problem verursacht hat, gelb hervorgehoben. Sie müssen das Makro „zurücksetzen“, bevor Sie fortfahren können. Klicken Sie in der VBE-Symbolleiste auf die Schaltfläche Zurücksetzen oder gehen Sie zu Ausführen> Zurücksetzen. Die gelbe Markierung verschwindet und der VBE verlässt den Debug-Modus.

  1. Es ist wichtig, Benutzerfehler wie diesen zu antizipieren. Am einfachsten ist es, den Code so zu ändern, dass Fehler einfach ignoriert werden und mit der nächsten Aufgabe fortgefahren wird. Fügen Sie dazu die Zeile hinzu… On Error Resume Next… direkt über der ersten Zeile des Makros (unter der Zeile Sub Macro1 ()

  2. Führen Sie Macro2 wie zuvor aus und beginnen Sie zu hoch auf dem Blatt Die von Ihnen eingegebene Zeile weist Excel an, die Codezeile zu ignorieren, die nicht ausgeführt werden kann. Es gibt keine Fehlermeldung, und das Makro wird beendet, nachdem alles getan wurde. Verwenden Sie diese Methode zur vorsichtigen Behandlung von Fehlern. Dies ist ein sehr einfaches Makro Ein komplexeres Makro würde wahrscheinlich nicht wie erwartet funktionieren, wenn Fehler einfach ignoriert würden. Außerdem hat der Benutzer keine Ahnung, dass ein Fehler aufgetreten ist.

  3. Ändern Sie den Code von Macro2 so, dass er einen komplexeren Fehlerbehandler enthält:

Sub Macro2 ()

Bei Fehler GoTo ErrorHandler ActiveCell.Offset (-5, -1) .Range („A1“). Wählen Sie Exit Sub ErrorHandler:

MsgBox „Sie müssen starten unter Zeile 5 „

End Sub 15. Diesmal wird dem Benutzer ein Dialogfeld angezeigt, wenn etwas schief geht. Wenn kein Fehler vorliegt Die Zeile ExitSub bewirkt, dass das Makro beendet wird, nachdem es seine Arbeit erledigt hat. Andernfalls würde der Benutzer die Nachricht sehen, selbst wenn kein Fehler aufgetreten wäre.

Verbessern von aufgezeichneten Makros Der beste Weg, um die Grundlagen von VBA zu erlernen, besteht darin, ein Makro aufzuzeichnen und zu sehen, wie Excel seinen eigenen Code schreibt. Aufgezeichnete Makros enthalten jedoch häufig viel mehr Code als erforderlich. Die folgenden Übungen zeigen, wie Sie Code verbessern und optimieren können, der von einem aufgezeichneten Makro erstellt wurde.

Übung 2: Verbessern aufgezeichneter Makros Diese Übung zeigt, dass beim Aufzeichnen von Makros häufig mehr Code generiert wird als erforderlich. Es zeigt die Verwendung der With-Anweisung, um den Code zu précis.

  1. Wählen Sie eine Zelle oder einen Zellblock aus.

  2. Starten Sie den Makrorecorder und rufen Sie das Makro FormatCells auf. Die Einstellung Relative Referenzen ist nicht relevant.

  3. Gehen Sie zu Format> Zellen> Schriftart und wählen Sie Times New Roman und Red.

Gehen Sie zu Muster und wählen Sie Gelb.

Gehen Sie zu Ausrichtung und wählen Sie Horizontal, Mitte. Gehen Sie zu Nummer und wählen Sie Währung.

  1. Klicken Sie auf OK und stoppen Sie den Rekorder.

  2. Klicken Sie auf die Schaltfläche Rückgängig (oder Strg + Z), um Ihre Änderungen am Arbeitsblatt rückgängig zu machen.

  3. Wählen Sie einen Zellenblock aus und führen Sie das Makro FormatCells aus. Beachten Sie, dass es nicht rückgängig gemacht werden kann! Geben Sie die Zellen ein, um das Ergebnis der Formatierung zu überprüfen.

  4. Sehen Sie sich den Code an:

Sub FormatSelection ()

Selection.NumberFormat = „$ , # 0.00″

Mit Auswahl .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0.ShrinkToFit = False .MergeCells = False End With With Selection.Font .Name = „Times New Roman“

Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With With Selection.Interior .ColorIndex = 6 .PatternAl End With End Sub 8. Beachten Sie alle zusätzlichen Anweisungen, die aufgezeichnet wurden. Löschen Sie Codezeilen, damit nur noch Folgendes übrig bleibt:

Sub FormatSelection ()

Selection.NumberFormat = „$ , # 0.00″

Mit Auswahl .HorizontalAlignment = xlCenter End With With Selection.Font .Name = „Times New Roman“

ColorIndex = 3 End With With Selection.Interior .ColorIndex = 6 End With End Sub 9. Führen Sie das Makro aus, um den bearbeiteten Code zu testen. Es funktioniert immer noch wie zuvor.
  1. Ändern Sie nun den Code noch weiter:

Sub FormatSelection ()

Mit Auswahl .NumberFormat = „$ , # 0.00″

Font.ColorIndex = 3 .Interior.ColorIndex = 6 End With End Sub 11. Testen Sie das Makro. Alles funktioniert immer noch und der Code läuft viel schneller.
  1. Versuchen Sie, dasselbe Makro mithilfe der Symbolleistenschaltflächen aufzuzeichnen, anstatt zum Dialogfeld zu wechseln:

Ändern Sie die Schriftart in Times New Roman Ändern Sie die Schriftfarbe in Red Ändern Sie die Füllfarbe in Gelb Klicken Sie auf die Schaltfläche Center Klicken Sie auf die Schaltfläche Currency 13. Sehen Sie sich den Code an. Sie erhalten immer noch viele Dinge, die Sie nicht unbedingt wollen. Excel zeichnet alle Standardeinstellungen auf. Die meisten davon sind sicher zu löschen.

  1. Experimentieren Sie mit der direkten Bearbeitung des Codes, um Farben, Schriftart, Zahlenformat usw. zu ändern.

Übung 3: Beobachten, wie ein Makro aufgezeichnet wird Diese Übung zeigt, dass Sie lernen können, indem Sie beobachten, wie das Makro während der Aufzeichnung erstellt wird. Dies ist auch ein Beispiel dafür, wann die With-Anweisung manchmal nicht geeignet ist.

  1. Öffnen Sie die Datei VBA01.xls.

Während dieses Arbeitsblatt visuell in Ordnung ist und vom Benutzer verstanden werden kann, können leere Zellen Probleme verursachen. Versuchen Sie, die Daten zu filtern, und sehen Sie, was passiert. Gehen Sie zu Daten> Filter> Autofilter und filtern Sie nach Region oder Monat. Es ist klar, dass Excel nicht dieselben Annahmen trifft wie der Benutzer. Die leeren Zellen müssen gefüllt werden.

  1. Kacheln Sie die Excel- und VBE-Fenster (vertikal) so, dass sie nebeneinander liegen.

  2. Wählen Sie eine beliebige Zelle in den Daten aus. Wenn es sich um eine leere Zelle handelt, muss sie an eine Zelle mit Daten angrenzen.

  3. Starten Sie den Makrorecorder und rufen Sie das Makro FillEmptyCells auf.

Zum Aufzeichnen relativer Referenzen festlegen.

  1. Suchen Sie im VBE-Fenster das Modul (Modul1)

und doppelklicken Sie darauf Damit die aktuelle Arbeitsmappe den Bearbeitungsbereich öffnet, schalten Sie das Projekt-Explorer-Fenster und das Eigenschaften-Fenster aus (nur um Platz zu schaffen).

  1. Zeichnen Sie das neue Makro wie folgt auf:

Schritt 1. Strg + * (um die aktuelle Region auszuwählen)

Schritt 2. Bearbeiten> Gehe zu> Spezial> Leerzeichen> OK (um alle leeren Zellen in der aktuellen Region auszuwählen)

Schritt 3. Geben Sie = [Aufwärtspfeil] ein und drücken Sie dann Strg + Eingabetaste (um Ihre Eingabe in alle ausgewählten Zellen zu platzieren)

Schritt 4. Strg + * (um die aktuelle Region erneut auszuwählen)

Schritt 5. Strg + C (um die Auswahl zu kopieren – jede Methode reicht aus)

Schritt 6. Bearbeiten> Spezial einfügen> Werte> OK (um die Daten wieder an derselben Stelle einzufügen, aber die Formeln zu verwerfen)

Schritt 7. Esc (um den Kopiermodus zu verlassen)

Schritt 8. Beenden Sie die Aufnahme.

  1. Sehen Sie sich den Code an:

Sub FillEmptyCells ()

Selection.CurrentRegion.Select Selection.SpecialCells (xlCellTypeBlanks) .Select Selection.FormulaR1C1 = „= R [-1] C“

Selection.CurrentRegion.Select Selection.Copy Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _ False, Transponieren: = False Application.CutCopyMode = False End Sub 8. Beachten Sie die Verwendung des Leerzeichens „_“ Bezeichnet die Aufteilung einer einzelnen Codezeile in eine neue Zeile. Ohne dieses würde Excel den Code als zwei separate Anweisungen behandeln.

  1. Da dieses Makro mit gut durchdachten Befehlen aufgezeichnet wurde, gibt es wenig unnötigen Code. Im Paste Special kann alles nach dem Wort „xlValues“ gelöscht werden.

  2. Probieren Sie das Makro aus. Verwenden Sie dann das AutoFilter-Werkzeug und notieren Sie den Unterschied.