[Tutorial] Excel Makros für Einsteiger

Zuletzt aktualisiert am 22. Februar 2021 von Lars

Was sind Makros?

Makros sind kleine (oder auch grosse) Programme. Programme sind eine Folge von Anweisungen, die Deinem Computer sagen, was du zu tun hast.

Versuche dir immer im Gedächtnis zu behalten, dass Computer eigentlich "blöd" sind.

Die Folge von Anweisungen muss also ganz genau beschreiben, was der Rechner zu tun hat. Würdest du ein Programm für einen Roboter schreiben, um Badewasser einlaufen zu lassen, könnte das stark vereinfacht so aussehen:

  • Gehe zur Badewanne
  • Öffne den Wasserhahn
  • Stelle die Temperatur von 40 Grad ein

Was würde passieren? Der Roboter öffnet den Wasserhahn, stellt noch die richtige Temperatur ein und schaut blöde grinsend zu, wie die Wanne überläuft.

Am Schluss fehlte eine Anweisung in der Art:

  • Wenn Badewanne voll, dann drehe das Wasser ab

Derartige Anweisungen findest du in allen Programmiersprachen. Häufig wird sie englisch dargestellt und sieht so aus:

 then 

VBA - die Programmiersprache von Microsoft Office

Apropos Programmiersprache. Es gibt die verschiedensten Programmiersprachen, um Computerprogramme schreiben zu können. Manche sind einfach zu erlernen, andere schwieriger.

Microsoft Office hat eine eigene Programmiersprache: Visual Basic for Appplication oder kurz VBA. Sie gilt zwar als einfach, jedoch kämpft man als Anfänger oft doch auch ordentlich damit.

Zum Glück musst du als Einsteiger nicht gleich VBA lernen, denn du kannst Aktionen auch aufzeichnen. Diese werden dann von Excel selbständig in VBA-Code abgelegt und können von dir bei Bedarf wiederholt werden.

Trotzdem ist es wichtig, sich das, was im Hintergrund passiert, bewusst zu machen. Jeder falscher Klick, den du beim Aufzeichnen machst, landet so in deinem Makro und verhindert daher möglicherweise die korrekte Funktion. Es ist daher nicht von Nachteil, etwas VBA zu lernen, denn dann kannst du das aufgezeichnete Makro korrigieren.

Ich selbst habe (noch) kein Tutorial zu VBA auf it-zeugs.de, aber du findest auf wikibooks eine gutes Tutorial: VBA in Excel.

Makros in Excel aufzeichnen

Jetzt geht es los. Zunächst einmal musst du die Entwicklertools einblenden, falls noch nicht geschehen.

  • Datei
  • Optionen
  • Menüband anpassen

Ist der Haken bei "Entwicklertools" gesetzt? Wenn nicht, setze ihn bitte und bestätige alle Einstellungen.

Excel: Einfache Makros erstellen
Excel: Entwicklertools einblenden

Jetzt solltest du den Reiter "Entwicklertools" sehen.

Excel: Einfache Makros erstellen
Excel: Makros aufzeichnen

Dort findest du auch die Funktion "Makros aufzeichnen".

Excel: Einfache Makros erstellen
Excel: Makros aufzeichnen

Vergib für dein Makro einen immer möglichst aussagekräftigen Namen. spätestens nach einem halben Jahr weisst du nicht mehr, was "Makro3711" macht. Bindestriche und Leerzeichen sind im Namen nicht erlaubt.

Tastenkombinationen würde ich nicht zu häufig verwenden, ausser du gehörst zu den Personen, die sich Tastenkombinationen gut merken können.

Die nächste Einstellung...

  • Persönliche Makroarbeitsmappe
  • Neue Arbeitsmappe
  • Diese Arbeitsmappe

...ist wichtig: Willst du das Makro in allen deinen Excel-Tabellen zur Verfügung haben, dann wählst du "Persönliche Makroarbeitsmappe. Willst du es nur in der aktuellen Mappe haben, dann "diese Arbeitsmappe". Was "Neue Arbeitsmappe" macht, ist dann sicher klar, diese Funktion kommt aber nach meiner Erfahrung selten zum Einsatz.

Bestätige mit OK.

Tippe einen Text und formatiere ihn nach deinen Wünschen.

Excel: Einfache Makros erstellen
Excel: Beispiel für das erste aufgezeichnete Makro

Beende dann die Aufzeichnung. Hierzu hast du zwei Möglichkeiten.

Excel: Einfache Makros erstellen
Excel: Beispiel für das erste aufgezeichnete Makro

Makros testen und gg. korrigieren

Nun solltest du das Makro testen. Dazu solltest du es aufrufen.

  • Entwicklertools
  • Makro
  • Gewünschtes Makro anklicken
  • Ausführen
