ListBox Sorgulamayı Hızlandırma ?

CengizYurek

Altın Üye
Katılım
11 Ocak 2017
Mesajlar
46
Excel Vers. ve Dili
2019-TR
Altın Üyelik Bitiş Tarihi
01-01-2026
Merhabalar

15060 satır ve 9 sütunda verinin bulunduğu excel sayfamda VBA ile sorgulama yapıyorum. Arama sonucu listboxta seçtiğim bilgiye denk gelen hücreleri de ekrana yansıtıyorum. Ancak ekrana yansıtmam gereken 7 veriyi tümden yansıtınca vba, excel donuyor kapanıyor.
2 veya 3 veri yansıttığımda ise çok yavaşta olsa çalışıyor. Listcount sayısını arttırdıkça uygulama donuyor.
Fakat sorgulama değilde ayrı bir sayfada aynı verileri aynı sayıda listbox ve textbox ile listelediğimde hiçbir donma olmuyor.

Kodlarımı aşağı bırakıyorum. Lütfen Yardımcı olur musunuz ?
Türkçe Offc19 kullanıyorum.

Kod:
Private Sub ilacaralist_Change()

'// Arama kutusu
Dim i As Long
Dim a As Long

Dim ilaclst As Variant
Dim sonsatir As Integer
ilaclistefrm.Clear
sonsatir = Sheets("ilaclar").Range("A15060").End(xlUp).Row


If Sayfa5.Range("A" & sonsatir).Row > 1 And Trim(ilacaralist.Value) <> "" Then
ilaclst = Sheets("ilaclar").Range("A2:A" & sonsatir).Value

For i = LBound(ilaclst) To UBound(ilaclst)
If InStr(1, ilaclst(i, 1), Trim(ilacaralist.Value), vbTextCompare) Then
ilaclistefrm.AddItem ilaclst(i, 1)
For a = i To i + 1
ilaclistefrm.List(ilaclistefrm.ListCount - 1, 1) = Sayfa5.Range("B" & a)
ilaclistefrm.List(ilaclistefrm.ListCount - 1, 2) = Sayfa5.Range("C" & a)
ilaclistefrm.List(ilaclistefrm.ListCount - 1, 3) = Sayfa5.Range("D" & a)
'// ilaclistefrm.List(ilaclistefrm.ListCount - 1, 4) = Sayfa5.Range("E" & a)
'// ilaclistefrm.List(ilaclistefrm.ListCount - 1, 5) = Sayfa5.Range("F" & a)
'// ilaclistefrm.List(ilaclistefrm.ListCount - 1, 6) = Sayfa5.Range("G" & a)
Next
End If

Next
End If

'// Arama kutusu boş ise
If ilacaralist = "" Then
ilaclistefrm.List = Sheets("ilaclar").Range("A2:I15060").Value
End If

End Sub
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
ilacaralist Combobox olsa gerek. Her zamanki gıcıklığımla Combobox içinde change kullanımını önermiyorum. Listboxa en ağır veri alma yönetimi olan additem ile comboboxtaki her harf değişiminde kodların tekrar tekrar tetiklemesi birleştiğinde büyük verilerde bu şikayetler duyulmaya başlar. Bu gibi durumların baştan planlanması ve kodların buna göre düzenlenmesi gerektiğini hep söylüyorum.
Combobox change yerine exit gibi bir event kullanın.
Additem yerine yeni bir dizi oluşturup o diziye sonuçları atıp Listboxx.List=Yenidizi gibi atma yapın.
 

CengizYurek

Altın Üye
Katılım
11 Ocak 2017
Mesajlar
46
Excel Vers. ve Dili
2019-TR
Altın Üyelik Bitiş Tarihi
01-01-2026
ilacaralist Combobox olsa gerek. Her zamanki gıcıklığımla Combobox içinde change kullanımını önermiyorum. Listboxa en ağır veri alma yönetimi olan additem ile comboboxtaki her harf değişiminde kodların tekrar tekrar tetiklemesi birleştiğinde büyük verilerde bu şikayetler duyulmaya başlar. Bu gibi durumların baştan planlanması ve kodların buna göre düzenlenmesi gerektiğini hep söylüyorum.
Combobox change yerine exit gibi bir event kullanın.
Additem yerine yeni bir dizi oluşturup o diziye sonuçları atıp Listboxx.List=Yenidizi gibi atma yapın.
Cevabınız için teşekkür ederim.
Cbox değil. Textbox içinden arama yapıp listbox'a veri çekmeye çalışıyorum. Ama muazzam derece de yavaş. Listbox.List ile arama sonucunu nasıl çekeceğimi bilemiyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Forumda arama yapmalısınız..

 

CengizYurek

Altın Üye
Katılım
11 Ocak 2017
Mesajlar
46
Excel Vers. ve Dili
2019-TR
Altın Üyelik Bitiş Tarihi
01-01-2026
Forumda arama yapmalısınız..

anladım hocam ben ücretli üyelik satın alayım. nasip
 

CengizYurek

Altın Üye
Katılım
11 Ocak 2017
Mesajlar
46
Excel Vers. ve Dili
2019-TR
Altın Üyelik Bitiş Tarihi
01-01-2026
Değerli dostlarım bilgilendirme amaçlı yazıyorum. Kendim çözdüm.
Dinamik arama yerine arama kodlarını commandbutona tanımlayıp aramayı daha uygun gördüm. Işık hızında gerçekleşiyor. Benim için kullanışı oldu.
Yinede altın üye olduk iyi oldu.
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Doğru tekniklerle yine hızlı olabilirdi.
10.000 satırlık 3 kolonluk dosyada en hızlı 2 teknik için örnekler var.
Biri dizi yöntemi. Diğeri ADO
Örnekleri inceleyebilirsiniz.
 

Ekli dosyalar

CengizYurek

Altın Üye
Katılım
11 Ocak 2017
Mesajlar
46
Excel Vers. ve Dili
2019-TR
Altın Üyelik Bitiş Tarihi
01-01-2026
Doğru tekniklerle yine hızlı olabilirdi.
10.000 satırlık 3 kolonluk dosyada en hızlı 2 teknik için örnekler var.
Biri dizi yöntemi. Diğeri ADO
Örnekleri inceleyebilirsiniz.
Çok güzel olmuş. Kütüphaneme ekledim.
 
Üst