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:
Şimdiden teşekkür ederim.
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.