VBA Sayfaları - En İyi Kılavuz

Bu, Excel'de E-Tablolar / Çalışma Sayfaları ile çalışmak için nihai kılavuzdur.

Bu kılavuzun altında, sayfalarla çalışmak için ortak komutlardan oluşan bir hile sayfası oluşturduk.

Sayfalar Vs. çalışma sayfaları

VBA kullanarak E-Tablolara başvurmanın iki yolu vardır. İlki, Sheets nesnesiyle ilgilidir:

1 Sayfalar("Sayfa1").Etkinleştir

Diğeri, Çalışma Sayfaları nesnesiyle birlikte:

1 Çalışma Sayfaları("Sayfa1").Etkinleştir

Zamanın %99'unda bu iki nesne aynıdır. Aslında, VBA kodu örnekleri için çevrimiçi arama yaptıysanız, muhtemelen her iki nesnenin de kullanıldığını görmüşsünüzdür. İşte fark:

Sayfa Koleksiyonu, Çalışma Sayfaları VE Grafik Sayfaları içerir.

Bu nedenle, normal Çalışma Sayfaları VE Grafik Sayfaları eklemek istiyorsanız Sayfaları kullanın. Grafik Sayfalarını hariç tutmak istiyorsanız Çalışma Sayfalarını kullanın. Bu kılavuzun geri kalanında E-Tablolar ve Çalışma Sayfalarını birbirinin yerine kullanacağız.

Referans Sayfaları

E-Tablolar'a başvurmanın birkaç farklı yolu vardır:

  • Etkin sayfa
  • Sayfa Sekmesi Adı
  • Sayfa Dizin Numarası
  • Sayfa Kodu Adı

Etkin sayfa

ActiveSheet, şu anda etkin olan Sayfadır. Başka bir deyişle, kodunuzu duraklattıysanız ve Excel'e baktıysanız, görünen sayfadır. Aşağıdaki kod örneği, ActiveSheet adına sahip bir Mesaj Kutusu gösterecektir.

1 MsgBox ActiveSheet.Name

Sayfa Adı

Sayfalara muhtemelen Sekme Adlarına göre atıfta bulunmaya aşinasınızdır:

1 Sheets("TabName").Etkinleştir

Sayfa Dizin Numarası

Sayfa Dizini numarası, çalışma kitabındaki sayfa konumudur. 1 ilk sayfadır. 2, ikinci sayfa vb.:

1 Sayfalar(1).Etkinleştir

Sayfa Dizin Numarası - Çalışma Kitabındaki Son Sayfa

Çalışma kitabındaki son Sayfaya başvurmak için, son Dizin Numarasını almak için Sheets.Count'u kullanın:

1 Sayfalar(Sayfalar.Sayı).Etkinleştir

"Kod Adı" sayfası

Sayfa Kodu Adı, VBA'daki Nesne adıdır:

1 KodAdı.Etkinleştir

Diğer Çalışma Kitaplarındaki Referans Sayfaları

Diğer Çalışma Kitaplarındaki Sayfalara başvurmak da kolaydır. Bunu yapmak için Çalışma Kitapları Nesnesini kullanmanız gerekir:

1 Workbooks("VBA_Examples.xlsm").Worksheets("Sheet1").Activate

Önemli: E-Tablolarına başvurabilmeniz için Çalışma Kitabının açık olması gerekir.

Etkinleştir ve Sayfa Seç

Başka bir makalede, sayfaları etkinleştirme ve seçmeyle ilgili her şeyi tartışıyoruz. Kısa versiyonu şudur:

Bir Sayfayı Etkinleştirdiğinizde, ActiveSheet olur. Excel programınıza baktığınızda göreceğiniz sayfa budur. Bir seferde yalnızca bir sayfa etkinleştirilebilir.

Bir Sayfayı Etkinleştir

1 Sayfalar("Sayfa1").Etkinleştir

Bir Sayfa seçtiğinizde, aynı zamanda ActiveSheet olur. Ancak, aynı anda birden fazla sayfa seçebilirsiniz. Aynı anda birden fazla sayfa seçildiğinde, "üst" sayfa ActiveSheet'tir. Ancak, seçili sayfalar içinde ActiveSheet'i değiştirebilirsiniz.

Bir Sayfa Seçin

1 Sayfalar("Sayfa1").Seçin

Birden Çok Sayfa Seç

Aynı anda birden çok sayfa seçmek için bir dizi kullanın:

1 Çalışma Sayfaları(Array("Sayfa2", "Sayfa3")).Seçin

Çalışma Sayfası Değişkeni

Bir değişkene çalışma sayfası atamak, çalışma sayfasına değişken adıyla referans vermenizi sağlar. Bu, çok fazla yazma tasarrufu sağlayabilir ve kodunuzun okunmasını kolaylaştırabilir. Değişkenleri kullanmak isteyebileceğiniz başka birçok neden de vardır.

Bir çalışma sayfası değişkeni bildirmek için:

1 Dim ws çalışma sayfası olarak

Bir değişkene bir çalışma sayfası atayın:

1 Set ws = Sayfalar("Sayfa1")

Artık kodunuzdaki çalışma sayfası değişkenine başvurabilirsiniz:

1 ws.Etkinleştir

Çalışma Kitabındaki Tüm Sayfalarda Döngü

Bir çalışma kitabındaki tüm çalışma sayfaları arasında dolaşmak istediğinizde, çalışma sayfası değişkenleri çok önemlidir. Bunu yapmanın en kolay yolu şudur:

12345 Çalışma Sayfası olarak Dim wsÇalışma Sayfalarındaki Her ws içinMsgBox ws.nameSonraki

Bu kod, çalışma kitabındaki tüm çalışma sayfalarında dolaşarak her çalışma sayfası adını bir mesaj kutusunda görüntüler. Bir çalışma kitabındaki tüm sayfalar arasında geçiş yapmak, aynı anda birden çok çalışma sayfasını kilitlerken/kilidini açarken veya gizlerken/gösterirken çok kullanışlıdır.

Çalışma Sayfası Koruması

Çalışma Kitabı Koruması

Çalışma kitabı koruması, çalışma kitabını çalışma sayfalarını ekleme, silme, taşıma veya gizleme gibi yapısal değişikliklerden korur.

VBA'yı kullanarak çalışma kitabı korumasını açabilirsiniz:

1 ActiveWorkbook.Protect Parola:="Parola"

veya çalışma kitabı korumasını devre dışı bırakın:

1 ActiveWorkbook.UnProtect Parola:="Parola"

Not: Parola bağımsız değişkenini atlayarak parola olmadan da koruyabilir/korumayı kaldırabilirsiniz:

1 ActiveWorkbook.Protect

Çalışma Sayfası Koruması

Çalışma sayfası düzeyinde koruma, bireysel çalışma sayfalarında değişiklik yapılmasını önler.

Çalışma Sayfasını Koru

1 Çalışma Sayfaları ("Sayfa1"). "Parolayı" koruyun

Çalışma Sayfasının Korumasını Kaldır

1 Çalışma Sayfaları ("Sayfa1"). "Parola" korumasını kaldırın

Çalışma sayfalarını korurken çeşitli seçenekler vardır (biçimlendirme değişikliklerine izin ver, kullanıcının satır eklemesine izin ver, vb.) İstediğiniz ayarları kaydetmek için Makro Kaydediciyi kullanmanızı öneririz.

Çalışma sayfası korumasını burada daha ayrıntılı olarak tartışıyoruz.

Çalışma Sayfası Görünür Özellik

Çalışma sayfalarının gizlenebileceğini zaten biliyor olabilirsiniz:

Aslında üç çalışma sayfası görünürlük ayarı vardır: Görünür, Gizli ve Çok Gizli.Gizli sayfalar, herhangi bir normal Excel kullanıcısı tarafından - çalışma sayfası sekmesi alanına (yukarıda gösterilmiştir) sağ tıklayarak gösterilebilir. VeryHidden sayfaları yalnızca VBA koduyla veya VBA Düzenleyicisi içinden gösterilebilir. Çalışma sayfalarını gizlemek/göstermek için aşağıdaki kod örneklerini kullanın:

Çalışma Sayfasını Göster

1 Çalışma Sayfaları("Sayfa1").Visible = xlSheetVisible

Çalışma Sayfasını Gizle

1 Worksheets("Sayfa1").visible = xlSheetHidden

Çalışma Sayfasını Çok Gizle

1 Worksheets("Sayfa1").Visible = xlSheetVeryHidden

Çalışma Sayfası Düzeyindeki Etkinlikler

Olaylar, "Olay Prosedürlerinin" çalışmasına neden olabilecek tetikleyicilerdir. Örneğin, bir çalışma sayfasındaki herhangi bir hücre her değiştirildiğinde veya bir çalışma sayfası etkinleştirildiğinde kodun çalışmasını sağlayabilirsiniz.

Çalışma sayfası olay prosedürleri bir çalışma sayfası modülüne yerleştirilmelidir:

Çok sayıda çalışma sayfası etkinliği vardır. Tam listeyi görmek için bir çalışma sayfası modülüne gidin, ilk açılır menüden “Çalışma Sayfası”nı seçin. Ardından, modüle eklemek için ikinci açılır menüden bir olay prosedürü seçin.

Çalışma Sayfası Etkinleştirme Etkinliği

Çalışma sayfası etkinleştirme olayları, çalışma sayfası her açıldığında çalışır.

123 Özel Alt Çalışma Sayfası_Activate()Aralık("A1").SeçinAlt Bitiş

Bu kod, çalışma sayfası her açıldığında A1 hücresini seçecektir (görünüm alanını çalışma sayfasının sol üst köşesine sıfırlayacaktır).

Çalışma Sayfası Değişiklik Etkinliği

Çalışma sayfası değişikliği olayları, çalışma sayfasında bir hücre değeri her değiştirildiğinde çalışır. Daha fazla bilgi için Çalışma Sayfası Değişikliği Olayları hakkındaki eğiticimizi okuyun.

Çalışma Sayfası Hile Sayfası

Aşağıda, VBA'da sayfalarla çalışmak için yaygın kod örneklerini içeren bir hile sayfası bulacaksınız.

VBA Çalışma Sayfaları Hile Sayfası

VBA çalışma sayfaları Hile sayfası
AçıklamaKod Örneği
Sayfaları Referanslama ve Etkinleştirme
Sekme AdıSayfalar("Giriş").Etkinleştir
VBA Kod AdıSayfa1.Etkinleştir
Dizin KonumuSayfalar(1).Etkinleştir
Sayfa Seç
Sayfa SeçSayfalar("Giriş").Seçin
Değişken olarak ayarlaÇalışma Sayfası olarak Dim ws
ws = ActiveSheet'i ayarla
Ad / Yeniden AdlandırActiveSheet.Name = "YeniAd"
Sonraki SayfaActiveSheet.Sonraki.Etkinleştir
Tüm Sayfalarda DöngüÇalışma Sayfası olarak Dim ws
Çalışma Sayfalarındaki her ws için
Msgbox ws.name
Sonraki
Seçili Sayfalarda DöngüDim ws As Çalışma Sayfası
ActiveWindow.SelectedSheets'deki Her ws için
MsgBox ws.Name
Sonraki
ActiveSheet'i AlınMsgBox ActiveSheet.Name
Sayfa EkleE-Tablolar.Ekle
Sayfa ve Ad EkleSheets.Add.Name = "Yeni Sayfa"
Hücreden Adlı Sayfa EkleSheets.Add.Name = aralık("a3").değer
Birbirinden Sonra Sayfa EkleSheets.Add After:= Sheets("Giriş")
Sayfadan Sonra ve Ad EkleSheets.Add(Sonra:=Sayfalar("Giriş")).Name = "YeniSayfa"
Önce Sayfa Ekle ve AdSheets.Add(Önce:=Sayfalar("Giriş")).Name = "YeniSayfa"
Çalışma Kitabının Sonuna Sayfa EkleSheets.Add After:= Sheets(Sheets.Count)
Çalışma Kitabının Başına Sayfa EkleSheets.Add(Before:=Sheets(1)).Name = "İlk Sayfa"
Değişkene Sayfa EkleDim ws As Çalışma Sayfası
ws = E-Tablolar'ı ayarla.Add
Çalışma Sayfalarını Kopyala
Sayfayı Çalışma Kitabının Sonuna TaşıSayfalar("Sayfa1").Sonra Taşı:=Sayfalar(Sayfalar.Sayı)
Yeni Çalışma KitabınaSayfalar("Sayfa1").Kopyala
Seçilen Sayfalardan Yeni Çalışma KitabınaActiveWindow.SelectedSheets.Copy
Başka Bir Sayfadan ÖnceSayfalar("Sayfa1").Önce Kopyala:=Sayfalar("Sayfa2")
İlk Sayfadan ÖnceSayfalar("Sayfa1").Önce Kopyala:=Etablolar(1)
Son Sayfadan SonraSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Kopyala ve AdSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Son Sayfa"
Hücre Değerinden Kopyalama ve AdlandırmaSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Aralık("A1").Value
Başka Bir Çalışma KitabınaSheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1)
Sayfaları Gizle / Göster
Sayfayı GizleSheets("Sayfa1").visible = False
veya
Sheets("Sayfa1").visible = xlSheetHidden
Sayfayı GösterSayfalar("Sayfa1").Görünür = Doğru
veya
Sayfalar("Sayfa1").Visible = xlSheetVisible
Sayfayı Çok GizleSayfalar(“Sayfa1”).Görünür = xlSheetVeryHidden
Sayfaları Sil veya Temizle
Sayfayı SilSayfalar("Sayfa1").Sil
Sayfayı Sil (Hata İşleme)Hatada Devam Et Sonraki
Sayfalar("Sayfa1").Sil
Hatada GoTo 0
Sayfayı Sil (İstem Yok)Application.DisplayAlerts = Yanlış
Sayfalar("Sayfa1").Sil
Application.DisplayAlerts = Doğru
Sayfayı TemizleSayfalar("Sayfa1").Hücreler.Temizle
Yalnızca Sayfa İçeriğini TemizleSayfalar("Sayfa1").Cells.ClearContents
Kullanılan Sayfa Aralığını TemizleSayfalar("Sayfa1").UsedRange.Clear
Sayfaları Koru veya Korumasını Kaldır
Korumayı Kaldır (Parola Yok)Sayfalar("Sayfa1").Korumayı kaldır
Korumayı kaldır (Parola)Sayfalar ("Sayfa1"). "Parola" korumasını kaldırın
Koru (Parola Yok)Sayfalar("Sayfa1").Koru
Koru (Şifre)Sayfalar ("Sayfa1"). "Parolayı" koruyun
Koru ama VBA Erişimine İzin VerSheets("Sayfa1").Protect UserInterfaceOnly:=True
Tüm Sayfaların Korumasını KaldırDim ws As Çalışma Sayfası
Çalışma Sayfalarında Her ws için
ws. "Parola" korumasını kaldırın
Sonraki
wave wave wave wave wave