ListBox ile arama yaptırma

Katılım
17 Haziran 2006
Mesajlar
245
Excel Vers. ve Dili
Office 2010
English
Selam arkadaşlar..
Takıldığım bir hususta yardımlarınızı rica edeceğim.
Userform üzerinde 2 Adet ListBox var.
ListBox1 e A Sütundaki kayıtlı verileri alıyorum.
ListBox1 e tıkladığımda, ListBox2 de ListBox1 deki değerin yan sütunndaki değerler listeleniyor. Örn:

A Sütunu B Sütunu
Ahmet 2000/01
Ahmet 2000/02
Ahmet 2000/03
Mehmet 2000/01
Ahmet 2000/04
Mehmet 2000/02

ListBox1 de;
Ahmet
Mehmet

listelendi.

ListBox1 e Mehmet seçilince,
LİstBox2 de;
2000/01
2000/02

Listelendi.

ListBox2 deki 2000/01 değerini tıkladığımda Mehmet in karşısında olan 2000/01'in olduğu hücrenin seçilmesini istiyorum.
Yardımlar için teşekkürler...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu tip durumlarda işlemi kolaylaştırmak için kendi uyguladığım yöntemi size önereyim.

Listbox2 ye bir kolon daha ilave edin ve bu kolonun görünmeyip gizli kalması için genişliğini sıfır yapın. Bu kolonada aldığınız verinin satır nosunu kaydedin. Veriyi sayfa üzerinde seçerkende gizli kolondan okuyacağınız satır nosunu kullanırsınız. Aksi takdirde döngü kurmanız gerekirki buda veri sayısı çok fazla olduğunda ciddi yavaşlama demektir.
 
Katılım
17 Haziran 2006
Mesajlar
245
Excel Vers. ve Dili
Office 2010
English
Levent Bey, fikriniz için teşekkürler...
Fakat dediğinizi pek anlayamadım. :(
ListBox1 in click olayında aşağıdaki kodlar mevcuttur..
İlgilenirseniz sevinirim.

Kod:
Sayfa4.Range("A:A").Find(ListBox2.Text).Select
ListBox2.ColumnCount = 6
ListBox2.ColumnWidths = "50;30;50;20"
ListBox2.Clear
say = Sayfa4.Range("B65536").End(xlUp).Row
i = 0
For Each rng In Sayfa4.Range("B2:B" & say)
If rng.Offset(0, -1) = ListBox1.Value Then
    ListBox2.AddItem
    With ListBox2
      .List(i, 0) = rng
      .List(i, 1) = Format(rng.Offset(0, 1), "#,##0")
      .List(i, 2) = Format(rng.Offset(0, 2), "#,##0.00")
      .List(i, 3) = rng.Offset(0, 3)
      .List(i, 4) = rng.Offset(0, 4)
    End With
    i = i + 1
End If
Next rng
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bahadır bey, siz en iyisi verilerin olduğu örnek bir dosya ekleyin.

Levent bey daha rahat yardımcı olur size ...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki mavi renkli satırlar ilave edilmiştir.

Kod:
[LEFT]Sayfa4.Range("A:A").Find(ListBox2.Text).Select
ListBox2.ColumnCount = 6
[B][COLOR=blue]ListBox2.ColumnWidths = "50;30;50;20;0;0"[/COLOR][/B]
ListBox2.Clear
say = Sayfa4.Range("B65536").End(xlUp).Row
i = 0
For Each rng In Sayfa4.Range("B2:B" & say)
If rng.Offset(0, -1) = ListBox1.Value Then
  ListBox2.AddItem
  With ListBox2
    .List(i, 0) = rng
    .List(i, 1) = Format(rng.Offset(0, 1), "#,##0")
    .List(i, 2) = Format(rng.Offset(0, 2), "#,##0.00")
    .List(i, 3) = rng.Offset(0, 3)
    .List(i, 4) = rng.Offset(0, 4)
    [COLOR=blue][B].list(i,5)=rng.row[/B][/COLOR]
  End With
  i = i + 1
End If
Next rng[/LEFT]
Daha sonrada listbox2 ye tıklayınca ilgili satırın seçilmesi içinde aşağıdaki kodu listbox2 ye kopyalayın.

Kod:
Private Sub ListBox2_Click()
sayfa4.rows(listbox2.column(5)).select
End Sub
Not:Bu arada verdiğiniz kodda çelişkiler var, listbox2 nin kolon sayısı altı, fakat genişlik sadece dördü için belirlenmiş, buna karşın veride beş kolona yüklenmiş.
 
Katılım
17 Haziran 2006
Mesajlar
245
Excel Vers. ve Dili
Office 2010
English
Teşekkürler Levent Bey..
6 yanlışlıkla kalmış bir sayı..
Asıl alması gereken 5 kolon.. Son kolon için de genişlik belirtmeye gerek duymadım.
Size de teşekkürler Haluk Bey.. Sorun çözüldü..
Muhabbetle...
 

Korhan Ayhan

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

Sn. levent bey kodlarınız üzerinde gerekli düzenlemeyi yapmış. Bende örnek bir dosya hazırlamıştım. Belki fikir vermek açısından faydası olabilir. İncelermisiniz.
 
Üst