VBA'da Bir Sayfa Nasıl Etkinleştirilir?
Adından da anlaşılacağı gibi etkinleştir, belirtilen çalışma sayfasını etkinleştirir. Bir çalışma sayfasını etkinleştirmek için, VBA'da WORKSHEETS nesnesi veya SHEETS nesnesini kullanarak çalışma sayfasını adıyla belirtmemiz gerekir.
Activate yönteminin sözdizimi şöyledir:
ÇALIŞMA SAYFALARI (“İstenen Çalışma Sayfası Adı”). Etkinleştir
Öncelikle worksheets nesnesini açmamız gerekiyor ve parantez içerisinde çift tırnak içerisinde worksheet ismini yazmamız gerekiyor, ardından activate metodunu seçebiliriz.
Çalışma kitabımızda aşağıdaki gibi 3 adet çalışma sayfamız olduğunu varsayalım.

Sheet2 isimli çalışma sayfasını aktifleştirmek istiyorsak aşağıdaki adımları takip etmemiz gerekmektedir.
- ALT + F11 kısayol tuşlarına basarak Visual Basic Editor penceresini açın.
- Visual Basic Düzenleyicisi penceresinde, Ekle sekmesi altında yeni Modülü ekleyin.

- Makroya isim vererek alt prosedürü başlatın.

- WORKSHEETS nesnesinin adını girin ve parantezi açın.

- Çalışma sayfasının indeks numarasını veya adını kullanabiliriz. Daha iyi anlamak için çalışma sayfası adını kullanalım. Çalışma sayfası Sheet2'yi etkinleştirmek istediğimizden, bu çalışma sayfası adını çift tırnak işareti içine girin.

- Parantezleri kapatıp noktayı koyun ve aktif kelimeyi girin.
Not: WORKSHEETS nesnesini değişkenler olmadan doğrudan kullandığımızda IntelliSense listesini göremeyeceğiz.

Sub Activate_Worksheet()Worksheets("Sheet2").Activate
End Sub Yukarıdaki kod , geçerli çalışma kitabındaki Sheet2
adlı çalışma sayfasını etkinleştirecektir .
Örnekler
Örnek 1 – Değişkenleri Kullanarak Çalışma Sayfasını Etkinleştirme
Önceki örnekte, WORKSHEETS nesnesini doğrudan activate metodunu belirtmek için kullandığımız için IntelliSense listesinin açılmadığını gördük. Ancak IntelliSense listesi olmadan, yeni kullanıcıların bu worksheet nesnesiyle ne yapacaklarını seçmeleri zorlaşır.
Bu sınırlamayı aşmak için değişkenlerden faydalanabiliriz. Değişkeni bildirmek, çalışma sayfası nesnesini atamak ve değişken adını kullanarak çalışma sayfasını etkinleştirmek için aşağıdaki adımları izleyin.
- Adım 1: Alt prosedür makrosunda, Dim anahtar sözcüğünü kullanarak Ws değişkenini bildirin .

- Adım 2: Değişken adı verildikten sonra, ona VBA veri türünü atamamız gerekir . Bu değişken için çalışma sayfasına başvuracağımızdan, bir nesne değişkeni olmalıdır, yani, WORKSHEETS.
Kelimeyi girin ve boşluk tuşuna basarak IntelliSense listesini görüntüleyin ve buradan WORKSHEETS veri türünü seçin.

- Adım 3: Çalışma sayfası nesnesi veri türüne sahip değişken atandıktan sonra, hangi çalışma sayfasını tutacağını atamamız gerekir. Değişkene bir çalışma sayfası atamak için Set kelimesini kullanmamız gerekir . Set kelimesini ve değişken adını girin ve ardından eşittir işaretini kullanın.

- Adım 4: Eşittir işaretinden sonra WORKSHEETS nesne adını girin ve parantez içine çift tırnak işareti içinde istediğiniz çalışma sayfası adını girin.

- Adım 5: Şimdi, çalışma sayfası Sheet2 ile bir şey yapmamız gerektiğinde , Worksheets(“Sheet2”) kullanmak yerine Ws değişkenini kullanabiliriz .
Bu çalışma sayfasını etkinleştirmek için Ws değişkenini girin ve IntelliSense listesini görmek için noktayı girin.

- Adım 6: Önceki örneğimizde, WORKSHEETS nesnesini kullanarak çalışma sayfası adının doğrudan referansı nedeniyle IntelliSense listesini görmüyorduk. Değişkeni kullandığımız için IntelliSense listesini görüyoruz.
Listeden Etkinleştirme yöntemini seçin .

Sub Example1()
Dim Ws As Worksheets
Set Ws = Worksheets("Sheet2")
Ws.ActivateEnd Sub
Bu kodu çalıştırdığımızda Sheet2 çalışma sayfası aktifleşecektir .
Olası Hata: Yukarıdaki kodu çalıştırdığımızı ve herhangi bir durumda, verilen çalışma sayfasının mevcut olmadığını varsayalım, o zaman VBA'da aşağıdaki dizin aralık dışı hatasını alacağız .

Örneğin çalışma sayfamızın adını Sheet2'den Sheet4'e değiştirelim.

Şimdi kodu çalıştırdığımızda, orada olmayan bir çalışma sayfasına erişmeye veya onu etkinleştirmeye çalıştığımız için bu abonelik aralık dışı hatasını alacağız.
Örnek 2 – Çalışma Sayfasını Dizin Numarasına Göre Etkinleştir
WORKSHEETS nesnesini açtığımızda karşımıza çıkan söz dizimi isim değil indekstir.

Bu, çalışma kitabında istediğimiz çalışma sayfası dizin numarasını da verebileceğimiz anlamına gelir. Belirli bir çalışma sayfasının dizin numarasını bulmak sıkıcı bir iştir.
Örneğin aşağıdaki görselde 3 adet çalışma sayfamız var.

Öncelikle WORKSHEETS nesnesinin indeks numarasını 2 olarak verelim ve ne olacağını görelim.

Sub Example2()
Dim Ws As Worksheets
Set Ws = Worksheets(2)
Ws.ActivateEnd Sub
Not: İndeks numarası verdiğimizde indeks numarasını çift tırnak içinde vermemize gerek yoktur.
Bu VBA kodunu çalıştırdığımızda siparişin ikinci sırasında bulunan çalışma sayfasını aktifleştirecektir.

Şimdi işlevselliği test etmek için Sheet2'yi sona taşıyalım.

Şimdi kodu çalıştırın ve ne olacağını görün.

Bu sefer Sheet2 yerine Sheet3 çalışma sayfasını seçti. Bunun nedeni, Sheet3 çalışma sayfasının çalışma kitabında bulunan tüm çalışma sayfaları arasında ikinci sırada yer almasıdır.
Örnek 3 – Başka Bir Çalışma Kitabından Çalışma Sayfasını Etkinleştirme
Bilgisayarda birden fazla çalışma kitabının açık olduğunu varsayalım. Mevcut çalışma kitabından başka bir çalışma kitabının çalışma sayfasını etkinleştirebiliriz.
Başka bir çalışma kitabının çalışma sayfasını etkinleştirmek için önce çalışma kitabı adını belirtmemiz gerekir. Örneğin, Employee Master çalışma kitabından Employee List çalışma sayfasını etkinleştirdiğimizi varsayalım , ardından WORKBOOKS nesne adını kullanarak çalışma kitabı adını belirtmemiz gerekir.

Çalışma kitabının adını çift tırnak işareti içinde girin.

