Bu dosya, çalışma sayfasındaki geniş bir veri alanını UserForm açıldığı anda ListBox nesnesine aktaran kısa bir VBA örneğidir. Veri tek tek döngüyle eklenmez, ListBox'ın RowSource özelliği üzerinden doğrudan sayfa aralığına bağlanır.
Dosyanın içeriği
- Sayfa1: A6:XFD9 aralığında örnek veri vardır. Veri sütunları bir sütun atlayarak yerleşmiştir (A, C, E, G ... W). Her hücrede kendi adresi yazılıdır (A6, A7, C6, C7 gibi).
- UserForm1: İçinde ListBox1 nesnesi bulunan kullanıcı formudur.
Kullanılan formüller
=SUBSTITUTE(ADDRESS(ROW(A6),COLUMN(A6)),"$",""): A6 hücresinde bulunur. ADRES (ADDRESS) ile hücrenin mutlak adresini üretir, YERİNEKOY (SUBSTITUTE) ile "$" işaretlerini siler. Sonuç olarak hücre kendi adresini (A6) gösterir. Böylece ListBox'a gelen verinin hangi hücreden geldiği kolayca izlenir.
Makrolar
- UserForm_Initialize: Form açılırken çalışır. ListBox1 için sütun sayısını 16384 olarak ayarlar, ColumnHeads özelliğini açar ve RowSource değerini A7'den XFD sütununa, A sütunundaki son dolu satıra kadar olan aralık olarak belirler. Son satır, Cells(65536, "A").End(xlUp).Row ifadesiyle bulunur. Sütun başlıkları ListBox'ta, RowSource aralığının bir üstündeki satırdan (6. satır) alınır.
- UserForm_Click: Boş bir olay yordamıdır, herhangi bir işlem yapmaz.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- VBA düzenleyicisini Alt+F11 ile açın, UserForm1'i çalıştırmak için F5'e basın veya formu bir düğmeye ya da başka bir makroya bağlayın.
- Form açıldığında Sayfa1'deki A7'den başlayan veri ListBox içinde görüntülenir.
- Kendi verinizi kullanmak için Sayfa1'e A7'den itibaren verinizi yazın, başlıkları 6. satıra girin. Sütun sayısı daha azsa ColumnCount değerini buna göre düşürebilirsiniz.