VBA ActiveWorkbook vs. ThisWorkbook

Bu öğretici, VBA ActiveWorkbook ve ThisWorkbook arasındaki farkı tartışacaktır.

ActiveWorkbook ve ThisWorkbook karşılaştırması

VBA'da ActiveWorkbook ve ThisWorkbook arasındaki farkı bilmek önemlidir:

ActiveWorkbook, şu anda etkin olan çalışma kitabıdır (ActiveSheet'in şu anda etkin olan sayfa olmasına benzer). ThisWorkbook, VBA kodunun depolandığı çalışma kitabıdır. Bu Çalışma Kitabı asla değişmeyecek.

Bu Çalışma Kitabı

ThisWorkbook'u, çalışmakta olan kodu içeren çalışma kitabına başvurmanıza izin veren bir nesne değişkeni olarak düşünün.

Bu kod, ThisWorkbook adına sahip bir MessageBox görüntüler:

123 Sub Show_ThisWorkbook()MsgBox ThisWorkbook.NameAlt Bitiş

AktifÇalışma Kitabı

ActiveWorkbook, o anda etkin olan çalışma kitabına başvurmanıza izin veren bir nesne değişkenidir.

Bu kod, ActiveWorkbook adına sahip bir MessageBox gösterecektir:

123 Sub Show_ActiveWorkbook()MsgBox ActiveWorkbook.NameAlt Bitiş

VBA, ActiveWorkbook'u Varsayar

ActiveWorkbook içindeki nesnelerle (ör. Sayfalar) çalışmayı denerken, ActiveWorkbook nesnesini açıkça belirtmeniz gerekmez. VBA, ActiveWorkbook'a atıfta bulunduğunuzu varsayacaktır.

Yani bu:

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

Şununla aynı mı:

1 Sayfalar("Sayfa1").Range("$A$5").Value = 1

Yeni veya Açılmış Çalışma Kitapları Etkin

Yeni bir çalışma kitabı oluşturduğunuzda veya bir çalışma kitabı açtığınızda, çalışma kitabı "Etkin" hale gelir. Bir çalışma kitabı ekleyecek ve yeni çalışma kitabının adını alacak olan bu kodla kendiniz görebilirsiniz:

1234 Sub Show_ActiveWorkbook_Add()Çalışma kitapları.EkleMsgBox ActiveWorkbook.NameAlt Bitiş

Bir çalışma kitabını ekledikten veya açtıktan sonra, ActiveWorkbook nesnesini kullanarak onu bir değişkene atayabilirsiniz. Aşağıdaki örneklerde size nasıl olduğunu göstereceğiz:

ThisWorkbook ve ActiveWorkbook Örnekleri

Etkin Çalışma Kitabını Değiştir

Çalışma Kitabı adını kullanarak etkin çalışma kitabını değiştirin:

1 Çalışma Kitapları("Kitap1").Etkinleştir

Çalışma sayfası sipariş numarasını kullanarak etkin çalışma kitabını değiştirin (1, çalışma kitabındaki ilk çalışma sayfasıdır)

1 Çalışma Kitapları(1).Etkinleştir

Bu Çalışma Kitabını Etkinleştir

ThisWorkbook'u (şu anda çalışan kodun depolandığı yer) ActiveWorkbook yapın:

1 BuÇalışma Kitabı.Etkinleştir

ActiveWorkbook'u Değişken Olarak Ayarlayın

ActiveWorkbook'u bir çalışma kitabı nesne değişkenine atayın:

12 Çalışma Kitabı Olarak Dim wbwb = ActiveWorkbook'u ayarla

Etkin Çalışma Kitabını Kapatın ve Kaydedin

ActiveWorkbook'u Kapatır ve Kaydeder:

1 ActiveWorkbook.Close SaveChanges:=True

Etkin Çalışma Kitabını Kaydetmeden Kapatın

ActiveWorkbook'u kaydetmeden kapatır:

1 ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook - Farklı Kaydet

Etkin Çalışma Kitabının Farklı Kaydetme işlemini gerçekleştirir.

123456789 Alt SaveAsActiveWorkbook()Varyant olarak sonucu karartsonuç = Application.GetSaveAsFilename(InitialFileName:="", _FileFilter:="Excel Makro Etkin Çalışma Kitabı (*.xlsm), *.xlsm,Excel Çalışma Kitabı (*.xlsx), *.xlsx")Sonuç = Yanlış ise Geri DönActiveWorkbook.SaveAs SonuçAlt Bitiş

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave