Rückkehr in VBA-Code-Beispiele

VBA ActiveWorkbook vs. ThisWorkbook

In diesem Tutorial wird der Unterschied zwischen dem VBA ActiveWorkbook und ThisWorkbook erklärt.

ActiveWorkbook vs. ThisWorkbook

Es ist wichtig, den Unterschied zwischen ActiveWorkbook und ThisWorkbook in VBA zu kennen:

Das ActiveWorkbook ist die Arbeitsmappe, die gerade aktiv ist (ähnlich wie ActiveSheet das gerade aktive Blatt ist).  ThisWorkbook ist die Arbeitsmappe, in der der VBA-Code gespeichert ist.  ThisWorkbook wird sich nie ändern.

ThisWorkbook

Stellen Sie sich ThisWorkbook als eine Objektvariable vor, die es Ihnen ermöglicht, auf die Arbeitsmappe zu verweisen, die den aktuell ausgeführten Code enthält.

Mit diesem Code wird eine MessageBox mit dem Namen der Arbeitsmappe angezeigt, auf die ThisWorkbook verweist:

Sub Zeige_ThisWorkbook()
    MsgBox ThisWorkbook.Name
End Sub

vba ThisWorkbook Name

ActiveWorkbook

ActiveWorkbook ist eine Objektvariable, mit der Sie auf die derzeit aktive Arbeitsmappe verweisen können.

Dieser Code zeigt eine MessageBox mit dem Namen der Aktiven Arbeitsmappe an:

Sub Zeige_ActiveWorkbook()
    MsgBox ActiveWorkbook.Name
End Sub

VBA geht von ActiveWorkbook aus

Wenn Sie versuchen, mit Objekten (z. B. Arbeitsblättern) innerhalb des ActiveWorkbook zu arbeiten, müssen Sie das ActiveWorkbook-Objekt nicht explizit angeben. VBA geht davon aus, dass Sie sich auf das ActiveWorkbook beziehen.

Also dies:

ActiveWorkbook.Sheets("Tabelle1").Range("$A$5").Value = 1

Ist das gleiche wie dies:

Sheets("Tabelle1").Range("$A$5").Value = 1

Neue oder geöffnete Arbeitsmappen sind aktiv

Immer wenn Sie eine neue Arbeitsmappe erstellen oder eine Arbeitsmappe öffnen, wird diese Arbeitsmappe „aktiv“. Mit dem folgenden Code, der eine Arbeitsmappe hinzufügt und den Namen der neuen Arbeitsmappe abruft, können Sie sich selbst davon überzeugen:

Sub Zeige_ActiveWorkbook_Add()
    Workbooks.Add
    MsgBox ActiveWorkbook.Name
End Sub

Nachdem Sie eine Arbeitsmappe hinzugefügt oder geöffnet haben, können Sie diese durch die Nutzung des ActiveWorkbook-Objekts einer Variablen zuweisen. Wie das geht, zeigen wir Ihnen mithilfe der folgenden Beispiele:

ThisWorkbook und ActiveWorkbook Beispiele

Aktive Arbeitsmappe wechseln

Wechseln Sie die aktive Arbeitsmappe über den Namen der Arbeitsmappe:

Workbooks("Mappe1").Activate

Der Wechsel der aktiven Arbeitsmappe über den Index. Der Index 1 ist dabei die als erste geöffnete bzw. erstellte Arbeitsmappe.

Workbooks(1).Activate

ThisWorkbook aktivieren

ThisWorkbook (Speicherort des derzeit laufenden Codes) aktivieren und somit zum ActiveWorkbook machen:

ThisWorkbook.Activate

ActiveWorkbook einer Variable zuweisen

Weisen Sie die ActiveWorkbook einer Workbook-Objektvariablen zu:

Dim wb As Workbook
Set wb = ActiveWorkbook

Schließen und Speichern der Aktiven Arbeitsmappe

Schließt und speichert die Aktive Arbeitsmappe:

ActiveWorkbook.Close SaveChanges:=True

Schließen der Aktiven Arbeitsmappe ohne zu speichern

Schließt die ActiveWorkbook ohne zu speichern:

ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook – Speichern unter

Führt ein Speichern unter der aktiven Arbeitsmappe durch.

Sub Als_ActiveWorkbook_Speichern()
    Dim Ergebnis As Variant
    Ergebnis = Application.GetSaveAsFilename(InitialFileName:="", _
    FileFilter:="Excel Macro-Enabled Workbook (*.xlsm), *.xlsm,Excel Workbook (*.xlsx), *.xlsx")
    
    If Ergebnis = False Then Return
    
    ActiveWorkbook.SaveAs Ergebnis 
End Sub