Listbox, programı yavaşlatıyor.

Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
Dostlarıma selamlar.
Kod:
ListBox1.Clear
son = Sheets(Firma).Cells(65536, 1).End(xlUp).Row
For i = 1 To son
   c = c + 1
   For y = 1 To 10
      ListBox1.AddItem
      ListBox1.List(c - 1, y - 1) = Sheets(Firma).Cells(i + 6, y).Value
   Next
Next
Kodlarıyla bilgilerimi listbox'a aktarıyorum. Fakat yavaş çalışma sorunu var. Biraz araştırdıktan sonra
Kod:
MsgBox ListBox1.ListCount
kodunu uyguladım ve sonuç 110 çıktı. Ama bende o kadar bilgi yokki. listbox'ta 5 satır var ama 110 görünüyor. Bu da yavaşlatıyor. Bunun nedeni ne olabilir.Ve de bir kodla listbox'a "son" değişkeni kadar satır sınırlaması yaptırabilir miyiz? ve bir sorum daha olacak; Lİstbox'a 10 dan fazla sütun koyabilir miyiz?
Destek olursanız sevinirim..
 

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
additem yöntemi ile 10 kolondan fazla koyamazsınız. Bu durumda rowsource ile veri almanızı öneririm. Örneğin;

listbox1.rowsource="firma!a7:j" & [firma!a65536].end(3).row
 
Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
Üstadım ilgin için teşekkürederim. ve özür dilerim çünkü "firma" combobox'tan seçim yapılarak belirleniyordu yani bir değişkendi. Rowsource yönteminin çeşitli varyasyonlarını denemiştim ama araştırma yapmama rağmen değikeni (firma) rowsource yöntemine adapte edemediğimden rowsource yöntemini terk etmiştim.

Sorumu şöyle değitirebilir miyim? Rowsource yöntemini değiken kullanılabilir hale getirebilir miyiz? İlginiz ve emekleriniz için teşekkürler.
 

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
Dosyanızı eklermisiniz.
 
Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
Sayın leventm bilgisayarım çöktüğü için dosyayı dün ekleyemedim. Ama sorun çözüldü. Dosya ekte mevcut. Daha program tamamlanmadı. Bu aşamayı atlarsam tamamlayacağım ve sunacağım.

Açıklama: "Firma"yı userform2'deki combobox'tan seçip "getir" butonuna basınca bilgileri listbox'a aktarıyor(!). Şimdilik irma ekleme silme işlemlerini yapıyor.

Tekrar teşekkürederim.
 
Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
leventm üstadım, ekteki dosyayı fark ettiniz mi?
Ayrıca sizleri anlamakta güçlük çekiyorum. "veri yönetimi" çalışmanızı inceledim. Bir insan neden bu kadar zahmete katlanır diye düşünmeden edemiyorum. "Mahmut Hoca"(Kel Mahmut)'nın dediği gibi okul sadece dört duvar ve bir damdan oluşan bina değilmiş. İnşallah ben de sizlerin kadar kendimi geliştirip, öğrendiklerimi paylaşabilirim.
Buarada programı gelitirmeye devam etmekteyim.
Tekrar tekrar teşekkür ederim.
 

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
userformun initialize olayına aşağıdaki kkodu eklerseniz, sayfa1 deki firma listeleri comboboxa rowsource ile yüklemiş olursunuz.

ComboBox1.RowSource = "sayfa1!a2:a" & [sayfa1!a65536].End(3).Row
 
Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
Üstadım, combobox'a firma listesini almakta sorun yaşamıyorum. Firmayı combobox'tan seçip getir butonuna basınca adItem yöntemiyle Listbox'ta 10 dan fazla sütun alamadığımdan rowsource yöntemini tavsiye etmiştiniz. Fakat sorun; Listbox'a rowsource ile veri alınca combobox'tan seçilen "Firma"nın rowsource yöntemine adapte edilememesiydi.
Eklediğim dosyada "Firma" 1 tane, fakat bu sayı program bitince artacak. Sorun da burda başlıyor.
Not:Ben yazdığım kodları userform içinde değil modül içinde saklıyorum. Dolayısıyla o kodları görmemiş olabilirsiniz.
Kod:
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = "20;25;25;40;40;40;40;40;40;40;40;40"
KutuYazma
End Sub

Sub KutuYazma()
Workbooks("proje21").Activate    'beyanname programının aktifleştirilmsi
FirmaBelirleme = WorksheetFunction.CountA(Sheets("sayfa1").Range("a:a"))
FirmaSayısı = FirmaBelirleme - 1
UserForm2.TextBox10.Text = FirmaSayısı    'firma sayısı userforma(textbox) bildiriliyor
UserForm2.ComboBox1.RowSource = "sayfa1!a2:a" & FirmaBelirleme
Sheets(1).Select
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
Dosyanızda proje21 diye bir sayfa mevcut değil. dolayısıyla hata veriyor.
 
Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
Sayın levetm uğraşırken aklıma basit bir şey geldi
Kod:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
CommandButton5.Enabled = False
CommandButton6.Enabled = True
CommandButton7.Enabled = True
Worksheets(Firma).Activate
For a = 20 To 31
   Controls("textbox" & a) = Cells(ListBox1.ListIndex + 7, a - 19)
Next
End Sub
"Worksheets(Firma).Activate"
Sanırım bu sorunu çözmüş.
Dosyanın yeni halide de uygulamıştım.
 

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
İlgili prosedürü aşağıdaki ile değiştirirmisiniz.

[vb:1:ff35d0425c]Sub FirmaGetirme()
For Sayaç4 = 1 To 9
UserForm2.Controls("textbox" & Sayaç4 + 1) = Sheets(UserForm2.ComboBox1.Value).Cells(2, Sayaç4)
Next
UserForm2.ListBox1 = ""
UserForm2.ListBox1.RowSource = UserForm2.ComboBox1.Value & "!a7:l" & Sheets(UserForm2.ComboBox1.Value).[b65536].End(3).Row
End Sub
[/vb:1:ff35d0425c]
 
Katılım
13 Mayıs 2006
Mesajlar
12
Excel Vers. ve Dili
2002 Türkçe
Elinize yürğinize sağlık. Söyleyecek bir şey bulamıyorum.
Yanız kodları biraz kısaltarak kullandım. Şöyle ki;
Kod:
Global Firma As String    'Firma değişkeninin proje bazında tanıtılması
_____________________________________________________________
Sub FirmaGetirme()
Firma = Sheets(1).Cells(UserForm2.ComboBox1.ListIndex + 2, 1)
For Sayaç4 = 1 To 9
  UserForm2.Controls("textbox" & Sayaç4 + 1) = Sheets(Firma).Cells(2, Sayaç4)
Next
      'firmaya ilişkin bilgiler yüklendi
UserForm2.ListBox1.Clear
UserForm2.ListBox1.RowSource = Firma & "!a7:l" & Sheets(Firma).[b65536].End(3).Row
      'beyanname ayrıntıları yüklendi
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
Firma = Sheets(1).Cells(UserForm2.ComboBox1.ListIndex + 2, 1)

Yukarıdaki yerine ben olsam aşağıdaki şekilde kullanırdım.

Firma = UserForm2.ComboBox1.value
 
Üst