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.

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.

  1. Öncelikle gezinmek istediğiniz aralığı tanımlamanız ve böylece aşağıdaki kodu yazmanız gerekir:
    define-the-range
  2. Bundan sonra “.Offset” yazın ve aşağıdaki gibi açılış parantezlerini girin:
    type-offset
  3. Daha sonra, gitmek istediğiniz satır numarasını ve ardından sütun numarasını girmeniz gerekir.
    enter-row-and-column number
  4. VBA’ya gitmek istediğiniz hücreyi seçmesini söylemek için sonuna “.Select” eklemeniz gerekir.
    add-select-to-tell-vba

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

Yorum ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir