• DİKKAT

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

ComboBox ile ListBox Süzme

Katılım
21 Kasım 2006
Mesajlar
23
Excel Vers. ve Dili
10 türkçe
iki adet ComboBox um var. İsime göre araya gelip, İsimi yazarken
ListBox içeriği kendiliğinden değişebilirmi. Aynı şekilde araca göre araya gelip,
araç ismini yazarken listbox içeriği kendiliğinden değişebilirmi.
Yani yazım aşamasındayken listbox içeriğinde arama sonuçları gözükebilirmi.
bu konuyla ilgili excel sayfası üzerine direk süzen uygulamalar buldum. ama
bu konuyla ilgili bir uygulamaya rastlayamadım.

yardımcı olabilecek veya link verebilecek arkadaşlara şimdiden teşekkürler.
dosya ektedir.
 
Ekteki dosyanızı inceleyiniz.

Süzme sonucu görünen bilgiler Sayfa2'ye kopyalanmaktadır.

Listbox'da buradan verileri almaktadır.

Umarım işinize yarar.
 
Son düzenleme:
süper

ripek,
süpersin, tam anlamıyla istediğim buydu. bilgiye ve emeğe saygı.
teşekkürler.
 
Dosya Boyutu

Şuanki kodlar combobox1 ve 2 nin birbiriyle entegre olarak verilerin farklı bir
sayfaya süzülerek işlemin gerçekleştirilmesini sağlıyor. Buraya kadar çok güzel.
Şimdi şöyle bir sıkıntı çıktı. Sadece veri sayfasında 20 sütun ve 100 lerce satırdan oluşan bir dosyanın boyutunun 1MB olduğunu farz edersek, verilerin farklı bir sayfaya süzülüp oradan listbox a çağrılması durumunda dosya boyutu bir anda 3MB çıkabiliyor. Buda hantal bir durum ortaya çıkarıyor.

Şöyle yapılabilirmi : userform da ComboBox2 Yok diyelim. Sadece ComboBox1 var. ComboBox1 deki değere göre verilerin farklı bir sayfaya kopyalanmadan, veri sayfası üzerinde süzülüp verileri direk buradan listBox a çağırmak mümkünmü. tşk.
 
Şöyle yapılabilirmi : userform da ComboBox2 Yok diyelim. Sadece ComboBox1 var. ComboBox1 deki değere göre verilerin farklı bir sayfaya kopyalanmadan, veri sayfası üzerinde süzülüp verileri direk buradan listBox a çağırmak mümkünmü. tşk.

Bunuda denedim.Fakat bu sefer veri sayfasında veriler süzülünce gizli olan satırlarıda Listbox'a alıyor.Bunun çözümünü bulabilirsem çok güzel olacak.
 
Ben biraz farklı yaptım. Bir de aşağıdaki şekilde dener misiniz?

Private Sub ComboBox1_Change()
ListBox1.Clear
say1 = Len(ComboBox1)
say2 = Len(ComboBox2)
For t = 1 To [a65536].End(3).Row

If Left(Cells(t, 2), say1) = Left(ComboBox1, say1) And Left(Cells(t, 3), say2) = Left(ComboBox2, say2) Or Cells(t, 1) = "sno" Then

ListBox1.AddItem
c = c + 1
ListBox1.List(c - 1, 0) = Cells(t, 2)
ListBox1.List(c - 1, 1) = Cells(t, 3)

End If
Next
End Sub

Private Sub ComboBox2_Change()
ComboBox1_Change
End Sub


Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 3
End Sub
 
Üçüncü Aşama: Kayıt silip yeniden ID vermek.

