ListViewden ComboBoxta yazılı veriyi süzmek.

Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Değerli Dostlar Selamlar,
Ekteki dosyada Listview içerisine veri almak istiyorum. Şöyle ki:
ListView boş olarak açılıp,
ComboBox1 içerisinden ilçe seçilecek, o ilçeye ait okullar (okullar sayfası E sütununa göre) listelensin. Okul türü seçilince de (okullar sayfası F sütununa göre) yeniden listelensin. Verinin üzerine çift tıklayınca okul ismi TextBox8 e yazılsın. TextBox8 değişince kayıtlar ismli sayfadaki veriler TextBox8 deki okula ait veriler Listview2 de listelensin.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Userform1 modulüne aşağıdaki kodlar ilave edildi.

Kod:
Private Sub ComboBox1_Change()
    Dim i%
    Dim col As New Collection
    
    ComboBox2.Clear
    
    On Error Resume Next
    
    With Sheets("okullar")
        For i = 2 To .Cells(65536, 1).End(xlUp).Row
            If .Cells(i, "E") = ComboBox1 Then
                col.Add CStr(.Cells(i, "F")), CStr(.Cells(i, "F"))
                If Err > 0 Then
                    Err = 0
                Else
                    ComboBox2.AddItem .Cells(i, "F")
                End If
            End If
        Next i
    End With
    
    On Error GoTo 0
    
    If ComboBox2.ListCount >= 0 Then: ComboBox2.ListIndex = 0
    
    Call Lvw1RevizeEt
End Sub
'---------------------------------------------
Private Sub ComboBox2_Change()
    Call Lvw1RevizeEt
End Sub
'---------------------------------------------
Private Sub Lvw1RevizeEt()
    Dim sh As Worksheet
    Dim i%, j%
    
    Set sh = Sheets("okullar")
    
    With ListView1
        
        .ListItems.Clear
        
        For i = 2 To sh.Cells(65536, 1).End(xlUp).Row
            If sh.Cells(i, "E") = ComboBox1 And _
                sh.Cells(i, "F") = ComboBox2 Then
                
                .ListItems.Add , , Cells(i, 1)
                
                For j = 1 To 5
                    .ListItems(.ListItems.Count).SubItems(j) = _
                                            sh.Cells(i, j + 1)
                Next j
            End If
        Next i
    
    End With
    
    Set sh = Nothing
End Sub

Mevcut Initialize kodlarınızdan, Listview1'e veri yükleyen satırlar da silindi.

Ancak, sonuç olarak istediğiniz; Listview2'ye seçilen okulun bilgilerinin gelmesi, benim görüşüme göre anlamsız ... Tek bir kaydın, listelenmesi gibi bir durum sözkonusu ki, bu durumda lvw2'nin ne amaçla kullanılacağını anlamadım.
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Sayın Ferhat Hocam,
Öncelikle cevabınız için çok teşekkür ederim. Dosyayı son şekliyle yeniden ekledim. Sayın Hocam, Listview2 ile ilgili benim düşüncem şu: Her okul için 30-60 öğretmen kaydı olduğunu düşünelim ki oluyorda. Okulu seçtiğimiz zaman okulda görev yapan öğretmen kayıtları geldiğinde listviewden çift tıklayıp kayıt bölümüne çağırmak ve gerekli değişiklik ve düzeltmeleri yapabilmek için gerekli olduğunu düşündüm. Çünkü boş pasoları okuldan yetkili bir kişiye verirken, listeleri alıp kaydı girilecek, okuldan kartlar geldiğinde hangi no'lu bandrol yapıştırılmışsa tekrar çağrılarak işlenmiş olacak.
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Siz; Lvw1'deki herhangi bir okula çift tıkladığınızda; Lvw2'ye "Kayıtlar" adlı sayfadan ilgili okula kayıtlı olan öğretmenlerin listesinin mi gelmesini istiyorsunuz ?
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Sayın Ferhat Hocam doğrudur. Ancak şu ana kadar yapılan işlemler de doğrudur. Şimdiki şekle eklenecek.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
O halde, Lvw1'in DblClick olayını şu şekilde kodlayabiliriz

NOT : Userform'un Activate olayında, Lvw2'ye Adı ve Soyadı olarak iki sütun başlığı ilave etmişsiniz... Ama "kayıtlar" adlı sheet'de bu alanlar birleşik. Onun için, Activate kodundaki "Soyadı" kolon başlığı satırını da siliniz.

Eğer, "kayıtlar" sayfasına birkaç örnek ilave etseydiniz, daha sağlıklı olacaktı ...

Kod:
Private Sub ListView1_DblClick()
    Dim wks As Worksheet
    Dim i%
    Dim x
    If ListView1.ListItems.Count > 0 Then
        Set wks = Sheets("kayıtlar")
        x = ListView1.SelectedItem.Index
        TextBox8.Text = ListView1.ListItems(x).ListSubItems(1).Text
        ComboBox1.Text = ListView1.ListItems(x).ListSubItems(4).Text
        ComboBox2.Text = ListView1.ListItems(x).ListSubItems(5).Text
        With ListView2
            .ListItems.Clear
            For i = 2 To wks.Cells(65536, 2).End(xlUp).Row
                If wks.Cells(i, "C") = ListView1.SelectedItem.ListSubItems(1) Then
                    .ListItems.Add , , wks.Cells(i, 1)
                    With .ListItems(.ListItems.Count)
                        .SubItems(1) = wks.Cells(i, 2)
                        .SubItems(2) = wks.Cells(i, 4)
                        .SubItems(3) = wks.Cells(i, 5)
                        .SubItems(4) = wks.Cells(i, 6)
                        .SubItems(5) = wks.Cells(i, 7)
                        .SubItems(6) = wks.Cells(i, 8)
                        .SubItems(7) = wks.Cells(i, 9)
                    End With
                End If
            Next i
        End With
        Set wks = Nothing
    End If
End Sub
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Sayın Ferhat Hocam,
Çok çok teşekkür ederim. Elleriniz dert görmesin. Sağolun, Varolun.
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Selamlar,
Sayın Ferhat Hocam, süzme ile ilgili gözden kaçırdığım bir sorun algıladım. Şöyleki: Combobox1 den (mesele Akyurt, yada Altındağ) okul ismi seçtiğimde o ilçeye ait tüm listeyi vermesi gerekir. Eğer gerek görülürde (çok kalabalık bir liste olursa) Combobox2 den süzmek gerekirse Combobox2 süzgeci o zaman çalışmalı. Değilse ilk etapda devreye girmemeli. Mümkün olursa bakmanızı arz ederim.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ekteki örneği inceleyiniz ... Combobox1'in Change olayı, Listview'e yükleme kodları değiştirilmiştir.
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Selamlar,
Teşekkür ederim Ferhat Hocam, işlem istediğim gibi. Sağolun.
 
Üst