Özellik ikonu

Cells

İndirme izni yok

Genel Bakış

Cells (Cells property), bir çalışma sayfasındaki ya da bir hücre aralığındaki hücrelere satır ve sütun numarasıyla başvurmanızı sağlayan özelliktir. Sonuç olarak bir Range nesnesi döndürür; bu yüzden değer yazma, okuma, biçimlendirme gibi tüm hücre işlemlerini yapabilirsiniz. Satır ve sütun sayıları değişken olduğundan döngülerde adres metni oluşturmaktan çok daha pratiktir.

Söz dizimi​

Cells özelliği bir Worksheet ya da Range nesnesinden sonra yazılır. Nesne belirtilmezse etkin sayfa, kod bir sayfa modülündeyse o sayfa kullanılır.

VBA 4 satır
nesne.Cells
nesne.Cells(SatirNo)
nesne.Cells(SatirNo, SutunNo)
nesne.Cells(SatirNo, "SutunHarfi")

  • nesne: Cells özelliğinin bağlı olduğu Worksheet ya da Range nesnesi; isteğe bağlıdır, yazılmazsa etkin sayfa kullanılır.
  • SatirNo: Satır numarası (RowIndex); isteğe bağlıdır. Çalışma sayfasında 1 ile 1.048.576 arasındadır.
  • SutunNo: Sütun numarası (ColumnIndex); isteğe bağlıdır. Sayı olarak 1 (A) ile 16.384 (XFD) arasında olabilir ya da "C" gibi sütun harfi metin olarak yazılabilir.

Hiçbir bağımsız değişken verilmezse nesnenin tüm hücrelerini temsil eden bir Range döner. Tek bağımsız değişken verilirse hücre, soldan sağa ve yukarıdan aşağıya doğru sıra numarasıyla seçilir; sayfada birinci hücre A1, ikinci hücre B1'dir.

Nasıl çalışır​

Cells her zaman önce satırı, sonra sütunu alır. Bu, Range ile yazılan A1 biçimindeki adreslerin tersidir: sütun harfi önce, satır numarası sonra gelir. İkinci satırdaki üçüncü sütun, yani C2 hücresi için satır 2, sütun 3 verilir.

Döndürülen nesne bir Range olduğundan Value, Formula, Font, Interior, NumberFormat gibi tüm özellik ve yöntemler kullanılabilir. Value özelliği varsayılan özellik olduğu için yazılmasa da çalışır, ancak okunaklı olması için açıkça yazmanız önerilir.

Cells bir Range nesnesine bağlanırsa numaralar o aralığın sol üst hücresine göre sayılır. Örneğin C2:C6 aralığının üçüncü hücresi, sayfadaki C4 hücresidir. Aralığın dışına taşan numaralar da verilebilir; sonuç aralığın dışındaki hücre olur.

Sık kullanılan kalıplar​

Aşağıdaki kalıplar günlük VBA çalışmalarının büyük bölümünü karşılar:

VBA 11 satır
' A1 hücresine değer yazar
Cells(1, 1).Value = "Başlık"

' Sütun harfiyle C2 hücresine başvurur
Cells(2, "C").Value = 100

' İki Cells ile A1:C5 aralığını tanımlar
Range(Cells(1, 1), Cells(5, 3)).ClearContents

' A sütunundaki son dolu satırı bulur
son = Cells(Rows.Count, 1).End(xlUp).Row

Bu kalıplardaki Range içinde iki Cells kullanımı, başlangıç ve bitiş hücresini değişkenlerle belirlemenin standart yoludur. Son dolu satırı bulma kalıbı ise veri sayısı değiştiğinde döngü sınırını otomatik ayarlar.

1. Döngüyle satır satır hesaplama​

Ürün listesinde her satırın tutarını Adet ile Birim Fiyat'ı çarparak D sütununa yazmak istiyorsunuz. Örnek sayfa etkinken, Alt+F11 ile açılan Visual Basic Düzenleyicisi'nde bir standart modül ekleyip aşağıdaki kodu yapıştırın.
VBA 16 satır
Option Explicit

