VBA ActiveWorkbook vs. ThisWorkbook

In diesem Tutorial wird der Unterschied zwischen VBA ActiveWorkbook und ThisWorkbook erläutert.

ActiveWorkbook vs. ThisWorkbook

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

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

DiesesArbeitsbuch

Stellen Sie sich ThisWorkbook als eine Objektvariable vor, mit der Sie auf die Arbeitsmappe verweisen können, die den aktuell ausgeführten Code enthält.

Dieser Code zeigt eine MessageBox mit dem Namen ThisWorkbook an:

123 Unter Show_ThisWorkbook()MsgBox ThisWorkbook.NameEnd Sub

AktivArbeitsmappe

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

Dieser Code zeigt eine MessageBox mit dem ActiveWorkbook-Namen an:

123 Unter Show_ActiveWorkbook()MsgBox ActiveWorkbook.NameEnd Sub

VBA nimmt ActiveWorkbook an

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

Also das:

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

Ist das gleiche:

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

Neue oder geöffnete Arbeitsmappen sind aktiv

Immer wenn Sie eine neue Arbeitsmappe erstellen oder eine Arbeitsmappe öffnen, wird die Arbeitsmappe „Aktiv“. Mit diesem Code können Sie sich selbst davon überzeugen, dass eine Arbeitsmappe hinzugefügt und der Name der neuen Arbeitsmappe abgerufen wird:

1234 Unter Show_ActiveWorkbook_Add()Arbeitsmappen.HinzufügenMsgBox ActiveWorkbook.NameEnd Sub

Nachdem Sie eine Arbeitsmappe hinzugefügt oder geöffnet haben, können Sie sie mithilfe des ActiveWorkbook-Objekts einer Variablen zuweisen. Wie das geht, zeigen wir Ihnen in den folgenden Beispielen:

Beispiele für diese Arbeitsmappe und ActiveWorkbook

Aktive Arbeitsmappe wechseln

Wechseln Sie die aktive Arbeitsmappe mit dem Arbeitsmappennamen:

1 Arbeitsmappen("Buch1").Aktivieren

Wechseln Sie die aktive Arbeitsmappe mit der Arbeitsblatt-Reihenfolgenummer (1 ist das erste Arbeitsblatt in einer Arbeitsmappe)

1 Arbeitsmappen(1).Aktivieren

Diese Arbeitsmappe aktivieren

Machen Sie ThisWorkbook (wo der aktuell ausgeführte Code gespeichert ist) zum ActiveWorkbook:

1 DieseArbeitsmappe.Aktivieren

Setzen Sie ActiveWorkbook auf eine Variable

Weisen Sie die ActiveWorkbook einer Arbeitsmappenobjektvariablen zu:

12 Dim wb als ArbeitsmappeSet wb = ActiveWorkbook

Schließen und speichern Sie die aktive Arbeitsmappe

Schließt und speichert die ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges:=True

Schließen Sie die aktive Arbeitsmappe ohne zu speichern

Schließt die ActiveWorkbook ohne zu speichern:

1 ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook - Speichern unter

Führt ein Speichern unter der aktiven Arbeitsmappe durch.

123456789 Unter SaveAsActiveWorkbook()Dimmergebnis Als Varianteresult = Application.GetSaveAsFilename(InitialFileName:="", _FileFilter:="Excel-Makro-aktivierte Arbeitsmappe (*.xlsm), *.xlsm,Excel-Arbeitsmappe (*.xlsx), *.xlsx")Wenn Ergebnis = Falsch, dann RückgabeActiveWorkbook.SaveAs resultEnd Sub

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave