Worksheet'teki ardışık olmayan satırları Listbox'a ekle

Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Selamlar Arkadaşlar,

Listxbox'ta listeleme ile ilgili ama biraz farklı bir problem yaşadım, kendimce araştırıp çözdüm. Fakat biraz yavaş çalışma söz konusu olduğundan daha iyi bir çözüm arayışına girdim.

Benim problemim A3:H500 vb. bir bütün halindeki bir seçimin değil, çalışma sayfasında belli bir koşulu sağlayan ardışık olan ya da olmayan satırların Ax:Hx alanının önceki listelenen ögeler silinmeden listbox'a eklenmesi. Bunu aşağıdaki kod ile satırdaki her kolonu listbox.list (x, y)=değer ile ayrı ayrı girerek yaptım ama dediğim gibi yavaş çalışıyor ve doğru koşulu sağlayan binlerce satır olması ihtimali listbox'ın listesinin oluşturulması işlemini uzatıyor.

Ã?ğrenmek istediğim, çalışma sayfasındaki koşulu sağlayan satırın Ax:Hx alanının tek seferde listbox'taki diğer ögelere eklenerek listelenmesi mümkün müdür?

Benim şu an kullandığım kod şöyledir.
Kod:
Sub Eczane()
Dim dg, ecz

Worksheets(frmBul.cboIl.Text).Activate
Range("A:A").Select
sat = Application.CountA(Selection) + 1

x = -1

For i = sat To 3 Step -1     'son kayıttan ilk kayıda doğru listeleniyor
    ecz = Cells(i, 4).Value
    If frmBul.txtEczane.Value = ecz Then      'sayfadaki eczane adı ile userformdaki karşılatırılıyor
    x = x + 1
        frmBul.lstKayit.AddItem
        For y = 0 To 7
        dg = Cells(i, y + 1).Value
        frmBul.lstKayit.List(x, y) = dg
        DoEvents
        Next y
    End If
    If frmBul.togDur.Value = True Then Exit Sub     'Listelemeyi durdur düğmesine basıldı ise çıkış
Next i

End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Daha kısa bir yol önerilebilir, bunun için bir örnek dosya eklermisiniz. Mevcut kodlarınıza yapacak pek bir şey yok.
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Çok memnun olurum Sayın leventm, çalışma tamamen bitmediği için bazı durumlarda hata verebilir ya da yapılması gerekeni yapılmayabilir. Buna rağmen pek problem çıkarmadan çalışıyor kod.

Excel dosyasını açtığınızda hemen kayıt formu çıkacak karşınıza, "Düzelt" buttonuna tıklarsanız Kayıt arama formu gelecek "Kaydın ili" kutusunda "aydın"ı seçin ve "eczane adı" textbox'ın sağındaki option'a tıklayıp "GOLLUM" yazıp enter'a basın AYDIN sayfasındaki tüm GOLLUM adlı kayıtlar listbox'ta listelenmeye başlayacak. Göreceksiniz ki uzun bir süre alacak tüm kayıtların listelenmesi. Üstelik gerçek hayatta bu kadar az satır sayısı da olmayacak.

Ã?nerilerinizi dört gözle bekliyorum.

Not: sayfa koruma/açma şifresi: entropy_tr (VBA kodundan korunup açılmaktadır)
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ã?ncelikle kod içindeki DoEvents satırını kaldırırsanız, oldukça hızlanacaktır. Daha hızlı bir alternatif sunduğum ekli dosyayı inceleyin. Çözümde Sayfa1 isimli bir sayfa eklenmiştir.
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Sayın leventm,

Gerçekten çok teşekkür ederim; Amerikayı tekrardan keşfetmeye kalmış olan beni silkip, kendime getirdiğiniz ve incelemesini az önce tamamladığım güzel kod için.

Süzme işlemini excele yaptırmak gerçekten çok hızlı bir yöntemmiş. Yazdığınız kod da gerçekten bu işin hızlı halledilmesini basit bir şekilde hallediyor. Bir de benim yaptığıma bakın: döngü ile süzme. Ã?ğrenecek çok şey var.

İzninizle yazdığınız kodu tüm benzer sorunu yaşadığım ya da yaşayacağım makrolarda kullanmak isterim, zira epeyce zaman kazandırıyor.

Tekrar çok teşekkür ederim.

Konu dışı bir şey daha sormak isterim müsaadenizle. Cuma günü işyerindeyken forumda userform'u saydamlaştırmaya yarayan bir api ve kod görüp bunu sizinde farketmiş olacağınız gibi kendi userform'larıma eklemiştim ve gayet düzgün de çalışmışlardı. Fakat evde çalışmıyor. Bunun sebebi işte VB yüklü olup, evde olmaması mıdır sizce? Çok da önemli değil ama merak ettim doğrusu sebebini.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
İzninizle yazdığınız kodu tüm benzer sorunu yaşadığım ya da yaşayacağım makrolarda kullanmak isterim, zira epeyce zaman kazandırıyor.
Rica ederim. Bunu sormanıza bile gerek yok, burada paylaşılan her şey herkesin kullanımına sunulmuş demektir.
Cuma günü işyerindeyken forumda userform'u saydamlaştırmaya yarayan bir api ve kod görüp bunu sizinde farketmiş olacağınız gibi kendi userform'larıma eklemiştim ve gayet düzgün de çalışmışlardı. Fakat evde çalışmıyor. Bunun sebebi işte VB yüklü olup, evde olmaması mıdır sizce? Çok da önemli değil ama merak ettim doğrusu sebebini.
Bahsettiğiniz kodun çalışması için işletim sisteminizin XP olması gerekir, daha alt versiyonlarda maalesef çalışmıyor.
 
Katılım
17 Nisan 2005
Mesajlar
122
Excel Vers. ve Dili
Excel 2010 TR | Excel 2013 TR
Teşekkürler, iyi akşamlar.
 
Üst