Sub TutarHesapla()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    ' Satır numarasını döngü değişkeni belirler, sütun numarası sabittir
    For i = 2 To 6
        ' 2. sütun Adet, 3. sütun Birim Fiyat, 4. sütun Tutar
        ws.Cells(i, 4).Value = ws.Cells(i, 2).Value * ws.Cells(i, 3).Value
    Next i

    ws.Range(ws.Cells(2, 4), ws.Cells(6, 4)).NumberFormat = "#,##0.00"
End Sub
Cells
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünAdetBirim FiyatTutar
2Klavye12450,005.400,00
3Fare25180,004.500,00
4Monitör64.200,0025.200,00
5Kulaklık15650,009.750,00
6Yazıcı43.800,0015.200,00
SatışlarExcelDepo v1.0.0
Makro, her satırda ikinci ve üçüncü sütundaki değerleri çarpıp dördüncü sütuna yazar. Klavye satırının tutarı 5.400,00, Fare satırının tutarı 4.500,00, Monitör satırının tutarı 25.200,00 olur. Kulaklık için 9.750,00, Yazıcı için 15.200,00 değeri yazılır. Döngü değişkeni yalnızca satır numarasını değiştirdiği için aynı satır içinde üç farklı sütuna kolayca başvurulabilir.

2. Range içinde iki Cells ve son satır​

Şehirlerin üç aylık satış adetleri B:D sütunlarında yer alıyor ve E sütununa satır toplamı yazılacak. Veri sayısı değişebileceğinden son satırı kodla buluyoruz. Örnek sayfa etkinken standart modüle aşağıdaki kodu yapıştırın.
VBA 20 satır
Option Explicit

Sub SatirToplamlari()
    Dim ws As Worksheet
    Dim i As Long
    Dim son As Long

    Set ws = ActiveSheet

    ' A sütunundaki son dolu satırı bulur
    son = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    For i = 2 To son
        ' İki Cells ile o satırdaki B:D aralığını tanımlar
        ws.Cells(i, 5).Value = Application.WorksheetFunction.Sum(ws.Range(ws.Cells(i, 2), ws.Cells(i, 4)))
    Next i

    ' Toplam sütununu kalın yapar
    ws.Range(ws.Cells(2, 5), ws.Cells(son, 5)).Font.Bold = True
End Sub
Cells
Formülünü incelemek için bir hücre seçin.
ABCDE
1ŞehirOcakŞubatMartToplam
2İstanbul120135150405
3Ankara809095265
4İzmir707588233
5Bursa455052147
Bölge ÖzetiExcelDepo v1.0.0
Son satır, A sütununun en altından yukarı doğru gidilerek bulunur; böylece satır eklenip silinse bile kod değişmeden çalışır. İstanbul için 405, Ankara için 265, İzmir için 233 ve Bursa için 147 toplamı yazılır. Aralığı belirleyen Range içindeki iki Cells da aynı sayfaya (ws) bağlanmıştır; bu, hata almamanın temel koşuludur.

3. Sütun harfi ve göreli başvuru​

Personelin maaşına zam oranını uygulayıp yeni maaşı E sütununa yazacaksınız. Sütunları numara yerine harfle belirtmek kodu okunaklı kılar. Ayrıca bir Range'e bağlı Cells ile göreli başvuru gösterilir. Örnek sayfa etkinken standart modüle aşağıdaki kodu yapıştırın.
VBA 18 satır
Option Explicit

Sub YeniMaasYaz()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    For i = 2 To 6
        ' Sütun harfiyle başvuru: C = Maaş, D = Zam Oranı, E = Yeni Maaş
        ws.Cells(i, "E").Value = Round(ws.Cells(i, "C").Value * (1 + ws.Cells(i, "D").Value), 2)
    Next i

    ws.Range("E2:E6").NumberFormat = "#,##0.00"

    ' Göreli başvuru: C2:C6 aralığının 3. hücresi, yani C4 sarıya boyanır
    ws.Range("C2:C6").Cells(3).Interior.Color = RGB(255, 255, 0)
End Sub
Cells
Formülünü incelemek için bir hücre seçin.
ABCDE
1PersonelDepartmanMaaşZam OranıYeni Maaş
2Ayşe YılmazMuhasebe28.000,0010%30.800,00
3Mehmet KayaSatış32.000,008%34.560,00
4Elif Demirİnsan Kaynakları30.000,0012%33.600,00
5Can ÖzkanBilgi İşlem41.000,006%43.460,00
6Zeynep ArslanSatış35.000,009%38.150,00
Maaş ListesiExcelDepo v1.0.0
Sütun harfi metin olarak verildiğinde C, D ve E sütunlarının hangi bilgiyi taşıdığı koddan kolayca anlaşılır. Yeni maaşlar E2 hücresinde 30.800,00, E3 hücresinde 34.560,00, E4 hücresinde 33.600,00, E5 hücresinde 43.460,00 ve E6 hücresinde 38.150,00 olarak hesaplanır. Kodun son satırı, C2:C6 aralığına bağlı Cells ile aralığın üçüncü hücresini, yani C4 hücresini sarıya boyar.

Kullanırken dikkat edin​

  • Satır önce, sütun sonra gelir: Cells içinde sıra her zaman satır, ardından sütundur. Sütun ile satırın yer değiştirmesi en sık yapılan hatadır ve kod hata vermeden yanlış hücreye yazar. Hata ayıklarken Cells için verdiğiniz sayıları A1 adresine çevirerek kontrol edin.
  • Range içinde Cells kullanırken sayfayı belirtin: Bir Range içindeki Cells başvurularının hepsi aynı sayfaya bağlı olmalıdır. Range'in başına sayfa yazıp içindeki Cells'e yazmazsanız Cells etkin sayfaya bağlanır ve çalışma zamanı hatası alırsınız. Çözüm için her Cells'i aynı Worksheet nesnesine bağlayın ya da With bloğu kullanın.
  • Geçersiz numaralar hata verir: Satır ya da sütun numarası 0, negatif ya da sayfa sınırlarının (1.048.576 satır, 16.384 sütun) dışında olursa çalışma zamanı hatası oluşur. Döngü değişkeninin hiçbir zaman 0'a düşmeyeceğinden emin olun; özellikle yukarı doğru Offset ya da geri sayım yaparken dikkat edin.
  • Bağımsız değişkensiz Cells tüm sayfayı kapsar: Cells tek başına yazıldığında bir milyondan fazla satırı kapsayan tüm hücreler anlamına gelir. Cells üzerinde Clear ya da ClearContents çalıştırmak sayfadaki bütün verileri siler. Bu kullanımı yalnızca bilerek ve gerektiğinde yapın.
  • Hız ipucu: Büyük veri üzerinde hücre hücre okuma ve yazma yavaştır. Çok sayıda hücre işleyecekseniz önce aralığı bir diziye alıp işlemi bellekte yapın, sonra sonucu tek seferde sayfaya yazın. Ayrıca Application.ScreenUpdating özelliğini işlem boyunca kapatabilirsiniz.
  • İlgili konular:
    • Range: A1 adresi ya da aralık adıyla hücre ve aralıklara başvuran nesne
    • Rows ve Columns: satır ve sütun bütününe başvuran özellikler
    • Offset ve Resize: bir hücreye göre kaydırma ve aralığı yeniden boyutlandırma
    • End: Ctrl+Ok tuşu davranışıyla son dolu hücreyi bulan özellik
    • UsedRange: sayfada kullanılan alanı veren özellik
    • Worksheet nesnesi ve Worksheets koleksiyonu: sayfaya kodla başvuru
    • SATIR ve SÜTUN: hücrenin satır ve sütun numarasını veren işlevler
    • İNDİS: verilen satır ve sütun numarasındaki değeri döndüren işlev
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
13
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst