• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Bağlantılı combobox için yardım istiyorum.

  • Konbuyu başlatan Konbuyu başlatan s.savas
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Merhaba arkadaşlar.
Aşağıdaki kodlar ile ComboBox5'e sayfadaki N sütunundan veri alıyorum, change yordamı ile de listwiev'da filtre ediyorum.
Ancak N sütunu ile ilişkili olarak O ve P sütunlarında da veriler mevcut, bunları da combobox6 ve 7 ye de almak istiyorum.

İl, ilçe, belde misali.
Yardımcı olacak dostlara teşekkür ederim.

Kod:
Private Sub UserForm_Activate()
Set k = ActiveSheet
For a = 2 To k.[a65536].End(3).Row
If WorksheetFunction.CountIf(k.Range("n1:n" & a), k.Cells(a, "n")) = 1 Then
ComboBox5.AddItem k.Cells(a, "n").Value
End If
Next
End Sub


Kod:
Private Sub ComboBox5_Change()
Set sh = ActiveSheet
son = sh.Cells(65536, 2).End(xlUp).Row

ListView1.ListItems.Clear
ListView1.View = lvwReport

With ListView1
j = 1
For j = 2 To son
      If CStr(Cells(j, 14)) = CStr(ComboBox5) Or ComboBox5 = "" Or InStr(1, Cells(j, 14), ComboBox5, vbTextCompare) > 0 Then
       i = ListView1.ListItems.Count + 1
      .ListItems.Add , , CStr(j)
      .ListItems(i).SubItems(1) = Cells(j, 1) 'T.C. Kimlik No
      .ListItems(i).SubItems(2) = Cells(j, 2) 'Adı
      .ListItems(i).SubItems(3) = Cells(j, 3) 'Soyadı
      .ListItems(i).SubItems(4) = Cells(j, 4) 'Cinsiyeti
      .ListItems(i).SubItems(5) = Cells(j, 5) 'D.Tarihi
      .ListItems(i).SubItems(6) = Cells(j, 7) 'Ünvanı
      .ListItems(i).SubItems(7) = Cells(j, 8) 'Branşı
      .ListItems(i).SubItems(8) = Cells(j, 9) 'Aile Hekimliği
      .ListItems(i).SubItems(9) = Cells(j, 10) 'İlçesi
      .ListItems(i).SubItems(10) = Cells(j, 11) 'Kurum Sicili
      .ListItems(i).SubItems(11) = Cells(j, 12) 'Kadro
      .ListItems(i).SubItems(12) = Cells(j, 13) 'Sınıf
      .ListItems(i).SubItems(13) = Cells(j, 14) 'Kurumu
      .ListItems(i).SubItems(14) = Cells(j, 15) 'Birimi
      .ListItems(i).SubItems(15) = Cells(j, 16) 'Yan Birimi
      .ListItems(i).SubItems(16) = Cells(j, 17) 'Durumu
      .ListItems(i).SubItems(17) = Cells(j, 18) 'Söz. Baş. Tarihi
      .ListItems(i).SubItems(18) = Cells(j, 19) 'Söz. Bit. Tarihi
      .ListItems(i).SubItems(19) = Cells(j, 20) 'Kadro Görev Yeri
      .ListItems(i).SubItems(20) = Cells(j, 21) 'Açıklama
      .ListItems(i).SubItems(21) = Format(Cells(j, 22).Value, "0### ### ## ##") 'GSM
      .ListItems(i).SubItems(22) = Cells(j, 23) 'e-posta
     
  End If
  If j Mod 1 = 0 Then
End If

Next

End With
ListView1.FullRowSelect = True
ListView1.Gridlines = True
End Sub
 
Son düzenleme:
Kırmızılı yeri Private Sub ComboBox6_Change() kodunun altına End Sub dan önce ekleyin . Diğerinide olduğu gibi ekleyip denetin.

Kod:
[COLOR="Red"]For a = 2 To k.[a65536].End(3).Row
If k.Cells(a, "n") = ComboBox5 Then
ComboBox6.AddItem k.Cells(a, "O").Value
End If
Next[/COLOR]

Private Sub ComboBox6_Change()
For a = 2 To k.[a65536].End(3).Row
If k.Cells(a, "O") = ComboBox6 Then
ComboBox7.AddItem k.Cells(a, "P").Value
End If
Next
End Sub
 
Kırmızılı yeri Private Sub ComboBox6_Change() kodunun altına End Sub dan önce ekleyin . Diğerinide olduğu gibi ekleyip denetin.

Kod:
[COLOR="Red"]For a = 2 To k.[a65536].End(3).Row
If k.Cells(a, "n") = ComboBox5 Then
ComboBox6.AddItem k.Cells(a, "O").Value
End If
Next[/COLOR]

Private Sub ComboBox6_Change()
For a = 2 To k.[a65536].End(3).Row
If k.Cells(a, "O") = ComboBox6 Then
ComboBox7.AddItem k.Cells(a, "P").Value
End If
Next
End Sub

Hocam ilginize teşekkürler.
Sanırım biryerde bişeyleri yanlış yapıyorum.
Combo6 ve 7 ye veri gelmedi.
Örnek dosyam burada
 

Hocam teşekkür ederim ilginize.
Arşivimdeki uygulamalardan revize ederek farklı bir yöntemle kısmen bende sonuca ulaştım.
Yalnız; benim revize ettiğim kodda satırlarda boşluk varsa ComboBox6 ve 7 de boşluklar oluyor.

Sizin kodda da ComboBox6 ve 7 de kayıtlar mükerrer listeleniyor.
Düzeltilebilir diye umuyorum.

Alternatif çözüm.
 
Tekrar teşekkürler.
Satırlardaki boşluklar ve mükerrer kayıtlar giderilmiş.
Farklı bir sorun var.
Kişinin adı veya soyadı DOĞRU, YANLIŞ ise; listwiev'da ad ve soyadlar true, false olarak görüntüleniyor.
İkinci husus; ComboBox5'in change olayında seçilen kurumun personel sayısı Label49 da gösterilsin.
Dosya
OVaGkn.png
 
Akşam bakabilirim şu an müsait değilim.
 
Farklı bir sorun var.
Kişinin adı veya soyadı DOĞRU, YANLIŞ ise; listwiev'da ad ve soyadlar true, false olarak görüntüleniyor.
İkinci husus; ComboBox5'in change olayında seçilen kurumun personel sayısı Label49 da gösterilsin.

Kişi Ad ve Soyadlarını formul ile alıyorsanız yada kopyala yapıştır ile alıyorsanız sorun ondan. Kod hücrede neyi görürse onu alıyor. Hücrede Doğru yazıyorsa True olarak Yanlış ise False olafak yazıyor. Veri formul ile alınıyorsa formul'de hata kontrolu yapın hücreyi boş göstersin. Label49 kriter nedir. ComboBox taki liste sayısımı yoksa seçilene göre kişi sayısını kişileri hangi sütuna göre tesbit edilecek.
 
Kişi Ad ve Soyadlarını formul ile alıyorsanız yada kopyala yapıştır ile alıyorsanız sorun ondan. Kod hücrede neyi görürse onu alıyor. Hücrede Doğru yazıyorsa True olarak Yanlış ise False olafak yazıyor. Veri formul ile alınıyorsa formul'de hata kontrolu yapın hücreyi boş göstersin. Label49 kriter nedir. ComboBox taki liste sayısımı yoksa seçilene göre kişi sayısını kişileri hangi sütuna göre tesbit edilecek.
Hocam; Kişinin adı soyadı manuel olarak giriliyor, her hangi bir formül veya benzeri bir fonksiyon yoktur. Bu durumu listview bulunan bir çok örnekte denedim. Hepsinde hücrede DOĞRU/YANLIŞ şeklinde veri varsa listview da true/false şeklinde görüntülendi. Win7 64 bir ve ofis 2007 kullanıyorum. Belki sürümden kaynaklanır diye düşünüyorum.
Örnek çalışmayı yukarıda eklemiştim, sanırım gözden kaçtı.
Combobox5 filtrelenen verinin N sütunundaki tekrarlanan toplam sayısı label49 da gösterilsin.
 
Combobox5 kodlarının en altına End sub dan önce ekleyip deneyiniz.

Kod:
Label49.Caption = ComboBox5.ListCount

yukardaki olmadı ise bunu deneyin.
Kod:
Label49.Caption = WorksheetFunction.CountIf(k.Range("N2:N" & son), ComboBox5)
 
Combobox5 kodlarının en altına End sub dan önce ekleyip deneyiniz.

Kod:
Label49.Caption = ComboBox5.ListCount

yukardaki olmadı ise bunu deneyin.
Kod:
Label49.Caption = WorksheetFunction.CountIf(k.Range("N2:N" & son), ComboBox5)
Teşekkürler...
 
Rica ederim. Kolay gelsin.
 
Geri
Üst