838005

Excel 2007-Funktionen mit VBA-Makros erweitern

27.06.2013 | 14:50 Uhr | Thorsten Eggeling

Makros in Excel 2007 aufzeichnen
Vergrößern Makros in Excel 2007 aufzeichnen

So zeichnen Sie VBA-Makros auf

Wenn die vordefinierten Formeln und Funktionen nicht ausreichen, können Sie Excel 2007 über VBA-Makros (Visual Basic for Applications) erweitern. Für einfache Aufgaben sind keine Programmierkenntnisse erforderlich. Der eingebaute Makro-Recoder von Excel 2007 wandelt Mausklicks und Tastatureingaben in VBA-Skripte um. Starten Sie diese kleinen Programme anschließend, so werden genau die aufgezeichneten Befehle ausgeführt. Um eine Aufzeichnung zu starten, wählen Sie in Excel 2007 die Registerkarte „Ansicht“ und dann unter „Makros“ den Punkt „Makro aufzeichnen“.

Geben Sie eine aussagekräftige Bezeichnung für das Makro ein und klicken Sie auf „OK“. Erledigen Sie dann von Hand alle Dinge, die das Makro später automatisch wiedergeben soll, danach stoppen Sie die Aufzeichnung per Klick auf „Aufzeichnung beenden“. Um eine Makro zu starten, gehen Sie auf die Registerkarte „Ansicht“ und klicken unter „Makros“ auf „Makros anzeigen“. Wählen Sie das aufgezeichnete Makro aus, und klicken Sie auf „Ausführen.

So arbeiten Sie mit Excel 2010

VBA-Editor in Excel 2007
Vergrößern VBA-Editor in Excel 2007

Aufgezeichnete VBA-Makros anpassen

Um ein aufgezeichnetes Makro anzupassen oder zu erweitern sind ein paar grundlegende Programmierkenntnisse erforderlich. Wenn Sie sich mit Visual Basic for Applications oder der Programmiersprache BASIC bisher noch nicht befasst haben, finden Sie Infos für den Einstieg beispielsweise im kostenlosen Online-Buch VBA in Excel - Grundlagen .

Download: Excel-Jahresplaner

Wenn Sie ein aufgezeichnetes Makro bearbeiten möchten, öffnen Sie den Visual Basic-Editor über die Tastenkombination Alt + F11. Sie finden die aufgezeichneten VBA-Makros in der Rubrik „Module“ in der aktuellen Arbeitsmappe. Jedes einzelne Makro besteht aus einen VBA-Unterprogramm, das zwischen „Sub MakroName()“ und „End Sub“ steht. Ein aufgezeichnetes Makro, dass eine Spalte mit den Namen der Wochentage erstellt, könnte beispielsweise so aussehen

Sub Wochentage()
Range("A1").Select
ActiveCell.FormulaR1C1 = "Montag"
Selection.AutoFill Destination:=Range("A1:A7"), Type:=xlFillDefault
End Sub

Es gibt genau die Aktionen wieder, die ein Benutzer durchgeführt hat: Zelle A1 auswählen, „Montag“ eintippen und über Auto-Ausfüllen die Wochentage Dienstag bis Sonntag in die Zellen bis A7 einfügen.

Wenn Sie die Wochentage jetzt aber in einem anderen Bereich als A1:A7 benötigen, müssen Sie das Makro anpassen und flexibler gestalten. Ein VBA-Makro, das die Wochentage an der Position der gerade aktiven Zelle einfügt, sieht so aus:

Sub Wochentage()
strActiveCellRow = ActiveCell.Row
strActiveCellCol = ActiveCell.Column
ActiveCell.FormulaR1C1 = "Montag"
Selection.AutoFill Destination:=Range(Cells(strActiveCellRow, strActiveCellCol), Cells(strActiveCellRow + 6, strActiveCellCol)), Type:=xlFillDefault
End Sub

Mit ActiveCell.Row und ActiveCell.Column wird zuerst die Adresse der aktuelle Zelle in zwei Variablen übertragen. Dann setzt Excel 2007 wie beim aufgezeichneten Makro den Wochentag in die gerade ausgewählte Zelle ein. Die letzte Befehlszeile sorgt dann dafür, dass Excel 2007 die nächsten sechs Zeilen unter der aktiven Zelle mit den Wochentagen auffüllt.

Makros in Excel 2007 aufzeichnen
Vergrößern Makros in Excel 2007 aufzeichnen

VBA-Makros selbst erstellen

Wer selbst Makros erstellen will, kann aufgezeichnete Makros als Ausgangspunkt und Hilfe für die nötigen Befehle verwenden. Für komplexere Aufgaben reicht das jedoch nicht aus und Sie müssen das VBA-Makro von Hand anlegen. Das folgende Beispiel demonstriert die prinzipielle Vorgehensweise. Mit dem Code

Public Function Schalt_Jahr(intJahr As Integer) As Boolean
Schalt_Jahr = intJahr Mod 4 = 0 And (intJahr Mod 100 <> 0 Xor intJahr Mod 400 = 0)
End Function

erstellen Sie eine neue Funktion, mit der sich das Schaltjahr berechnen lässt. Der Funktion wird eine Jahreszahl („intJahr)“ übergeben. Wenn es sich dabei um eine Schaltjahr handelt, gibt die Funktionen „True“ zurück, wenn nicht dann „False“. Um die Funktion auszuprobieren, können Sie das folgende Unterprogramm verwenden:

Public Sub testSchaltjahr()
Dim intIndex As Integer
For intIndex = 2000 To 2010
MsgBox "Das Jahr " & CStr(intIndex) & " ist " & _
IIf(Schalt_Jahr(intIndex), "", "k") & "ein Schaltjahr"
Next
End Sub

Video-Tipp: So erstellen Sie Diagramme

Sie können das Unterprogramm über die F5-Taste starten. Es übergibt die Jahreszahlen 2000 bis 2010 an die Funktion und im Meldungsfenster („MsgBox“) für jedes Jahr den Text „Jahr ist ein Schaltjahr“ oder „Jahr ist kein Schaltjahr“ an.
Die selbst definierte VBA-Funktion „Schalt_Jahr“ lässt sich wie jede andere Excel 2007-Funktion in einem Arbeitsblatt verwenden. Wenn Sie in eine Zelle =Schalt_Jahr(2010) eingeben, erhalten Sie das Ergebnis „Falsch“, bei =Schalt_Jahr(2012) gibt Excel 2007 „Wahr“ aus.









PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
838005