Vba'da aralık ve hücreler nasıl kullanılır?
VBA’da Aralık ve Hücrelere Giriş
Bir Excel çalışma kitabına baktığınızda hücrelerin etrafında her şeyin çalıştığını göreceksiniz. Bir hücre ve hücre aralığı, verilerinizi depoladığınız yerdir ve sonra her şey başlar.
VBA’dan en iyi şekilde yararlanmak için kodlarınızdaki hücreleri ve aralıkları nasıl kullanacağınızı öğrenmeniz gerekir. Bunun için Range nesneleri hakkında sağlam bir anlayışa sahip olmanız gerekir. Bunu kullanarak kodlarınızdaki hücrelere aşağıdaki şekilde başvurabilirsiniz:
- Tek bir hücre.
- Bir dizi hücre
- Bir satır veya sütun
- Üç boyutlu bir aralık
ARALIK NESNE, Excel’in nesne hiyerarşisinin bir parçasıdır: Uygulama ➜ Çalışma Kitapları ➜ Çalışma Sayfaları ➜ Aralık ve çalışma sayfasının içindeki başka yerler. Dolayısıyla, RANGE nesnesine atıfta bulunmak için kod yazarsanız, şöyle olur:
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
Bir hücreye veya hücre aralığına başvurarak aşağıdakileri yapabilirsiniz:
- Değeri okuyabilirsiniz.
- Oraya bir değer girebilirsiniz.
- Ve formatta değişiklik yapabilirsiniz.
Tüm bunları yapmak için bir hücreye veya hücre aralığına nasıl başvuruda bulunacağınızı öğrenmeniz gerekir ve bu eğitimin bir sonraki bölümünde bir hücreye farklı şekillerde nasıl başvuruda bulunacağınızı öğreneceksiniz. Bir hücreye veya hücre aralığına başvurmak için üç farklı yöntem kullanabilirsiniz.
- Plaj mülkü
- Hücre özelliği
- Ofset Özelliği
Peki, bunlardan hangisinin en iyisi ihtiyaçlarınıza bağlıdır, ancak size en uygun olanı seçebilmeniz için üçünü de öğrenmeye değer.
Öyleyse başlayalım.
Plaj mülkü
Range özelliği, VBA kodlarınızdaki bir aralığa başvurmanın en yaygın ve popüler yoludur. Range özelliği ile hücre adresine başvurmanız yeterlidir. Size sözdizimini anlatayım.
expression.range(address)
Burada ifade, bir VBA nesnesini temsil eden bir değişkendir. Yani A1 hücresine başvurmanız gerekiyorsa yazmanız gereken kod satırı şöyle olacaktır:
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Yukarıdaki kod, VBA’ya “Sayfa1” çalışma sayfasında ve “Kitap1” çalışma kitabında bulunan A1 hücresine başvurduğunuzu bildirir.
Not: Aralık nesnesine bir hücre adresi girdiğinizde, onu çift tırnak içine aldığınızdan emin olun. Ama burada anlaşılması gereken bir şey var. Excel’de VBA kullandığınız için “Uygulama” kelimesini kullanmanıza gerek yoktur. Yani kod şöyle olurdu:
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Ve eğer Kitap1’deyseniz kodunuzu daha da azaltabilirsiniz:
Worksheets(“Sheet1”).Range(“A1”)
Ancak zaten “Sayfa1” çalışma sayfasındaysanız kodunuzu daha da azaltabilirsiniz ve yalnızca şunları kullanabilirsiniz:
Range(“A1”)
Şimdi, tüm hücre aralığına (yani birden fazla hücreye) başvurmak istediğinizi varsayalım, kodu şu şekilde yazmanız gerekir:
Range("A1:A5")
Yukarıdaki kodda beş hücreden oluşan A1 ila A5 aralığını ifade ettiniz. Range nesnesini kullanarak adlandırılmış bir aralığa da başvurabilirsiniz. Diyelim ki “Satış İndirimi” adında bir adlandırılmış aralığınız var, şöyle bir kod yazabilirsiniz:
Range("Sales Discount")
Sürekli olmayan bir aralığa atıfta bulunmak istiyorsanız şunun gibi bir şey yapmanız gerekir:
Range("A1:B5,D5:G10")
Ve eğer bir satırın veya sütunun tamamına atıfta bulunmak istiyorsanız aşağıdakine benzer bir kod girmeniz gerekir:
Range("1:1") Range("A:A")
Bu noktada bir hücreye ve hücre aralığına nasıl atıfta bulunacağınızı açıkça anlıyorsunuz. Ancak bu konuda en iyi olmak için, onu başka şeyler yapmak için nasıl kullanacağınızı öğrenmeniz gerekir.
Burada, VBA’da aralıklar ve hücrelerle nasıl çalışılacağını öğrenmek için kullanabileceğiniz kapsamlı bir öğretici listemiz var.
- Excel’de VBA kullanarak satırları sayma
- Excel VBA yazı tipi (renk, boyut, tür ve kalın)
- Excel VBA Bir sütunu veya satırı gizleyin ve gösterin
- Excel’de VBA kullanarak hücreye kenarlıklar uygulama
- Excel’de VBA Kullanarak Son Satırı, Sütunu ve Hücreyi Bulma
- Excel’de VBA kullanarak satır ekleme
- VBA kodunu kullanarak Excel’deki hücreleri birleştirme
- Excel’de VBA’yı kullanarak bir aralık/hücre seçin
- VBA kodunu kullanarak çalışma sayfasındaki TÜM hücreleri SEÇİN
- Excel’de VBA’da ActiveCell
- Excel’de VBA’da Özel Hücreler Yöntemi
- Excel’de VBA’da KullanılanRange özelliği
- VBA otomatik sığdırma (satırlar, sütunlar veya çalışma sayfasının tamamı)
- VBA ClearContents (bir hücreden, aralıktan veya çalışma sayfasının tamamından)
- VBA aralığını başka bir sayfaya + çalışma kitabına kopyala
- VBA Hücreye bir değer girin (Ayarla, Al ve Değiştir)
- VBA Ekleme Sütunu (Tekli ve Çoklu)
- Aralık adlı VBA | (Statik + Seçim + Dinamik)
- VBA Aralığı Uzaklığı
- VBA sıralama aralığı | (Azalan, birden çok sütun, sıralama yönü
- VBA Sarma Metni (hücre, aralık ve çalışma sayfasının tamamı)
- VBA Bir hücrenin boş + birden fazla hücre olup olmadığını kontrol edin
1. Bir hücreyi seçin ve etkinleştirin
Bir hücreyi seçmek istiyorsanız aralığı kullanabilirsiniz. Yöntemi seçin. Diyelim ki A5 hücresini seçmek istiyorsanız aralığı belirtmeniz ve ardından “.Select” eklemeniz yeterli.
Range(“A1”).Select
Bu kod, VBA’ya A5 hücresini seçmesini söyler ve eğer bir hücre aralığı seçmek istiyorsanız o aralığa bakın ve ardından “.Select” ifadesini ekleyin.
Range(“A1:A5”).Select
Bir hücreyi aktive etmek için kullanabileceğiniz başka bir yöntem de vardır.
Range(“A1”).Activate
Burada aynı anda yalnızca bir hücreyi aktive edebileceğinizi unutmamanız gerekiyor. “.Activate ” metodu ile bir aralık belirtseniz bile o aralığı seçecektir ancak aktif olan hücre aralıktaki ilk hücre olacaktır.
2. Hücreye bir değer girin
Range özelliğini kullanarak bir hücreye veya hücre aralığına değer girebilirsiniz. Basit bir örnek kullanarak nasıl çalıştığını anlayalım:
Range("A1").Value = "Exceladvisor"
Yukarıdaki örnekte aralık olarak A1’i belirttiniz ve ardından VBA’ya hücrenin value özelliğine erişmesini söyleyen ” .Value ” eklediniz.
Bir sonraki adım eşittir işareti ve ardından girmek istediğiniz değerdir (bir metin değeri girerseniz çift tırnak kullanmanız gerekir). Bir sayı için kod şöyle olacaktır:
Range("A1").Value = 9988
Ve eğer bir hücre aralığına, yani birden fazla hücreye bir değer girmek istiyorsanız, o zaman tek yapmanız gereken o aralığı belirtmektir.
Range("A1:A5").Value = "Exceladvisor"
Ve eğer sürekli olmayan aralığa atıfta bulunuyorsanız kod buradadır.
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. Bir hücreyi/aralığı kopyalayıp yapıştırın
Range özelliğiyle, bir hücreyi kopyalayıp hedef hücreye yapıştırmak için “.Copy” yöntemini kullanabilirsiniz. Diyelim ki A5 hücresini kopyalamanız gerekiyor, karşılık gelen kod şöyle olacaktır:
Range("A5").Copy
Bu kodu çalıştırdığınızda yalnızca A5 hücresi kopyalanır, ancak sonraki adım bu kopyalanan hücreyi hedef hücreye yapıştırmaktır. Bunu yapmak için, hedef anahtar kelimeyi ve ardından onu yapıştırmak istediğiniz hücreyi eklemelisiniz. Yani A1 hücresini kopyalayıp E5 hücresine yapıştırmak istiyorsanız kod şöyle olacaktır:
Range("A1").Copy Destination:=Range("E5")
Benzer şekilde, birden fazla hücreden oluşan bir aralıkla çalışıyorsanız kod şöyle görünecektir:
Range("A1:A5").Copy Destination:=Range("E5:E9")
Bir hücre aralığını kopyaladıysanız ve ardından hedef aralık olarak bir hücreden bahsettiyseniz, VBA kopyalanan aralığın tamamını hedef olarak belirttiğiniz hücreden kopyalayacaktır.
Range("A1:A5").Copy Destination:=Range("B1")
Yukarıdaki kodu çalıştırdığınızda, hedef aralık olarak yalnızca B1’den bahsetmiş olsanız bile VBA, A1:A5 aralığını kopyalar ve B1:B5’e yapıştırır.
İpucu: Tıpkı “.Copy” yönteminde olduğu gibi, bir hücreyi kesmek için “.Cut” yöntemini kullanabilir, ardından onu yapıştırmak için bir hedef kullanabilirsiniz.
4. Font özelliğini Range özelliğiyle birlikte kullanın
Range özelliğiyle, bir hücrenin tüm yazı tipi ayarlarını değiştirmenize yardımcı olan yazı tipi özelliğine erişebilirsiniz. Yazı tipinin erişebileceğiniz toplam 18 farklı özelliği vardır. Diyelim ki A1 hücresindeki metni kalın yapmak istiyorsunuz, kod şöyle olacaktır:
Range("A1").Font.Bold = True
Bu kod, VBA’ya A1 aralığındaki yazı tipinin BOLD özelliğine erişmesini söyler ve siz bu özelliği TRUE olarak ayarladınız. Şimdi A1 hücresine üstü çizili çizgi uygulamak istediğinizi varsayalım, bu zaman kodu şöyle olacaktır:
Dediğim gibi kullanabileceğiniz toplam 18 farklı özellik var, hangisinin işinize yaradığını görmek için hepsini kontrol ettiğinizden emin olun.
5. Hücredeki biçimlendirmeyi temizleyin
“.ClearFormats” yöntemini kullanarak yalnızca bir hücrenin veya hücre aralığının biçimini temizleyebilirsiniz. Tek yapmanız gereken aşağıdaki gibi aralığı belirledikten sonra “.ClearFormat”ı eklemek:
Range("A1").ClearFormats
Yukarıdaki kodu çalıştırdığınızda, A1 hücresindeki tüm biçimlendirmeler temizlenir ve bunu tüm aralık için yapmak istiyorsanız ne yapmanız gerektiğini biliyorsunuz, değil mi?
Range("A1:A5").ClearFormats
Şimdi yukarıdaki kod A1 ila A5 aralığındaki formatı kaldıracaktır.
Hücre özelliği
ARALIK özelliğine ek olarak, çalışma sayfanızdaki bir hücreye veya hücre aralığına başvurmak için “Hücreler” özelliğini kullanabilirsiniz. Hücre özelliğinde hücre referansını kullanmak yerine hücrenin sütun numarasını ve satır numarasını girmeniz gerekir.
expression.Cells(Row_Number, Column_Number)
Burada ifade bir VBA nesnesidir ve Row_Number hücrenin satır numarasıdır ve Column_Number hücrenin sütunudur. Yani A5 hücresine başvurmak istiyorsanız aşağıdaki kodu kullanabilirsiniz:
Cells(5,1)
Şimdi bu kod, VBA’ya beşinci satır ve bir numaralı sütundaki hücreye başvurmasını söyler. Sözdiziminin önerdiği gibi, adres olarak sütun numarasını girmeniz gerekir, ancak gerçek şu ki, isterseniz sütun alfabesini yalnızca çift tırnak işareti içine alarak da kullanabilirsiniz.
Aşağıdaki kod aynı zamanda A5 hücresine de atıfta bulunacaktır:
Cells(5,"A")
Ve VBA’da bunu seçmek için sonuna “.Select” eklemeniz yeterlidir.
Cells(5,1).Select
Yukarıdaki kod, çalışma sayfasının 5. satırında ve ilk sütununda bulunan A5 hücresini seçecektir.
OFFSET Özelliği
VBA’da aralıklarla iyi oynamak istiyorsanız OFFSET özelliğini nasıl kullanacağınızı bilmeniz gerekir. Başka bir hücreden belirli sayıda satır ve sütun uzakta olan bir hücreyi belirtmekte fayda vardır.
Diyelim ki şu anda aktif olan hücreniz B5 ve B5’in 3 sütun sağında ve 1 sıra aşağısındaki hücreye gitmek istiyorsanız SHIFT’i yapabilirsiniz. OFFSET için kullanmanız gereken söz dizimi aşağıdadır:
expression.Offset (RowOffset, ColumnOffset)
- RowOffset: Bu argümanda VBA’ya kaç satırdan geçmek istediğinizi söyleyecek bir sayı belirtmeniz gerekir. Pozitif bir sayı aşağı doğru bir satırı, negatif bir sayı ise yukarı doğru bir satırı tanımlar.
- ColumnOffset : Bu bağımsız değişkende, VBA’ya kaç sütunda gezinmek istediğinizi söyleyecek bir sayı belirtmeniz gerekir. Pozitif bir sayı sağ sütunu, negatif sayı ise sol sütunu tanımlar.
Örnek olarak yukarıda bahsettiğimiz basit bir kod yazalım.
- Öncelikle gezinmek istediğiniz aralığı tanımlamanız ve böylece aşağıdaki kodu yazmanız gerekir:
- Bundan sonra “.Offset” yazın ve aşağıdaki gibi açılış parantezlerini girin:
- Daha sonra, gitmek istediğiniz satır numarasını ve ardından sütun numarasını girmeniz gerekir.
- VBA’ya gitmek istediğiniz hücreyi seçmesini söylemek için sonuna “.Select” eklemeniz gerekir.
Yani bu kodu çalıştırdığınızda B5 hücresinin bir satır aşağısında ve 3 sütun sağındaki hücreyi seçiyor.
OFFSET kullanarak bir aralığı yeniden boyutlandırma
OFFSET yalnızca bir hücreye gitmenize olanak sağlamakla kalmaz, aynı zamanda aralığı daha da yeniden boyutlandırabilirsiniz. Yukarıdaki örnekle devam edelim.
Range("B5").Offset(1, 3).Select
Yukarıdaki kod sizi E6 hücresine yönlendiriyor ve şimdi diyelim ki E6’nın beş sütun ve üç satırından oluşan hücre aralığını seçmeniz gerekiyor. Yani yapmanız gereken OFFSET kullandıktan sonra resize özelliğini “.Resize” ekleyerek kullanmak.
Range("B5").Offset(1, 3).Resize
Şimdi satır boyutunu ve sütun boyutunu girmeniz gerekiyor. Önde bir parantez yazın ve satır boyutunu ayarlamak için sayıyı, ardından sütun boyutunu ayarlamak için bir sayı girin.
Range("B5").Offset(1, 3).Resize(3,5)
Sonuna “.Select” ekleyerek VBA’ya aralığı seçmesini söyleyin; bu kodu çalıştırdığınızda aralığı seçecektir.
Range("B5").Offset(1, 3).Resize(3, 5).Select
Yani bu kodu çalıştırdığınızda E6 ila I8 aralığını seçecektir.
Range("A1").Font.Strikethrough = True