Öffnen Sie Excel und den VBE (Visual Basic Editor). Sofern nicht geändert, enthält das VBE-Fenster die Projekt-Explorer Fenster und die Eigenschaften Fenster (diese sind über das Sicht Speisekarte).
Projektexplorer: Funktioniert wie ein Dateimanager. Hilft Ihnen beim Navigieren im Code in Ihrer Arbeitsmappe.
Eigenschaftenfenster: Zeigt die Eigenschaften des aktuell aktiven Objekts (z.B. Blatt1) der aktuellen Arbeitsmappe (z.B.Buch 1).
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 demonstriert den Unterschied zwischen der Aufzeichnung von absoluten und relativen Referenzen.
1. Wählen Sie auf einem leeren Arbeitsblatt in einer neuen Arbeitsmappe Zelle C10
2. Starten Sie die Makro-Recorder mit Option zum Speichern von Makros in Dieses Arbeitsbuch. An dieser Stelle erstellt der VBE eine neue Module Mappe. Es ist ziemlich sicher, es sich anzusehen - Ihre Aktionen werden nicht aufgezeichnet. Drücke den [+] neben dem Ordner und sehen Sie, dass die VBE ein Modul in den Ordner gelegt und es benannt hat Modul 1. Doppelklicken Sie auf das Modulsymbol, um das Codefenster zu öffnen. Wechseln Sie zurück zu Excel.
3. Stellen Sie sicher, dass die Relative Referenz Knopf auf dem Höre auf, aufzunehmen Symbolleiste ist NICHT eingedrückt.
4. Zelle auswählen B5 und stoppen Sie den Rekorder.
5. Wechseln Sie zur VBE und sehen Sie sich den Code an:
Bereich("B5").Wählen
6. Zeichnen Sie nun ein weiteres Makro auf, genau so, aber diesmal mit dem Relative Referenz Taste eingedrückt.
7. Wechseln Sie zur VBE und sehen Sie sich den Code an:
ActiveCell.Offset(-5, -1).Range("A1").Select
8. Zeichnen Sie nun ein weiteres Makro auf, aber anstatt Zelle B5 auszuwählen, wählen Sie einen Block von Zellen 3x3 beginnend bei B5 aus (wählen Sie Zellen B5:F7)
9. Wechseln Sie zur VBE und sehen Sie sich den Code an:
ActiveCell.Offset(-5, -1).Range("A1:B3").Select
10. Spielen Sie die Makros ab, nachdem Sie zuerst eine andere Zelle als C10 ausgewählt haben (für Makro2 und Makro3 muss sich die Startzelle in Zeile 6 oder darunter befinden - siehe Schritt 11 unten)
Makro1 - verschiebt die Auswahl immer nach B5
Makro2 - verschiebt die Auswahl in eine Zelle 5 Zeilen nach oben und 1 Spalte links von der ausgewählten Zelle.
Makro3 - wählt immer einen Block von sechs Zellen aus, beginnend 5 Zeilen nach oben und 1 Spalte links von der ausgewählten Zelle.
11. Führen Sie Macro2 aus, aber erzwingen Sie 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 es anweist, eine Zelle 5 Zeilen über dem Startpunkt auszuwählen, die sich außerhalb des oberen Bereichs des Blatts befindet. Drücken Sie Debuggen zu dem Teil des Makros gebracht werden, der das Problem verursacht hat.
HINWEIS: Wenn sich die VBE im Debugmodus befindet, wird die Codezeile, die das Problem verursacht hat, gelb hervorgehoben. Sie müssen das Makro "zurücksetzen", bevor Sie fortfahren können. Drücke den Zurücksetzen in der VBE-Symbolleiste oder gehen Sie zu Ausführen > Zurücksetzen. Die gelbe Hervorhebung verschwindet und die VBE verlässt den Debug-Modus.
12. Es ist wichtig, Benutzerfehler wie diesen zu antizipieren. Der einfachste Weg besteht darin, den Code so zu ändern, dass Fehler einfach ignoriert und mit der nächsten Aufgabe fortgefahren werden. Tun Sie dies, indem Sie die Zeile hinzufügen …
Bei Fehler Fortsetzen als nächstes
… direkt über der ersten Zeile des Makros (unterhalb der Zeile Sub Macro1()
13. Laufen Makro2 wie zuvor, zu hoch auf dem Blatt beginnend. Diesmal weist die von Ihnen eingegebene Zeile 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 Behandlung von Fehlern mit Vorsicht. 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 etwas schief gelaufen ist.
14. Ändern Sie den Code von Makro2 einen ausgefeilteren Fehlerhandler einzubeziehen, also:
Untermakro2()
Bei Fehler GoTo ErrorHandler
ActiveCell.Offset(-5, -1).Bereich("A1").Select
Abo beenden
Fehlerhandler:
MsgBox "Sie müssen unter Zeile 5 beginnen"
End Sub
15. Diesmal wird dem Benutzer ein Dialogfeld angezeigt, wenn etwas schief geht. Wenn kein Fehler auftritt, bewirkt die Zeile Exit Sub, dass das Makro beendet wird, nachdem es seine Arbeit erledigt hat - andernfalls würde der Benutzer die Meldung auch ohne Fehler sehen.
Aufgezeichnete Makros verbessern
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 oft viel mehr Code als nötig. Die folgenden Übungen zeigen, wie Sie Code, der von einem aufgezeichneten Makro erstellt wurde, verbessern und optimieren können.
Übung 2: Aufgezeichnete Makros verbessern
Diese Übung zeigt, dass beim Aufzeichnen von Makros oft mehr Code generiert wird als nötig. Es demonstriert die Verwendung der With-Anweisung, um den Code zu präzisieren.
1. Wählen Sie eine beliebige Zelle oder einen Zellenblock aus.
2. Starten Sie den Makrorekorder und rufen Sie das Makro FormatCells auf. Die Einstellung Relative Referenzen ist nicht relevant.
3. Gehe zu Format > Zellen > Schriftart und wähle Times New Roman und rot.
Gehe zu Muster und wähle Gelb.
Gehe zu Ausrichtung und wähle Horizontal, Mitte
Gehe zu Nummer und wähle Währung.
4. Klicken Sie auf OK und stoppen Sie den Rekorder.
5. Klicken Sie auf das Rückgängig machen Taste (oder Strg+Z), um Ihre Änderungen am Arbeitsblatt rückgängig zu machen.
6. Wählen Sie einen Zellenblock aus und führen Sie die Zellen formatieren Makro. Beachten Sie, dass es nicht rückgängig gemacht werden kann! Geben Sie die Zellen ein, um das Ergebnis der Formatierung zu überprüfen.
7. Sehen Sie sich den Code an:
Unterformatauswahl()
Selection.NumberFormat = "$#,##0.00"
Mit Auswahl
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Ausrichtung = 0
.ShrinkToFit = False
.MergeCells = False
Ende mit
Mit Selection.Font
.Name = "Times New Roman"
.FontStyle = "Regulär"
.Größe = 10
.Durchgestrichen = Falsch
.Hochgestellt = Falsch
.Tiefgestellt = Falsch
.OutlineFont = False
.Schatten = Falsch
.Underline = xlUnderlineStyleNone
.Farbindex = 3
Ende mit
Mit Selection.Interior
.Farbindex = 6
.Muster = xlSolid
.PatternColorIndex = xlAutomatic
Ende mit
End Sub
Ändern Sie die Schriftart in Times New Roman
Ändern Sie die Schriftfarbe in rot
Ändern Sie die Füllfarbe in Gelb
Drücke den Center Taste
Drücke den Währung Taste
13. Sehen Sie sich den Code an. Sie bekommen immer noch viele Dinge, die Sie nicht unbedingt wollen. Excel zeichnet alle auf Ursprünglich die Einstellungen. Die meisten davon können sicher gelöscht werden.
14. Experimentieren Sie mit der Bearbeitung direkt im Code, um Farben, Schriftart, Zahlenformat usw. zu ändern.
Übung 3: Beobachten Sie, wie ein Makro aufgezeichnet wird
Diese Übung zeigt, dass Sie lernen können, indem Sie den Makro-Build beobachten, während er aufgezeichnet wird. Es ist auch ein Beispiel dafür, wenn die With-Anweisung manchmal nicht angemessen ist.
1. Öffnen Sie die Datei VBA01.xls.
Während dieses Arbeitsblatt optisch in Ordnung ist und vom Benutzer verstanden werden kann, kann das Vorhandensein leerer Zellen zu Problemen führen. Versuchen Sie, die Daten zu filtern und sehen Sie, was passiert. Gehe zu Daten > Filter > Autofilter und filtern Sie nach Region oder Monat. Es ist klar, dass Excel nicht die gleichen Annahmen macht wie der Benutzer. Die leeren Zellen müssen ausgefüllt werden.
2. Bringen Sie die Excel- und VBE-Fenster (vertikal) nebeneinander aneinander.
3. Wählen Sie eine beliebige Zelle innerhalb der Daten aus. Wenn es sich um eine leere Zelle handelt, muss sie an eine Zelle angrenzen, die Daten enthält.
4. Starten Sie den Makrorekorder und rufen Sie das Makro auf FillEmptyCells. Auf Aufnahme einstellen Relative Referenzen.
5. Suchen Sie im VBE-Fenster das Modul (Module1) für die aktuelle Arbeitsmappe und doppelklicken Sie darauf, um den Bearbeitungsbereich zu öffnen, und schalten Sie dann das Projekt-Explorer-Fenster und das Eigenschaftsfenster aus (nur um Platz zu schaffen).
6. 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 ein =[Pfeil nach oben] dann drücken Strg+Eingabe (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 ist ausreichend)
Schritt 6. Bearbeiten > Inhalte 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. Stoppen Sie die Aufnahme.
7. Sehen Sie sich den Code an:
Sub FillEmptyCells()
Auswahl.AktuelleRegion.Auswahl
Selection.SpecialCells(xlCellTypeBlanks).Select
Auswahl.FormelR1C1 = "=R[-1]C"
Auswahl.AktuelleRegion.Auswahl
Auswahl.Kopie
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
Falsch, Transponieren:= Falsch
Application.CutCopyMode = False
End Sub
8. Beachten Sie die Verwendung von Leerzeichen und Unterstrich „ _“, um das Aufteilen einer einzelnen Codezeile in eine neue Zeile anzuzeigen. Ohne dies würde Excel den Code als zwei separate Anweisungen behandeln.
9. Da dieses Makro mit gut durchdachten Befehlen aufgezeichnet wurde, gibt es wenig unnötigen Code. In dem Spezial einfügen alles nach dem Wort „xlValues“ kann gelöscht werden.
10. Probieren Sie das Makro aus. Verwenden Sie dann das AutoFilter-Tool und beachten Sie den Unterschied.