·Bir Excel çalışma kitabındaki bir sayfanın hücrelerine değerler atamak.
Bir Excel çalışma kitabı sayfasına ait VBA projesinde sayfanın kendisine Me özel nesnesi aracılığıyla erişebilirsiniz.
Aslında çalışma sayfası bir Worksheet nesnesidir.
Çalışma sayfasını temsil eden Worksheet nesnesinin Name özelliği aracılığıyla sayfanın adını, yani alt sıradaki sekmesinde gözüken etiket metnini öğrenebilir veya belirleyebilirsiniz.
Worksheet nesnesinin Rows özelliği sayfanın satırlar koleksiyonunu temsil eder. Bu özelliğe bir sıra numarası vererek belli bir satıra erişebilirsiniz.
Worksheet nesnesinin Columns özelliği de sayfanın sütunlar koleksiyonunu temsil eder. Bir sıra numarası vererek belli bir sütuna erişebilirsiniz.
Columns özelliği sıra numarası yerine sütun harfi de kabul eder:
Me.Columns("A")
Yine Worksheet nesnesinin Cells fonksiyonuyla çalışma sayfasının satır ve sütun numarasını verdiğiniz bir hücresie erişebilirsiniz. Örneğin,
Me.Cells(1,1)
fonksiyon çağrısıyla sayfanın ilk satırının ilk hücresine, yani adresi “A1” olan hücreye erişmiş olursunuz.
Yukarıda gösterdiğimiz yöntemlerle eriştiğiniz satır, sütun veya hücre bölgeleri aslında Range türünden nesnelerdir. Bu nesnenin fonksiyonlarını kullanarak eriştiğiniz satır, sütun veya hücre bölgesi üzerinde işlemler yapabilirsiniz.
Bir hücreyi temsil eden Range nesnesine ait Text özelliği hücre içeriğindeki metni öğrenebilirsiniz (ama değiştiremezsiniz).
Sayı, para, tarih vb. türünden bilgilerin yazılışları hem kullanıcının işletim sisteminde uyguladığı biçimlendirme tercihlerine, hem de o anki hücre boyutlarına bağlı oldukları için, bu özellik aracılığıyla öğrendiğiniz metin bilgisini karşılaştırmalar yapmak için kullanamazsınız, kullanmayı da denememelisiniz.
Bir hücreyi temsil eden Range nesnesine ait Value özelliğinden hücre içeriğindeki değeri öğrenebilirsiniz.
Bu özellikten hücre içeriğindeki sayısal değeri alabilirsiniz, ama para ve tarih değerleri de yine o anki biçimlendirme tercihlerine bağlı olacağı için bu fonksiyonu kullanmanızı da önermeyiz.
Bir hücreyi temsil eden Range nesnesine ait Value2 özelliğinden hücre içeriğindeki değeri öğrenebilir veya değiştirebilirsiniz.
Hem hücre içeriğindeki kesin değeri biçimlendirme yapmaksızın verdiği, hem de Value özelliğine göre daha hızlı sonuç verdiği için, kullanmanızı önerdiğimiz özellik budur.
Rows özelliğinden sıra numarasıyla eriştiğiniz bir satır bölgesi de aslında Range türünden bir nesnedir. Bu nesnenin Cells fonksiyonuna sütun sıra numarası vererek satırın belli bir hücresine erişebilirsiniz.
Bölge tek bir satırdan ibaret olduğu için erişeceğiniz her hücre için satır numarası zorunlu olarak 1 olacaktır.
Columns özelliğinden sıra numarasıyla eriştiğiniz bir sütun bölgesi de aslında Range türünden bir nesnedir. Bu nesnenin Cells fonksiyonuna satır sıra numarası vererek sütunun belli bir hücresine erişebilirsiniz.
Bölge tek bir sütundan ibaret olduğu için erişeceğiniz her hücre için sütun numarası zorunlu olarak 1 olacaktır.
Hücrelerine formüller ekleyeceğiniz çalışma sayfasına ait VBA projesinde bir altyordam yaratın.
İlgilendiğiniz hücreye referans yapmak için bir Range nesnesi tanımlayın:
Dim hucre As Range
Bu nesne aracılığıyla veri yerleştireceğiniz hücreye erişin:
Set hucre = Me.Cells(1,1)
Value2 özelliğine değer atayarak bu hücreye istediğiniz değeri yerleştirebilirsiniz:
hucre.Value2 = 1
Birden fazla hücreye veri aktaracaksanız, değer atayan komutlarınızı hedef hücrelerinize sırayla erişen bir döngü içine alın.
Dim satirNo As Integer
For satirNo = 2 To 10
Set hucre = Me.Cells(satirNo, 1)
hucre.Value2 = satirNo
Next satirNo
Dilerseniz, gerektiğinde bir satır veya bir sütun bölgesine referans yapacak Range nesneleri de tanımlayın:
Dim satir As Range, sutun As Range
Bu nesneler aracılığıyla eriştiğiniz satır veya sütunların hücrelerine yine Cells fonksiyonuyla erişip değer ataması yapabilirsiniz.
Aşağıdaki örnek altyordam boş çalışma sayfasının "A1" hücresinden başlayarak, o sütundaki 10. hücreye kadarki hücrelere değer olarak satır numaralarını aktarıyor. Sonra da 2.den 5.ye kadarki sütunların 1-10. hücrelerine soldaki hücre değerlerinin bir fazlasını aktarıyor.
Kaynak Dosya: “SayfaHucrelerineDegerlerAtamak.xlsm”
Unutmayın; kitap veya ekran satırına sığmayan komut satırları alta sarkmış olabilir. Siz onları tek satır olarak yazacaksınız!
Sub SayfaHucrelerineDegerlerAtamak()
Dim hucre As Range
Set hucre = Me.Cells(1, 1)
hucre.Value2 = 1
Dim satirNo As Integer
For satirNo = 2 To 10
Set hucre = Me.Cells(satirNo, 1)
hucre.Value2 = satirNo
Next satirNo
Dim satir As Range, sutun As Range
Dim sutunNo As Integer
For sutunNo = 2 To 5
Set sutun = Me.Columns(sutunNo)
For satirNo = 1 To 10
Set hucre = sutun.Cells(satirNo, 1)
hucre.Value2 = Me.Cells(satirNo, sutunNo - 1).Value2 + 1
Next satirNo
Next sutunNo
End Sub
Bu altyordamın çalışması sonrasında hücrelerde şu sıralı dizileri göreceksiniz:
Değer atamaları yapan örnek komutları biraz fazla dolambaçlı bulmuşsanız, haklısınız. Excel’de hesaplama yaptırmanın doğru yolu tabi ki elle kullandığınızda yaptığınız gibi birbirini izleyen hücrelerde aynı işlemi tekrarlayan formüller yerleştirmektir. Bir sonraki örnekte de bunun yapılışını göstereceğiz.