Birbirine Bağlı ListBox'lar

Katılım
12 Kasım 2014
Mesajlar
255
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
15-05-2023
Merhaba,

UserForm'da iki listbox var,
ListBox1 için "s5.Range("L2:N" & Cells(Rows.Count, "L").End(3).Row).Value" hücre aralığında bulunan "L"sütünundaki benzersiz değerleri getirdim.
ListBox2 için ise listbox1'e gelen verilere tıkladığımda "K" sütununda karşılık gelen verileri benzersiz olarak getirmek istiyorum.
Aşağıdaki gibi kod yazdım fakat çalışmıyor.
yardımcı olursanız memnun olurum.

not: ListBox1 multiselect özelliği açıktır.

Kod:
Private Sub ListBox1_Click()
Application.ScreenUpdating = False
Dim s1 As Worksheet
Dim s2 As Worksheet
Dim s3 As Worksheet
Dim s4 As Worksheet
Dim s5 As Worksheet
Set s1 = Sheets("Veri")
Set s2 = Sheets("list")
Set s3 = Sheets("Veri1")
Set s4 = Sheets("Veri2")
Set s5 = Sheets("Filtre")
Set dc1 = CreateObject("scripting.dictionary")
UserForm2.ListBox2.Clear
a = s5.Range("L2:N" & Cells(Rows.Count, "L").End(3).Row).Value

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
        For k = 1 To UBound(a)
            If ListBox1.List(i) = a(k, 1) Then
                krt = a(k, 2)
                If Not dc1.exists(krt) Then
                dc1(krt) = a(k, 2)
                UserForm2.ListBox2.AddItem a(k, 2)
                End If
            End If
        Next k
    End If
Next i

End Sub
 
Katılım
12 Kasım 2014
Mesajlar
255
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
15-05-2023
merhaba,

daha iyi anlaşılması açısından örnek dosya ekledim.

teşekkürler.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları dener misiniz?

PHP:
Private Sub ListBox1_Change()
Application.ScreenUpdating = True
Dim s5 As Worksheet
Set s5 = Sheets("Sayfa1")
UserForm1.ListBox2.Clear
Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
        sorgu = "select distinct [URUNGRUBU] from[Sayfa1$] where [URUNKATEGORISI]='" & ListBox1.List(i) & "' "
        Set rs = con.Execute(sorgu)
        While Not rs.EOF
            ListBox2.AddItem rs("URUNGRUBU").Value
            rs.movenext
        Wend
    End If
Next i

End Sub

Private Sub UserForm_Initialize()
Application.ScreenUpdating = True
Dim s5 As Worksheet
Set s5 = Sheets("Sayfa1")
UserForm1.ListBox1.Clear
Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""
sorgu = "select distinct [URUNKATEGORISI] from[Sayfa1$]"
Set rs = con.Execute(sorgu)
ListBox1.Column = rs.getrows
End Sub
 

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,656
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Merhaba,
Yusuf Hocamın kodları tam istediğiniz gibi.
Bende biraz uğraşmıştım, boşa gitmesin ve farklı bir örnek olması açısından ekledim.
Selametle
 

Ekli dosyalar

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,656
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
merhaba,

daha iyi anlaşılması açısından örnek dosya ekledim.

teşekkürler
Merhaba,
Dosyanız anlaşılmasına anlaşıldı da;
Özellikle Yusuf hocamın kodları işinizi gördümü acaba ?
Nezaketen bir geri dönüş gerekmiyor mu ?
 

yasarcan

Altın Üye
Katılım
30 Nisan 2016
Mesajlar
100
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
25-05-2026
Merhaba,
Yusuf Hocamın kodları tam istediğiniz gibi.
Bende biraz uğraşmıştım, boşa gitmesin ve farklı bir örnek olması açısından ekledim.
Selametle
Selamlar
Bu uygulamada ListBox3 Multiselect olduğunu düşünün işaretli olduğunda sayfa 2 de d kolonunda (listboxa çektivi veri sırasıyla aynı satıra) "x" yazsın. işaret kaldırıldığında "" olsun. kaydedip çıkıldığında tekrar ListBox1-2-3 lere girildiğinde seçenekler önceden işaretliyse göstersin.
yapabilir miyiz?
not: başka bir arkadaşın uygulamsında yaptım ancak Yusuf hocamın çözdüğü örneğe aktaramadım.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Konular özü itibariyle benzer gibi gözükse de sonuçta hepsi Excel ve hepsi birbirine benziyor.

Sorunuzu yeni başlık altında sorarsanız, sorarken de kullandığınız Yusuf beyşn kodlarıyla yaptığınız haliyle örnek dosyanızı da eklerseniz hem daha çabuk cevap alır, hem de forum başka kullanıcıların aradığını bulabilmesi açısından daha verimli olur.
 

yasarcan

Altın Üye
Katılım
30 Nisan 2016
Mesajlar
100
Excel Vers. ve Dili
2007
Altın Üyelik Bitiş Tarihi
25-05-2026
Tamamdır o zman detaylı anlatayım yeni sayfada.
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
@YUSUF44 Bey Merhaba

Sizin kodlarınızı kullanarak ekteki dosyayı yaptım
Karşılaştırma bölümünde aldığım veriler ilk satırı boş alıyor ve seçilebilir olarak getiriyor,
Sektörde olduğu gibi ilk satırdan itibaren yazdıramadım, kodun neresinde düzeltme yapmam gerekiyor

252667

Kod:
Private Sub UserForm_Initialize()
Application.ScreenUpdating = True
Dim s5 As Worksheet
Set s5 = Sheets("Hisseler")
ListBox1.Clear
Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""
sorgu = "select distinct [Sektör] from[Hisseler$]"
Set rs = con.Execute(sorgu)
ListBox1.Column = rs.getrows
' Sektör bilgilerini ListBox1' e getirmek için

Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""
sorgu = "select distinct [Marj] from[Hisseler$]"
Set rs = con.Execute(sorgu)
ListBox5.Column = rs.getrows
' Marj bilgilerini ListBox5' e getirmek için

End Sub
 
Üst