Hamitcanın 6 nolu başlıkta vermiş olduğu kodlar hakkaten TAKDİRE ŞAYAN.
Bu kodlar ikinci aşamanın çözümünü tamamen hallediyor. Hamitcan ve Ripek beylere Teşekkürler. (bu durumda büyük harf küçük harfe karşı duyarlı). ŞİMDİKİ KONU ise, LİSTBOX da süzülmüş olarak gelen verilerden, istediğim birini seçtiğimde, SİL butonuna tıkladığımda, bu satırı veri sayfasından tamamen kaldıracak, kaldırdıktan sonra, sıra numarası bozulmuş oluyor doğal olarak, veri sayfasında kalan verilere tekrar sıra Numarası atayacak. Bu olay, sil butonuyla veya DOUBLE CLİCK olayıyla çözülebilirmi. şimdiden teşekkürler.
 
Kodları yeniden düzenledim. İnceleyin.

Ayrıca, Sayın veyselemre' nin yazdığı kod da gerçekten çok profesyonelce. Onun verdiği cevaplardan herzaman faydalanıyorum. Bu vesile ile ona da teşekkür etmek isterim.


Private Sub ComboBox1_Change()
ListBox1.Clear
say1 = Len(ComboBox1)
say2 = Len(ComboBox2)
For t = 1 To [a65536].End(3).Row

If Left(Cells(t, 2), say1) = Left(ComboBox1, say1) And Left(Cells(t, 3), say2) = Left(ComboBox2, say2) Or Cells(t, 1) = "sno" Then

ListBox1.AddItem
c = c + 1
ListBox1.List(c - 1, 0) = Cells(t, 1) '********* bu komut sıra numarasını göstermesi gerekmiyormu. ama list boxta göstermiyo. DÜZELTTİM
ListBox1.List(c - 1, 1) = Cells(t, 2)
ListBox1.List(c - 1, 2) = Cells(t, 3)
ListBox1.List(c - 1, 3) = Cells(t, 4)
ListBox1.List(c - 1, 4) = Cells(t, 5)
ListBox1.List(c - 1, 5) = Cells(t, 6)

End If
Next
End Sub

Private Sub ComboBox2_Change()
ComboBox1_Change
End Sub


Private Sub CommandButton1_Click()
For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
cevap = MsgBox(ListBox1.List(i, 0) & " nolu kaydı silmek istiyor musunuz?", vbYesNo)
If cevap = vbYes Then Range(Cells(ListBox1.List(i, 0) + 1, 2), Cells(ListBox1.List(i, 0) + 1, 6)).ClearContents
End If
Next
Range(Cells(2, 2), Cells([a65536].End(3).Row, 6)).Sort key1:=Cells(2, 2)
End Sub

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 6
End Sub
 
ListBox İçerik Silme Sonrası ID yenileme Hatası

Veyselemre ve hamitcan üstadlarımıza sonsuz teşekkürler, şu anda hamitcan arkadaşımızın 9 nolu başlıkta verdiği kodlarlar ile listbox içerisinde seçili olan satır, veri sayfasından silinmektedir. ama burada bir sıkıntı var. silme gerçekleştikten sonra, sıra numarası yenilemesi, var olan verilerden daha fazla olmaktadır. veri tabanında 10 kayıt varken birini sildiğimizde sıra numarası en son 9 olması gerekirken 10 kayıt göstermektedir. ama veri 9 satırdır. Bu durumda veri tabanına yeni kayıt ekleme aşamasında, 10 nolu satır boş kalacak, ve 11 numara vererek 11 nodan devam edecektir. yani, kayıt sildikten sonra sıra numarası yenilendiğinde, verebileceği maksimum no: kayıtlı olan veri kadar olmalı. emeği geçen herkese teşekkürler.

Arkadaşlarımızın yazmış olduğu kodlar şu anki haliyle bile, tasarım aşamasında olan uygulamamı çalıştırabilecek seviyeye gelmiştir. Teşekkürler,
 
İlgili kodu aşağıdaki şekilde değiştirir misiniz?

Private Sub CommandButton1_Click()
For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
cevap = MsgBox(ListBox1.List(i, 0) & " nolu kaydı silmek istiyor musunuz?", vbYesNo)
If cevap = vbYes Then Range(Cells(ListBox1.List(i, 0) + 1, 2), Cells(ListBox1.List(i, 0) + 1, 6)).ClearContents
End If
Next
Range(Cells(2, 2), Cells([a65536].End(3).Row, 6)).Sort key1:=Cells(2, 2)
Cells([a65536].End(3).Row, 1).ClearContents
End Sub
 
Harika

üstadım ellerinizden öpmek istiyorum, tek kelimeyle harikasınız,
bilginizi birikimlerinizi ve yardım severliğinizi takdirle karşılıyorum,
teşekkürler.
 
Sayın niceman, bu teşekkürü bu formdaki tüm arkadaşlar hak ediyor. Benim yaptığım burada öğrendiklerimi burada uygulamaktan başka birşey değil.
 
VBA

sayın hamitcanın dediği gibi, forumda açılmış olan tüm konular, kişinin hem fonksiyonlar hemde VBA da kendini geliştirmesi için, bulunmaz bir nimet,
bu nedenle tüm forum ekibine teşekkürlerimi sunuyorum.
 
İlgili kodu aşağıdaki şekilde değiştirir misiniz?

Private Sub CommandButton1_Click()
For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
cevap = MsgBox(ListBox1.List(i, 0) & " nolu kaydı silmek istiyor musunuz?", vbYesNo)
If cevap = vbYes Then Range(Cells(ListBox1.List(i, 0) + 1, 2), Cells(ListBox1.List(i, 0) + 1, 6)).ClearContents
End If
Next
Range(Cells(2, 2), Cells([a65536].End(3).Row, 6)).Sort key1:=Cells(2, 2)
Cells([a65536].End(3).Row, 1).ClearContents
End Sub



merhabalar, Sil butonu için yazılan bu kodlar silme işlemini çok güzel bir şekilde gerçekleştiriyor, Fakat .... nolu kaydı silmek istiyormusunuz? mesajından sonra, NO seçilirse, En sonda bulunan ID numarası siliniyor. Üstad Arkadaşlarımız için önemsiz bir konu olacağı kanaatindeyim, Lakin Benim gibi yeni başlayan çömezlere everestin tepesine tırmanmak kadar zor geliyor. yardımcı olacak arkadaşlara şimdiden teşekkürler.
 
Ek düzeltildiği için aşağıdaki mesaja eklendi.
 
Son düzenleme:
tşk

syn veyselemre teşekkür ediyorum çok kullanışlı oldu.
 
BomboBox İlk karakter hatası.

Veyselemrenin 16 numaralı başlıkta verdiği örnekte, Veri tabanında kayıtlı veriler, userform üzerinde oluşturulan ListBox a ComboBox lara girilen değerlere göre (Başka vir Sheets e aktarmadan) direk listbox üzerinde süzme gerçekleştiriyor. ve listbox ta süzülmüş olarak gelen verilerden silinmek istenenlerin üzerinde double click yapıldığında, silme işlemi gerçekleşiyor, Bu örnek uygulama, userform üzerinde listbox ve arama işlemleri kullanmak isteyen kullanıcılar için müthiş bir kaynak. herşeye uyum sağlayabilir. bu uygulamayı telefon defteri olarak bile kullanabilirsiniz. daha onlarcası.
fakat biraz evel bişey fark ettim, ComboBox a yazdığımız ilk değeri içermeyen bir veri varsa, hata veriyor. Veyselemrenin 16 numaralı başlıkta verdiği örnek uygulamada İsme göre Ara : j - o - p - u yazdığımızda hata veriyor, aynısı Araca Göre ara : da da oluyor. Ama bu çalışma birçok uygulamaya örnek teşkil edecek. çok fazla veriyle çalışan ve bu verileri userform üzerinden organize eden arkadaşlar bu uygulamayı mutlaka incelesinler. Veyselemreye şahsınızda teşekkür ediyorum.
 
On Error Resume Next

On Error Resume Next
bulunamayan ilk karakter sorununu çözdü.
 
Geri
Üst