Özellik ikonu

ColumnCount

İndirme izni yok

Genel Bakış

ColumnCount (ColumnCount property), UserForm ya da çalışma sayfası üzerindeki ListBox ve ComboBox denetimlerinde kaç sütunun gösterileceğini belirleyen özelliktir. Çok sütunlu bir listeyi (ürün, kategori, fiyat gibi) tek bir denetimde göstermek ve bu sütunlardaki değerlere kod ile erişmek için kullanılır. Varsayılan değeri 1 olduğundan, birden fazla sütunlu veri kaynağı ancak bu özellik artırıldığında tüm sütunlarıyla görünür.

Söz dizimi​

Özellik okunabilir ve yazılabilir. Değer atamak ve okumak için söz dizimi şöyledir:
VBA 2 satır
nesne.ColumnCount = sütunSayısı
sütunSayısı = nesne.ColumnCount
  • nesne: ListBox ya da ComboBox denetimi (ör. ListBox1). Çalışma sayfasına eklenmiş ActiveX denetiminde ise OLEObject.Object üzerinden erişilir.
  • sütunSayısı: Long türünde tam sayı; isteğe bağlı değil, ama atanmazsa varsayılan değer 1 olur. Veri kaynağındaki tüm sütunları göstermek için -1 verilir.
Özelliği tasarım aşamasında VBA düzenleyicisinde Görünüm > Özellikler Penceresi (View > Properties Window) üzerinden de ayarlayabilirsiniz.

Değerler ve davranış​

  • 1: Varsayılan değerdir; yalnızca ilk sütun görüntülenir.
  • 2 ve üzeri: Belirtilen sayıda sütun yan yana görüntülenir. Sütun sayısı, veri kaynağının sütun sayısından fazla verilirse fazlalık boş sütun olarak kalır.
  • -1: Veri kaynağındaki tüm sütunlar görüntülenir.
Sütun sayısı belirlendikten sonra Column özelliği ile belirli bir sütun ve satırdaki değere ulaşılır. Column özelliğinde sütun ve satır numaraları 0'dan başlar; yani sütun 0 ilk sütundur. Sütunların genişliğini ColumnWidths özelliği belirler; bir sütunun genişliğini 0 yaparsanız sütun gizlenir, ama verisi kullanılabilir kalır.

Birlikte kullanılan özellikler​

  • ColumnWidths: Her sütunun genişliğini noktalı virgülle ayrılmış listeyle belirler (ör. 70;50;0).
  • BoundColumn: Value özelliğinin hangi sütunun değerini döndüreceğini belirler; varsayılanı 1'dir.
  • TextColumn: Text özelliğinin hangi sütundan okunacağını belirler.
  • ColumnHeads: RowSource ile bağlanan aralıkta sütun başlıklarını gösterir.
  • List ve RowSource: Denetimin veri kaynağını belirler. List iki boyutlu dizi kabul eder; bu nedenle bir aralığın Value özelliği doğrudan atanabilir.
Önce ColumnCount değerini, sonra veriyi atamak güvenli bir sıradır.

1. Üç sütunlu ListBox oluşturma​

Sayfadaki A2:C6 aralığında ürün, kategori ve fiyat bilgisi var. Makro, sayfaya geçici bir ListBox ekler, ColumnCount değerini 3 yapar, aralığı listeye yükler ve sonuçları D sütununa yazıp denetimi siler. Kodu standart modüle yapıştırın ve sayfa etkinken çalıştırın.
VBA 25 satır
Option Explicit

Sub ListeKurulumu()
    Dim ws As Worksheet
    Dim ole As OLEObject
    Dim lb As Object

    Set ws = ActiveSheet

    ' Sayfaya geçici bir ListBox ekle
    Set ole = ws.OLEObjects.Add(ClassType:="Forms.ListBox.1", Left:=300, Top:=20, Width:=260, Height:=110)
    Set lb = ole.Object

    ' Önce sütun sayısını, sonra veriyi ata
    lb.ColumnCount = 3
    lb.List = ws.Range("A2:C6").Value

    ' Sonuçları sayfaya yaz
    ws.Range("D2").Value = lb.ColumnCount
    ws.Range("D3").Value = lb.ListCount
    ws.Range("D4").Value = lb.Column(1, 0)

    ' Geçici denetimi sil
    ole.Delete
End Sub
ColumnCount
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünKategoriFiyatSonuç
2KlavyeÇevre Birimi450,003
3MonitörGörüntü4.250,005
4YazıcıÇıktı3.100,00Çevre Birimi
5FareÇevre Birimi220,00
6Dizüstü BilgisayarBilgisayar18.500,00
Ürün ListesiExcelDepo v1.0.0
D2 hücresine denetimin sütun sayısı olan 3 yazılır. D3 hücresi listedeki satır sayısını (5), D4 hücresi ise ilk satırın ikinci sütunundaki değeri (Çevre Birimi) gösterir. Column(1, 0) çağrısında ilk sayı sütunu, ikinci sayı satırı belirtir ve ikisi de 0'dan başlar.

2. Sütunlara kod ile erişme​

A2:C7 aralığında şehir, plaka kodu ve bölge bilgisi bulunuyor. Makro geçici bir ListBox'a üç sütunu yükler, döngüyle her satırın ilk ve üçüncü sütunlarını birleştirip D sütununa yazar. Kodu standart modüle yapıştırın.
VBA 23 satır
Option Explicit

Sub SehirBolgeYaz()
    Dim ws As Worksheet
    Dim ole As OLEObject
    Dim lb As Object
    Dim i As Long

    Set ws = ActiveSheet
    Set ole = ws.OLEObjects.Add(ClassType:="Forms.ListBox.1", Left:=300, Top:=20, Width:=260, Height:=110)
    Set lb = ole.Object

    ' Üçüncü sütuna erişebilmek için sütun sayısı 3 olmalı
    lb.ColumnCount = 3
    lb.List = ws.Range("A2:C7").Value

    ' Satırlar 0'dan başlar; sütunlar da 0'dan başlar
    For i = 0 To lb.ListCount - 1
        ws.Cells(i + 2, 4).Value = lb.Column(0, i) & " (" & lb.Column(2, i) & ")"
    Next i

    ole.Delete
End Sub
ColumnCount
Formülünü incelemek için bir hücre seçin.
ABCD
1ŞehirPlakaBölgeSonuç
2Ankara6İç AnadoluAnkara (İç Anadolu)
3İzmir35Egeİzmir (Ege)
4Bursa16MarmaraBursa (Marmara)
5Antalya7AkdenizAntalya (Akdeniz)
6Trabzon61KaradenizTrabzon (Karadeniz)
7Van65Doğu AnadoluVan (Doğu Anadolu)
Şehir BölgeExcelDepo v1.0.0
D2 hücresinde ilk satırın sonucu olan Ankara (İç Anadolu), D7 hücresinde son satırın sonucu olan Van (Doğu Anadolu) görünür. Her satırda Column(0, i) şehir adını, Column(2, i) bölgeyi verir. Sütun sayısı 1 bırakılsaydı yalnızca ilk sütun yüklenir ve üçüncü sütuna erişim hata verirdi.

3. BoundColumn ve ColumnWidths ile birlikte​

A2:C6 aralığında personelin adı, departmanı ve sicil numarası yer alıyor. Makro ColumnCount değerini 3 yapar, sicil sütununu ColumnWidths ile gizler, BoundColumn değerini 3 yaparak Value özelliğinin sicil numarasını döndürmesini sağlar ve ikinci satırı seçer. Kodu standart modüle yapıştırın.
VBA 23 satır
Option Explicit

Sub PersonelSecimi()
    Dim ws As Worksheet
    Dim ole As OLEObject
    Dim lb As Object

    Set ws = ActiveSheet
    Set ole = ws.OLEObjects.Add(ClassType:="Forms.ListBox.1", Left:=300, Top:=20, Width:=260, Height:=110)
    Set lb = ole.Object

    lb.ColumnCount = 3
    lb.ColumnWidths = "80;80;0"   ' Üçüncü sütun gizli kalır
    lb.BoundColumn = 3            ' Value, sicil numarasını döndürsün
    lb.List = ws.Range("A2:C6").Value

    lb.ListIndex = 1              ' İkinci satırı seç (0 tabanlı)

    ws.Range("D2").Value = lb.Value   ' BoundColumn sütunundaki değer
    ws.Range("D3").Value = lb.Text    ' Görünen metin

    ole.Delete
End Sub
ColumnCount
Formülünü incelemek için bir hücre seçin.
ABCD
1AdDepartmanSicil NoSonuç
2Elif KayaMuhasebe10011002
3Murat DemirSatış1002Murat Demir
4Ayşe Yıldızİnsan Kaynakları1003
5Can ÖztürkLojistik1004
6Zeynep ArslanSatış1005
PersonelExcelDepo v1.0.0
Seçilen satırın Value değeri, BoundColumn 3 olduğu için sicil numarasıdır ve D2 hücresine 1002 olarak yazılır. D3 hücresindeki Murat Demir ise Text özelliğinden gelir; varsayılan TextColumn ayarında ilk sütunu yansıtır. Gizlenen sütunun verisi kullanılabilir kalır; bu yöntem, kullanıcıya ad gösterip arka planda sicil numarasıyla çalışmak için kullanışlıdır.

Kullanırken dikkat edin​

  • Önce ColumnCount, sonra veri: Veriyi yüklemeden önce ColumnCount değerini atayın. Değer 1 iken List ile çok sütunlu veri atarsanız yalnızca ilk sütun görünür ve diğer sütunlara Column ile erişmeye çalışmak hata verebilir.
  • Sütun ve satır numaraları 0'dan başlar: Column ve List özelliklerinde ilk sütun ya da satır 0 numaralıdır. Bu, çalışma sayfasındaki 1 tabanlı numaralandırmadan farklıdır ve en sık yapılan hata budur.
  • Range.Columns.Count ile karıştırmayın: ColumnCount yalnızca ListBox ve ComboBox gibi denetimlerde bulunur. Bir aralıktaki sütun sayısını öğrenmek için Range.Columns.Count kullanılır; bu ikisi farklı nesnelere aittir.
  • -1 değeri: Tüm sütunları görüntülemek için -1 verebilirsiniz; ancak sütun sayısı bilinen kaynaklarda kesin bir sayı vermek kodun okunmasını kolaylaştırır. Çok sütunlu listede sütun genişliklerini ColumnWidths ile ayarlamazsanız sütunlar eşit paylaşılır.
  • Sütun başlıkları: ColumnHeads özelliği yalnızca RowSource ile bağlanan aralıklarda başlık satırını gösterir; List ile yüklenen verilerde başlık satırı otomatik görünmez.
  • İlgili konular:
    • ColumnWidths özelliği
    • BoundColumn ve TextColumn özellikleri
    • ColumnHeads özelliği
    • List, RowSource, ListCount ve ListIndex özellikleri
    • AddItem yöntemi
    • Column özelliği
    • Range.Columns.Count özelliği
    • ListBox ve ComboBox denetimleri
    • İNDİS ve KAÇINCI işlevleri
Ö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
11
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst