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ş |