CreateObject("Scripting.Dictionary")

Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Kod:
Dim dizi
Dim i As Long
Dim dic As Object 'Scripting.Dictionary

dizi = ml.Range("D2:D65536")
Set dic = CreateObject("scripting.dictionary")
With dic
    For i = 2 To UBound(dizi, 1)
        If Not .exists(dizi(i, 1)) Then
            .Add CStr(dizi(i)), ""
        End If
    Next i
    If .Count Then
        stok.KA.List = Application.Transpose(.keys)
    
    End If
End With
Yukarıdaki kodlarda nerede hata yapıyorum ki; "D" sütunundaki verilerden 1er tane comboboxa cekemiyorum?

"Out of range" hatası veriyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,045
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz...

Kod:
Private Sub UserForm_Initialize()
    Dim Dizi
    Dim i As Long
    Dim dic As Object 'Scripting.Dictionary
    Set ml = Sheets("Sayfa1")
    Dizi = ml.Range("D2:D" & ml.Rows.Count)
    Set dic = CreateObject("scripting.dictionary")
    With dic
        For i = 1 To UBound(Dizi, 1)
            If Not .Exists(Dizi(i, 1)) Then
                .Add CStr(Dizi(i, 1)), ""
            End If
        Next i
        If .Count Then
            Stok.KA.List = .Keys
        End If
    End With
End Sub
 
Katılım
6 Temmuz 2008
Mesajlar
1,875
Excel Vers. ve Dili
OFFİCE 2010- TÜRKÇE
Altın Üyelik Bitiş Tarihi
22-12-2019
Korhan bey çok teşekkür ederim.
Bununla ilgili çok araştırma yaptım ama tam manada kodların amaçlarını ve neyi ne sebeple yaptığını anlatan bir konu bulamadım.

Kod:
http://www.excel.web.tr/f48/scripting-dictionary-nesnesi-hakkynda-t146392/sayfa2.html
Anladığım kadarıyla Bazı yerlerde kullandığımız döngülerin yerine bu işlem fevkalade hızlı bir şekilde veri almaya yarıyor.

Kapalı dosyadan ver alma
Benzersizleri sayma & bulma
Kayıt arama
Dizi oluşturma.

Korhan bey sizden ricam bu konu üzerinde detaylı bir paylaşımda bulunabilirmisiniz.
Yani bir nebze de olsa balık tutmayı öğrenmek istiyorum.
 
Üst