5 Adet bağlı combobox oluşturmak istiyorum. (sütunda metin veya sayı farketmeksizin işlem gerçekleşsin istiyorum)

Katılım
7 Ekim 2021
Mesajlar
66
Excel Vers. ve Dili
2016 Türkçe
5 sütundan oluşan bir excel dosyam var ve Vba ile bunları 5 ayrı comboboxa bağlı olarak almak istiyorum. Örneğin ilk sütundaki değerlerin tamamini tekrarsiz olarak combo1 ile almak ve devaminda seçtiğime göre filtreleyerek ikinci sutundakileri tekrarsiz ve böyle son comboya gitsin istiyorum. Bunu yapmaya calistim fakat sütundaki sayisal değerlerde işlemi gerçekleştiremiyorum. Yardımcı olabilirseniz çok sevinirim. Şimdiden teşekkürler.

1. Öncelikle comboboxlardaki veriler mükerrer olsun istemiyorum. Yani bir sütunda birden fazla aynı metin veya rakam varsa comboboxta onu tek olarak göstersin
2.
Combo5; combo1, 2, 3 ve 4'e bağlı olarak (kesişim kümesi mantığıyla) değişecek
Combo4; combo1, 2 ve 3'e bağlı olarak (kesişim kümesi mantığıyla) değişecek
Combo3; combo1 ve 2'ye bağlı olarak (kesişim kümesi mantığıyla) değişecek
Combo2; combo1'e bağlı olarak (kesişim kümesi mantığıyla) değişecek
3. Mümkünse comboboxlar içindeki değerler alfabetik sıraya göre gelsin.

Kod bloğum:

Private Sub ComboBox1_Change()
On Error Resume Next
Me.ComboBox2.Clear
Me.ComboBox3.Clear
Me.ComboBox4.Clear
Me.ComboBox5.Clear

Dim x, y As Integer
y = Sheets("sayfa1").Range("a10000").End(xlUp).Row

For x = 2 To y
If Sheets("sayfa1").Range("A" & x).Value = ComboBox1.List(ComboBox1.ListIndex, 0) Then
ComboBox2.AddItem (Sheets("Sayfa1").Range("B" & x).Value)
End If
Next

End Sub

Private Sub ComboBox2_Change()
Me.ComboBox3.Clear
Me.ComboBox4.Clear
Me.ComboBox5.Clear

Dim x, y As Integer
y = Sheets("sayfa1").Range("a10000").End(xlUp).Row

For x = 2 To y
If Sheets("sayfa1").Range("A" & x).Value = ComboBox1.List(ComboBox1.ListIndex, 0) And Sheets("sayfa1").Range("B" & x).Value = ComboBox2.List(ComboBox2.ListIndex, 0) Then
ComboBox3.AddItem (Sheets("Sayfa1").Range("C" & x).Value)
End If
Next

End Sub

Private Sub ComboBox3_Change()
Me.ComboBox4.Clear
Me.ComboBox5.Clear

Dim x, y As Integer
y = Sheets("sayfa1").Range("a10000").End(xlUp).Row

For x = 2 To y
If Sheets("sayfa1").Range("A" & x).Value = ComboBox1.List(ComboBox1.ListIndex, 0) And Sheets("sayfa1").Range("B" & x).Value = ComboBox2.List(ComboBox2.ListIndex, 0) And Sheets("sayfa1").Range("C" & x).Value = ComboBox3.List(ComboBox3.ListIndex, 0) Then
ComboBox4.AddItem (Sheets("Sayfa1").Range("D" & x).Value)
End If
Next

End Sub

Private Sub ComboBox4_Change()
Me.ComboBox5.Clear

Dim x, y As Integer
y = Sheets("sayfa1").Range("a10000").End(xlUp).Row

For x = 2 To y
If Sheets("sayfa1").Range("A" & x).Value = ComboBox1.List(ComboBox1.ListIndex, 0) And Sheets("sayfa1").Range("B" & x).Value = ComboBox2.List(ComboBox2.ListIndex, 0) And Sheets("sayfa1").Range("C" & x).Value = ComboBox3.List(ComboBox3.ListIndex, 0) And Sheets("sayfa1").Range("D" & x).Value = ComboBox4.List(ComboBox4.ListIndex, 0) Then
ComboBox5.AddItem (Sheets("Sayfa1").Range("E" & x).Value)
End If
Next

End Sub


Private Sub UserForm_Initialize()
Me.ComboBox2.Clear
Me.ComboBox3.Clear
Me.ComboBox4.Clear
Me.ComboBox5.Clear

Dim x As Integer
x = Sheets("sayfa1").Range("a10000").End(xlUp).Row

ComboBox1.ColumnCount = 1
ComboBox1.ColumnWidths = "50"
ComboBox1.RowSource = "Sayfa1!A2:A" & x

End Sub

Verilerim:

ADI

SOYADI

MİKTAR

TELEFON

ADRESİ

GÖKHAN

ÖZEN

10

537

ANKARA

AHMET

ÇAKIR

20

505

İSTANBUL

MEHMET

ÇAKMAK

30

983

İZMİR

AKIN

TURAN

20

658

KONYA

OSMAN

DÖNGEL

50

159

ANKARA

GÖKHAN

KAÇAK

20

254

İSTANBUL

ALİ

AKMAN

70

983

BURSA

SİNAN

DERMAN

80

321

KOCAELİ

SİNAN

ÖZEN

90

147

KASTAMONU

VELİ

GÖKMEN

100

789

ANKARA

ALİ

TARIK

70

147

VAN

GÖKHAN

ÖZEN

10

537

ANKARA



Şimdiden teşekkür ederim.
 

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
871
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
Dosyanız ekte.Harici link;
Kod:
https://s2.dosya.tc/server19/bjjr16/5cb.zip.html
 

Ekli dosyalar

  • 21.5 KB Görüntüleme: 20
Katılım
7 Ekim 2021
Mesajlar
66
Excel Vers. ve Dili
2016 Türkçe
Teşekkür ederim. Bu kodu başka bir sayfaya uygulamak istiyorum ve sayfada bazı sütunlarda boşluklar ve "-" de mevcut. Aynı zamanda B sütunundan ve 7.satırdan başlıyor. Bu kod da tam olarak nerelerde değişiklik yapmam gerekiyor acaba. Bilgi verirseniz çok memnun olurum.

İyi günler dilerim.
 
Katılım
7 Ekim 2021
Mesajlar
66
Excel Vers. ve Dili
2016 Türkçe
Gerekli düzeltmeyi yaptım fakat Run Time Error 91: Object variable or with block variable not set hatası veriyor combobox1'deki For each elem in dic.keys satırını göstererek.
 

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
871
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
Hata veren dosyayı ya da kodda nasıl bir değişklik yaptığınızı bilemiyorum. Dosyanızı o şekli ile yüklerseniz bakılabilir.
 
Katılım
7 Ekim 2021
Mesajlar
66
Excel Vers. ve Dili
2016 Türkçe
Hocam kodunuz çok işime yaradı, çok teşekkür ederim. Sadece tek bir problem var, arkada farkli bir Excel dosyasi yada bu dosyaya ait farkli bir calisma sayfasi açık olunca onda var olan degerleri aliyor comboboxlar.
Bu konuyla ilgili yardımcı olabilir misiniz acaba?
 

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
871
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
Hocam kodunuz çok işime yaradı, çok teşekkür ederim. Sadece tek bir problem var, arkada farkli bir Excel dosyasi yada bu dosyaya ait farkli bir calisma sayfasi açık olunca onda var olan degerleri aliyor comboboxlar.
Bu konuyla ilgili yardımcı olabilir misiniz acaba?
Private Sub UserForm_Initialize()
olaynıın hemen altına
Kod:
Dim Sayfa As Worksheet
Sheets("Veri").Select
Set Sayfa = Sheets("Veri")
kodunu ekleyiniz
 
Üst