• DİKKAT

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

ComboBox'larda Süzme Problemi

Katılım
5 Ocak 2009
Mesajlar
1,586
Excel Vers. ve Dili
2003 Türkçe
Selam,
Aşağıda sadece bir kısmını yolladığım kodlar ile 7+7=14 adet ComboBox 'ile birbiri ile ilişki çalışan ve birbirlerinin durumuna göre güncellenen Combobox güncelleme kodları hazırladım. Herşey çok güzel çalışıyor. Tam istediğim gibi.
Ancak bazen aşğıdaki kırmızı alanda hata veriyor:
Hata şu: run-time '380'
Örneklendirecek olursam; hatalı bölgeyi incelediğimde, en son satırdaki
Kod:
f.ComboBox12 = combo12_önce
hatalı alanda mouse'u beklettiğimde
f.ComboBox12= "" görünüyor. combo12_önce= "Deneme" görünüyor.
Yani f.ComboBox12'ye "deneme" yazdırmaya çalışıyor. Combobox listesinde "deneme" olmadığı için hata veriyor.
1.sorum:
Listesinde olmasa bile neden "Deneme"yi Combobox12'e yazamıyorum, gösteremiyorum?
2.sorum:
aşağıda görüleceği üzere başlangıçtaki ve sondaki combo5_önce metodları yerine başka ne gibi metod kullanabilirim?
.SelText, .Tag, .Text ilişkileri ile nedir? bunlarla çözebilir miyim?
Kod:
Sub insört_combo_güncelle2() 
Dim f As insörtler
Set f = insörtler

combo4_önce = f.ComboBox4 'operatör
combo5_önce = f.ComboBox5 'insört

combo11_önce = f.ComboBox11 'operatör
combo12_önce = f.ComboBox12 'insört
For cl = 4 To 17
f.Controls("ComboBox" & cl).Clear
Next

For cl = 4 To 17
f.Controls("ComboBox" & cl).AddItem "Tümü", 0
Next

For i = 1 To UBound(insört_dizi, 2)

If combo4_önce <> "Tümü" And combo4_önce > insört_dizi(3, i) Then GoTo atla
If combo5_önce <> "Tümü" And StrComp(combo5_önce, insört_dizi(4, i), vbTextCompare) > 0 Then GoTo atla
If combo11_önce <> "Tümü" And combo11_önce < insört_dizi(3, i) Then GoTo atla
If combo12_önce <> "Tümü" And StrComp(insört_dizi(4, i), combo12_önce, vbTextCompare) > 0 Then GoTo atla
   
'******************************************
    For j = 0 To f.ComboBox4.ListCount - 1 'operatör1
    If f.ComboBox4.List(j) = insört_dizi(3, i) Then GoTo combo4_atla
    Next
    f.ComboBox4.AddItem insört_dizi(3, i)
combo4_atla:

 For jb = 0 To f.ComboBox11.ListCount - 1 'operatör2
    If f.ComboBox11.List(jb) = insört_dizi(3, i) Then GoTo combo11_atla
    Next
     f.ComboBox11.AddItem insört_dizi(3, i)
combo11_atla:
'******************************************
    For k = 0 To f.ComboBox5.ListCount - 1 'insört1
    If f.ComboBox5.List(k) = insört_dizi(4, i) Then GoTo combo5_atla
    Next
    f.ComboBox5.AddItem insört_dizi(4, i)
combo5_atla:

For kb = 0 To f.ComboBox12.ListCount - 1 'insört2
    If f.ComboBox12.List(kb) = insört_dizi(4, i) Then GoTo combo12_atla
    Next
        f.ComboBox12.AddItem insört_dizi(4, i)
combo12_atla:
'******************************************
atla:
Next

f.ComboBox4.ListRows = f.ComboBox4.ListCount
f.ComboBox5.ListRows = f.ComboBox5.ListCount
'******************************************
liste = f.ComboBox4.List
f.ComboBox4.List = txt_sırala3(liste)

liste = f.ComboBox5.List
f.ComboBox5.List = txt_sırala3(liste)

'*************************************************
liste = f.ComboBox11.List
f.ComboBox11.List = txt_sırala3(liste)

liste = f.ComboBox12.List
f.ComboBox12.List = txt_sırala3(liste)
'***************************************************

[COLOR="Red"]On Error Resume Next
f.ComboBox4 = combo4_önce
f.ComboBox5 = combo5_önce

f.ComboBox11 = combo11_önce
f.ComboBox12 = combo12_önce[/COLOR]
End Sub
 
Son düzenleme:
Bu comboboxın Style özelliğini 2 (fmstyleDropDownList) yaptıysanız olur.
Eğer combonun listesinde olmayan bir değer girmeye çalışırsanız bu hatayı verir.
Ya öncde değeri comboya listeye ekleyin sonra comboya değer olarak yazın,yada bu özelliği kullanmayın.1 özelliğini kullanın.
Birde değişken isimlerinizde ve nesne iismlerinizde Kesinlikle Türkçe karakterler kullanmayın.Türkçe windowsta sorun çıkarmaz belki ama başka bir dilde mutlaka bir yerde sorun çıkaracaktır.
 
Bu comboboxın Style özelliğini 2 (fmstyleDropDownList) yaptıysanız olur.
Eğer combonun listesinde olmayan bir değer girmeye çalışırsanız bu hatayı verir.
Ya öncde değeri comboya listeye ekleyin sonra comboya değer olarak yazın,yada bu özelliği kullanmayın.1 özelliğini kullanın.
Birde değişken isimlerinizde ve nesne iismlerinizde Kesinlikle Türkçe karakterler kullanmayın.Türkçe windowsta sorun çıkarmaz belki ama başka bir dilde mutlaka bir yerde sorun çıkaracaktır.

Selam,
Hocam çok teşekkür ederim. dediğiniz gibi Style'i combo yaptım sorun düzeldi.
Herşey istediğim gibi oldu. değişkenler ile ilgili önerizi dikkate alacağım. Öğrendiğim iyi oldu. konudan biraz farklı ancak bir sorum olacak, ben değişkenlerin çoğunu Dim ile tanımlamıyorum (Dim x as Long, Dim deger as String gibi).Ancak, istediğim tüm sonuçları elde ediyorum. Kodların çalışma hızını etkiler mi?

İyi çalışmalar.
 
Geri
Üst