Userform yüklenirken 3 sn de yaptığı işlemi, userformu yenilerken dakikalarla yapıyor

Katılım
8 Ocak 2007
Mesajlar
147
Excel Vers. ve Dili
2003
Xp
Türkçe
İngilizce
Bir userform içinde listboxa yüklediğim verileri bir listview nesnesine userform_initialize işlemi ile ilk açılışta 3 sn de yüklüyorum. Ama verilerde değişiklik yapıp "listboxa tekrar yükle, listviewi güncelle" işlemi program içinde dakikalarca sürüyor. Programın işleyişini değiştirip güncelleme yerine "unload form" yapıp "form.show" yapınca yine 3 sn de iş bitiyor ama unload ve show işleminden kaynaklı başka problemler yaşıyorum. Userform_initialize ile dosyanın ilk çalışmasında aldığım verimi program işlerken 2. 3. 4. .... seferlerde niçin alamıyorum? Userform_initiliaze de 3 sn de yapabildiği bir veri alma işlemini, tekrar çalıştırınca neden uzun sürüyor. Bunun bir açıklaması yada doğru yöntemi var mıdır? Ya da nerde yanlış yapıyorum?

Örneğim aşağıdadır.
( dosyaların ikisi de aynı dizinde olmalıdır..)
Çalışması için yüklü olması gereken referanslar:
1. Microsoft Windows Common Controls 6.0 (SP6)
2. Microsoft ActiveX Data Objects 2.8 Library
3. Microsoft ADO Ext. 2.8 for DDL and Security
4. Microsoft DAO 3.6 Object Library

Örnekte "Ekle" butonu ile veriler.xls sayfasına dosyayı açmadan rastgele bir veri ekliyorsunuz. Daha sonra iki farklı buton ve yöntemle ekran güncellebiliyor. Metod 1 ile yaparken korkmayın bilgisayar kitlenmiyor :) ama dakikalarca (bende 80-90 sn) bekliyorsunuz.. metod 2 ise çok hızlı ama form yeniden yükleniyor. Yapılan işlemler ikisinde de aynı, süreler çok farklı..

Yardımcı olabilir misiniz?
 
Son düzenleme:
Katılım
8 Ocak 2007
Mesajlar
147
Excel Vers. ve Dili
2003
Xp
Türkçe
İngilizce
???

Bu konuyla ilgili yardımcı olabilecek kimse yokmu?

listboxa ikinci kez yüklenen datalar okunurken neden işlem yavaşlar?
 
Katılım
15 Ocak 2007
Mesajlar
791
Excel Vers. ve Dili
2003 excel visual basic
rowsource yerine add

arkadaşım listview kullanıyorsan verileri excel sayfasına dökmek yerine listview'e ekleyebilirsin böylece saniyelerce beklemezsin ekte bir örnek yolluyorum sn leventm üstadımızın yapmış olduğu bir örnek mevcuttur incelersen kendine göre revize edebilirsin...
 
Katılım
8 Ocak 2007
Mesajlar
147
Excel Vers. ve Dili
2003
Xp
Türkçe
İngilizce
.ListItems(x).ListSubItems.Add , , ListBox1.List(k, 1)

Sayın emreexcel123;

Salık verdiğiniz örneği biliyorum, bu ve bunun gibi örneklerden yararlanarak yazdım zaten bu kodları.

Listview nesnesine add ile listbox nesnesinden yüklüyorum verileri, yani excel e dökmeye hiç çalışmıyorum bile. Sanırım sorun listbox nesnesine direk dosyadan yapıştırdığım verileri listview e yüklerken oluyor. Çünkü bekleme sırasında programı kestiğimde bu aktarma işlemi içinde boğulduğunu görüyorum hep. Ama enteresan olan şey aynı kodları userform.show sırasında 3 sn gibi kısa bi sürede yaparken, listview ve listboxu temizleyip yapmaya kalkınca 90 sn lere çıkıyor zaman...

????? çözemedim hala...
 
Katılım
8 Ocak 2007
Mesajlar
147
Excel Vers. ve Dili
2003
Xp
Türkçe
İngilizce
Çözdüm .... listview1.sorted=false

Userform_initiliaze nin sonunda listview nesnesinin sorted özelliğini true bırakmışım. Tabi yeniden listview1 i temizleyip tekrar yüklerken her yüklenen veriyi sıralama işlemine tabi tutuyordu. Veri yükleme işleminden önce, sıralama özelliğini ( Listview1.sorted = False ) kaldırınca problem bitti. Yine sn ler içinde yükleme yapıyor. "Userform.Show" işleminde ise verdiğim listview1.sorted=true emri geçerli olmadığı için, yani dosya ilk defa çalışır gibi sıfırlandığı için hızlı oluyordu..

Yardımcı olan herkese teşekkürler..
 
Üst