• DİKKAT

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

ComboBox3.AddItem

Katılım
14 Ekim 2007
Mesajlar
173
Excel Vers. ve Dili
xp tr
Private Sub ComboBox3_DropButtonClick()
For i = 2 To Sheets("sipariş girişi").Cells(65536, 2).End(xlUp).Row
If WorksheetFunction.CountIf(Sheets("sipariş girişi").Range("D3:D" & i), Sheets("sipariş girişi").Cells(i, 4)) = 1 Then
ComboBox3.AddItem Sheets("sipariş girişi").Cells(i, 4)
End If
Next i
End Sub

Merhaba

Yukarıdaki kod ile Combobox içine sutundaki verileri tek e indirerek alıyorum.
kodlar DropButtonClick olayına yazıldığından comboda her seçim yaptığımda combobox içine aynı verileri tekrar yüklüyor.

her DropButtonClick olayı gerçekleştiğinde önce combobox içeriğini temizleyip sonra yükleme yapsın. Bu konuda yardımlarınızı bekliyorum.
 
İlk satır olarak combobox1.clear komutunu ekleyin.
 
DropButtonClick olayı mecburi değil ise, kodlarınızı Userformunuzun Initialize olayına yazarak deneyiniz.
 
DropButtonClick olayı mecburi değil ise, kodlarınızı Userformunuzun Initialize olayına yazarak deneyiniz.

Sayın skorpiyon.

bu kodlar initializede idi fakat çok sayıda combo olduğu için (yaklaşık 25 adet) userform açılışı çok uzun sürüyor bu kodları ihtiyaç olduğunda çalıştırmak amacıyla böyle bir yöntem denedim.

bu kodları bir buton altına yazdım yine 25 comboda yükleme uzun sürüyor.
sadece ihtiyaç durumunda bu kodları bireysel çalıştırmak daha hızlı oluyor.

DropButtonClick olayı şart değil ama chance, click, vs. olabilir ama nasıl?

veya combolar döngüye alınarak yapılabilirmi? yapılırsa hız daha verimli olurmu?
 
Merhaba,

Yavaş gelmesindeki neden, benzersiz veri almada kullandığınız yöntemden dolayıdır.

Aşağıdaki gibi deneyip sonuçları gözlemleyiniz.

Kod:
Private Sub UserForm_Initialize()
 
    Dim i As Long, a, deg
 
    With CreateObject("Scripting.Dictionary")
        For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
            deg = Cells(i, "B")
            If Not .exists(deg) Then .Add deg, Nothing
        Next i
    a = .keys
    End With
 
    With Me.ComboBox1
        .Clear
        .List = a
    End With
 
End Sub
.
 
Merhaba,

Yavaş gelmesindeki neden, benzersiz veri almada kullandığınız yöntemden dolayıdır.

Aşağıdaki gibi deneyip sonuçları gözlemleyiniz.

Kod:
Private Sub UserForm_Initialize()
 
    Dim i As Long, a, deg
 
    With CreateObject("Scripting.Dictionary")
        For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
            deg = Cells(i, "B")
            If Not .exists(deg) Then .Add deg, Nothing
        Next i
    a = .keys
    End With
 
    With Me.ComboBox1
        .Clear
        .List = a
    End With
 
End Sub
.



Ömer bey Bu şekilde çok daha hızlı çalışıyor Teşekkürler.

Bu kodları aktif sayfa değilde "sipariş girişi" sayfasına sabitlememiz lazım.
 
Ömer bey Bu şekilde çok daha hızlı çalışıyor Teşekkürler.

Bu kodları aktif sayfa değilde "sipariş girişi" sayfasına sabitlememiz lazım.

Bu şekilde deneyin.

Kod:
Private Sub UserForm_Initialize()
 
    Dim i As Long, a, deg, Ss As Worksheet
    
    Set Ss = Sheets("sipariş girişi")
 
    With CreateObject("Scripting.Dictionary")
        For i = 4 To Ss.Cells(Rows.Count, "B").End(xlUp).Row
            deg = Ss.Cells(i, "B")
            If Not .exists(deg) Then .Add deg, Nothing
        Next i
    a = .keys
    End With
 
    With Me.ComboBox1
        .Clear
        .List = a
    End With
 
End Sub
.
 
Sayın Ömer bey Çok teşekkür ederim
 
Geri
Üst