• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

listbox'ta boş satırlar

Katılım
10 Mayıs 2009
Mesajlar
1,080
Excel Vers. ve Dili
2003 türkçe
Selamlar;

Label_Click olayına ; liste adını verdiğim listbox için:liste.RowSource="altıdanfazla" vb kodlarla adlandırılmış listeler getiriyorum.
Ancak listelerimdeki boş satırlar da listbox'a geliyor.Sadece dolu satırların görünmesini nasıl sağlayabilirim.

Şimdiden ilgilenen herkese teşekkürler.
 
Selamlar,

AD tanımlamalarınızı dinamik yaparsanız boş satırlardan kurtulabilirsiniz. Dinamik alan adlandırılmasını öğrenmek için aşağıdaki linkten faydalanabilirsiniz.

Dynamic Range- Dinamİk Alan
 
korhan bey ilginiz için teşekkür ederim.
anladığım kadarıyla dinamik alan tanımlaması yaptığımızda liste sonundaki boş satırlardan kurtulma şansım var.ama benim formül sonuçlarına göre işleyen listelerimin "" veya 0 değeri alan arada boş satırları var.Bunlar için nasıl bir işlem yapmam gerekir yardımcı olursanız sevinirim.
 
Selamlar,

Size iki yol önerebilirim.

1- Formülle oluşturduğunuz listesinizide makro ile oluşturmak. Bu şekilde sadece kriterlerinize uyan verileri listeleyerek aradaki boş satırlardan kurtulabilirsiniz. Oluşan bu listenizide RowSource yöntemi ile yine ListBox nesnesine yükleyebilirsiniz.

2- ListBox nesnesine veri yükleme işlemini döngü ile yapmak. Bu şekilde bir "IF" sorgusu ile boş satırları gözardı ederek verilerinizi ListBox nesnesine yükleyebilirsiniz. Bu yöntem veri sayınız arttıkça size hız kaybettirecektir. Bazı yöntemlerle hızlandırılabilir. Forumda "redim" şeklinde arama yaparsanız örnekler bulabilirsiniz.
 
Aşağıdaki linkte bir örnek dosya yolluyorum.Liste alanımdaki boşlukların listbox'a gelmesini önleyen örnek bir çözüm gösterebilirseniz çok sevinirim.Önerdiğiniz çözümleri inceledim ama düzeyim malesef uygulayacak kadar anlamak için yeterli değil.Yardımcı olursanız sevinirim iyi çalışmalar dilerim.

http://depositfiles.com/files/hp2c2t0b5
 
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub Label1_Click()
Dim i As Long, x As Long
liste.Clear
For i = 2 To Cells(65536, "A").End(xlUp).Row
    If UCase(Replace(Replace(Cells(i, "B").Value, "i", "İ"), "ı", "I")) = _
    "KIZ" And Cells(i, "c").Value >= 0 And Cells(i, "C").Value <= 6 Then
        liste.AddItem
        liste.List(x, 0) = Cells(i, "A").Value
        liste.List(x, 1) = Cells(i, "C").Value
        x = x + 1
    End If
Next i
    
End Sub
 

Ekli dosyalar

Bu daha hızlı çalışır.
Auto filter kullanılmıştır.
Sayfa3 yardımcı sayfa olarak kullanılmıştır.:cool:
Kod:
Private Sub Label1_Click()
Sheets("GİRİŞ İŞLEMLERİ").Select
Sheets("Sayfa3").Range("A:C").Clear
Range("A1").AutoFilter
Range("A1").AutoFilter field:=2, Criteria1:="=Kız"
Range("A1").AutoFilter field:=3, Criteria1:=">=0", Operator:=xlAnd, _
Criteria2:="<=6"
Range("A1:C" & Cells(65536, "A").End(xlUp).Row).CurrentRegion.Copy _
Sheets("Sayfa3").Range("A1")
liste.RowSource = "Sayfa3!A2:C" & Sheets("Sayfa3").Cells(65536, "A").End(xlUp).Row
Range("A1").AutoFilter
    
End Sub
 

Ekli dosyalar

Buda Başka bir yöntem.
Dizi yöntemi.Bunda yardımcı sayfaya gerek yoktur.
Bu yöntemlede verilierinizi hızlıca listboxa alabilirsiniz.
Birde Ado yöntemi ile sql sorgusu ilede alınabilir ama o ado konusuna giriyor.
Excelde kullanabilceğiniz yöntemler bunlardır.Şimdi Ado konusuna girip kafanızı iyice karıştırmayalım.Kolay gelsin.
Dosya ektedir.:cool:
Kod:
Private Sub Label1_Click()
Dim i As Long, a As Long
ReDim myarr(1 To 2, 1 To 1)
Sheets("GİRİŞ İŞLEMLERİ").Select
liste.Clear
For i = 2 To Cells(65536, "A").End(xlUp).Row
    If UCase(Replace(Replace(Cells(i, "B").Value, "i", "İ"), "ı", "I")) = "KIZ" _
    And Cells(i, "C").Value >= 0 And Cells(i, "C").Value <= 6 Then
        a = a + 1
        ReDim Preserve myarr(1 To 2, 1 To a)
        myarr(1, a) = Cells(i, "A").Value
        myarr(2, a) = Cells(i, "C").Value
    End If
Next i
If a > 0 Then liste.Column = myarr
End Sub
 

Ekli dosyalar

Evren Bey;

Sorunuma beklediğimden çok daha hızlı bir şekilde çözüm bulmamı sağlamakla beraber alternatif çözümler de sunarak çok verimli bir kaynak sağlamış oldunuz.Dizi yöntemini kendime uygun bularak hemen kullandım ve çalıştı.İlginizden dolayı size ve korhan beye çok teşekkür ederim.iyi çalışmalar dilerim.
 
Evren Bey;

Sorunuma beklediğimden çok daha hızlı bir şekilde çözüm bulmamı sağlamakla beraber alternatif çözümler de sunarak çok verimli bir kaynak sağlamış oldunuz.Dizi yöntemini kendime uygun bularak hemen kullandım ve çalıştı.İlginizden dolayı size ve korhan beye çok teşekkür ederim.iyi çalışmalar dilerim.
Rica ederim.
İyi çalışmalar.:cool:
 
Geri
Üst