Burada sadece çalışma kitabı adı yeterli değil, çünkü Employee Master adında farklı dosya uzantılarına sahip iki çalışma kitabı açılmış olabilir. Bu yüzden çalışma kitabı dosya uzantısını da belirtmemiz gerekiyor.
Eğer çalışma kitabı dosya uzantısı xlsx ise, çalışma kitabının tam adını aşağıdaki gibi girebiliriz.
Çalışma Kitapları(“Çalışan Ana.xlsx”)
Eğer çalışma kitabı dosya uzantısı xlsm ise, çalışma kitabının tam adını aşağıdaki gibi girebiliriz.
Çalışma Kitapları(“Çalışan Ana.xlsm”)
Çalışma kitabı adı verildikten sonra noktayı girin ve WORKSHEETS nesnesini açın.

WORKSHEETS nesnesinin içinde, o çalışma kitabındaki çalışma sayfası adını belirtin, yani Çalışan Listesi .

Çalışma kağıdının adını belirttikten sonra nokta girin ve yöntemi Etkinleştir olarak girin .

Sub Example3()
Workbooks("Employee Master.xlsx").Worksheets("Employee List").ActivateEnd Sub
Bu, Employee Master.xlsm çalışma kitabındaki Çalışan Listesi çalışma sayfasını etkinleştirecektir .
Kod uzun görünebilir, ancak değişkenler tanımlayarak daha anlaşılır ve okunabilir hale getirebiliriz.
Aşağıda değişken kullanıcısıyla diğer çalışma kitabının çalışma sayfasına referans veren kod bulunmaktadır.

- BÖLÜM 1 – Wb değişkenini tanımladık ve Workbook veri türünü atadık . Sonra, Migration Reports Tracker.xlsx çalışma kitabının referansını ayarladık .
- BÖLÜM 2 – Çalışma kitabı değişkeni Wb’yi kullanarak başvurulan çalışma kitabını etkinleştiriyoruz.
- BÖLÜM 3 – Ws değişkenini tanımladık ve Worksheet veri türünü atadık . Sonra, çalışma sayfasının referansını All Regions olarak ayarladık .
- BÖLÜM 4 – Çalışma sayfası değişkenini kullanarak başvurulan çalışma sayfasını etkinleştiriyoruz.
Not: Bu kodun doğru çalışabilmesi için öncelikle ayarladığımız çalışma kitabını açmamız ve bu çalışma kitabında All Regions isimli çalışma sayfasının olması gerekiyor .
Sayfayı Etkinleştir vs Sayfayı Seç
Çalışma sayfalarında Activate veya Select kullanabiliriz. Ancak bu iki yöntem arasında bir fark vardır. Şimdi bu ikisi arasındaki farkı detaylı olarak ele alacağız.
1 – Etkinleştirme Yöntemi
Şimdiye kadar gördüğümüz gibi, activate metodunu kullanarak, çalışma sayfalarından herhangi birini adını kullanarak etkinleştirebiliriz. Örneğin, aşağıdaki kod geçerli çalışma kitabındaki Sheet2 çalışma sayfasını etkinleştirecektir.
Sub Example1()
Dim Ws As Worksheet
Set Ws = Worksheets("Sheet2")
Ws.ActivateEnd Sub
Ve activate yöntemini kullanarak, bir seferde yalnızca bir çalışma sayfasını etkinleştirebiliriz. Ancak, select yöntemindeki durum biraz farklıdır.
2 – Yöntemi Seçin
Ayrıca select metodunu kullanarak çalışma sayfasını aktif hale getirebiliriz ancak select metodu sadece bir çalışma sayfasını aktif hale getirmekten öteye giderek birden fazla çalışma sayfasını da seçebiliyoruz.
Sub Example3()
Worksheets(Array("Sheet2", "Sheet1", "Sheet3")).SelectEnd Sub
Yukarıdaki kod yalnızca bir tanesini değil, belirtilen tüm çalışma sayfalarını seçecektir.

Bu iki yöntem arasındaki en büyük fark, etkinleştirme yönteminin yalnızca bir çalışma sayfasını etkinleştirmesi, seçme yönteminin ise birden fazla çalışma sayfasını seçmesidir.