Excel: Einfache Makros erstellen
Excel: Makro aufrufen

Wundere dich nicht, wenn nicht alles so funktioniert, wie es sein soll. Grund ist, dass die Makroaufzeichnung wirklich stur alles aufzeichnet, was du anklickst. Und im obigen Beispiel hast du sicher einmal geklickt und damit einen Fehler aufgezeichnet.

Du kannst Dir den Code des aufgezeichneten Makros anschauen, indem du...

  • Entwicklertools
  • Makro
  • Gewünschtes Makro anklicken
  • Bearbeiten

...auswählst.

Mein aufgezeichneter Code sieht so aus.

Sub Copyright()
'
' Copyright Makro
'

'
    ActiveCell.FormulaR1C1 = "© by Lars Schlageter"
    Range("F5").Select
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Selection.Font.Italic = True
    Selection.Font.Bold = True
End Sub

Mit Englisch-Kenntnissen und nötigenfalls dem Dictionary, kannst du dir den Inhalt des Makros versuchen zu erschliessen.

Mit der Zeile "ActiveCell..." wird in die aktive Zelle der Text geschrieben.

Und in der nächsten Zeile ist schon der Fehler. Hier habe ich beim Aufzeichnen einmal auf die Zelle geklickt und damit wurde ein Klick auf F5 aufgezeichnet. Das darf im Makro aber nicht sein, daher kann ich die Zeile mit einem Hochkomma auskommentieren und damit von der Verarbeitung ausschliessen.

Das Makro ändere ich also so ab und speichere es ab:

Sub Copyright()
'
' Copyright Makro
'

'
    ActiveCell.FormulaR1C1 = "© by Lars Schlageter"
'   Range("F5").Select
    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    Selection.Font.Italic = True
    Selection.Font.Bold = True
End Sub

Jetzt rufe ich es nochmal auf und siehe da, es funktioniert.

Makroaufruf vereinfachen

Immer umständlich über den Reiter Entwicklertools die Makros aufzurufen, macht nicht wirklich Spass. Der Makroaufruf lässt sich auf drei Möglichkeiten vereinfachen.

Tastaturkürzel vergeben

Wenn du dir Tastaturkürzel gut merken kannst, bist du hier richtig. Du kannst Tastaturkürzel beim Erstellen von Makros vergeben oder später in den "Optionen".

Excel: Einfache Makros erstellen
Excel: Tastaturkürzel für Makro vergeben

Excel verhindert übrigens, dass du Tastenkürzel verwendest, die bereits vergeben sind.

Makro in die Leiste für den Schnellzugriff legen

Klicke auf die Leiste für die Schnellzugriffe.

Wähle "Weitere Befehle"

Excel: Einfache Makros erstellen
Excel: Makro in die Schnellzugriffsleiste legen

Wähle bei "Befehle auswählen" "Makros". Wähle dann bei Makro "Hinzufügen"

Excel: Einfache Makros erstellen
Excel: Makro in die Schnellzugriffsleiste legen

Jetzt kannst du auf "Ändern" klicken und ein anderes Symbol auswählen. Ausserdem könntest du noch den Anzeigename ändern, was in der Leiste für Schnellzugriff aber nicht angezeigt wird. Bestätige alle Einstellungen durch.

Excel: Einfache Makros erstellen
Excel: Makro in die Schnellzugriffsleiste legen

Makro in das Menüband hinzufügen

Du kannst den Aufruf deiner Makros auch in das Menüband packen.

Wähle hierzu wieder:

  • Datei
  • Optionen
  • Menüband anpassen

Wähle bei "Befehle auswählen" "Makros". Makros musst du aber in eine benutzerdefinierte Gruppe packen. Jetzt müssen wir eine erstellen, ausser wenn du schon eine solche erstellt hast. Am Besten erstellst du aber auch eine neue Registerkarte und nennst diese Makros.

Excel: Einfache Makros erstellen
Excel: Makro in das Menüband legen

Die Funktion "Neue Registerkarte" erzeugt automatisch auch eine neue Gruppe, in die du die Makros verschieben kannst.

Excel: Einfache Makros erstellen
Excel: Makro in das Menüband legen

Wie bei der Leiste für den Schnellzugriff, kannst du hier die eigentlichen Makro-Symbole umbenennen und auch das Symbol selber ändern.

Excel: Einfache Makros erstellen
Excel: Makro in das Menüband legen

Weitere Makro-Beispiele

Was solltest du denn jetzt mittels Makro automatisieren? Im Prinzip alles, was du immer wieder machst. Das kann z.B. eine spezielle Seiteneinstellung sein oder die firmenspezifische Einrichtung der Excel-Seite. Auch die fortwährende Eingabe von Daten ist relativ gut automatisierbar. Denke daran, dass das nicht nur unter Excel funktioniert, sondern in allen Microsoft Office-Anwendungen.

Makros selber programmieren

Meiner Ansicht nach, wirst du mit dem alleinigen Aufzeichnen von Makros auf Dauer nicht besonders glücklich werden, sondern erst, wenn du ein gewisses Verständnis von VBA hast. Variablen, Abfragen und schleifen mögen dir da erst einmal äusserst kompliziert vorkommen, doch sie verlieren schnell ihren Schrecken.

Neben dem erwähnten Tutorial: VBA in Excel gibt es zahlreiche Quellen im Internet, aus denen du das nötige Wissen ziehen kannst.

Als "Appetithappen" das folgende Makro. Was mag es wohl machen?

Sub ForTest()

   For intval2 = 46 To 50
        For intval = 1 To 3
            Cells(intval2, intval) = intval
        Next intval
    Next intval2
    
    MsgBox "In Zelle 49,2 ist " & Cells(49, 2)
End Sub
Excel: Einfache Makros erstellen
Excel: Makro-Beispiel Schleife

Das Ganze ist eine verschachtelte Schleife. Die äussere Schleife ist für die Zeilen 46 bis 50. Die Innere ist für die Spalten 1 bis 3. In Zeile 46 bis 50 wird also in den Spalten A bis C 1 bis 3 ausgegeben. Am Schluss wird zur Kontrolle noch der Inhalt der Zelle B49 ausgegeben. Der Cells-Befehl spricht Zeile und Spalte über einen numerischen Wert an.

Deutsches Excel zeichnet Schrott auf beim Makro aufzeichnen von Kopf- und/oder Fusszeile

Vorsicht bei Makros, die auf die Kopf- oder Fusszeile zugreifen. Ich wollte mal schnell zeigen, wie einfach man ein Makro aufzeichnen kann, das Kopf- und Fusszeile automatisch beschriftet und dann kam nur Schrott raus? Das Makro schreibt zwar irgendwas rein, aber überhaupt nicht das, was aufgezeichnet wurde.

Nach einiger Recherche fand ich die Lösung: Microsoft hat gepatzt. Aufgezeichnet werden die englischen Kürzel. Verwendet werden müssen aber die deutschen. Zumindest wenn man ein deutsches Excel hat, was ziemlich viele von uns haben dürften. Ganz blöd ist, dass die englischen und deutschen Kürzel verschiedene Bedeutung haben, was das Chaos verursacht.

Der folgende Code (Vielen Dank an rogstar aus dem Forum von Office-Lösungen...)

    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = "&Z" & Chr(10) & "&F"
        .CenterFooter = "Seite &P von &N"
        .RightFooter = "Druck: &D-&T"
    End With

...erzeugt...

  • Links: Laufwerk, Pfad, Zeilenumbruch und Dateiname (bzw. die tatsächlichen Werte)
  • Mitte: Seite 1 von 1 (bzw. die tatsächlichen Werte)
  • Rechts: Druck: Datum - Uhrzeit

Daraus lässt sich eine Tabelle erstellen mit den zu verwendenden Werten:

&ADateiname
&ZPfad der Excel-Datei
&FDateiname der Excel-Datei
&PAktuelle Seite der Excel-Tabelle
&NGesanmtseitenzahl der Excel-Tabelle
&DAktuelles Datum
&TAktuelle Uhrzeit

Sollen wir testen, ob es funktioniert? Lass uns das folgende Makro probieren:

Sub Varcheck()
    With ActiveSheet.PageSetup
        .BottomMargin = Application.InchesToPoints(3.1496062992126)
        .LeftFooter = "Dateiname: &A" & Chr(10) & "Pfad: &Z" & Chr(10) & "Dateiname: &F" & Chr(10) & "Seite: &P" & Chr(10) & "Gesamtseitenzahl: &N" & Chr(10) & "Datum: &D" & Chr(10) & "Uhrzeit: &T"
    End With
End Sub

Die LeftFooter-Anweisung schreibt eine Fusszeile, die alle Variablen aus der Tabelle mit Zeilenumbrüchen getrennt in die Fusszeile schreibt. Damit diese riesige Fusszeile genügend Platz hat, wird mit der BottomMargin-Anweisung ein entsprechend grosser Fussabstand gesetzt.

Fazit: Makro für Kopf- oder Fusszeile aufzeichnen in Excel

Ohne rudimentäre VBA (Visual Basic for Application) Kenntnisse geht nichts. Zumindest bei den Kopf- und Fusszeilen. Bei dem Thema solltest du wissen, wie du ein Makro bearbeiten kannst.

Du willst meine Arbeit unterstützen? Dann freue ich mich über eine kleine Spende!

3 Kommentare

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert