TextBox'ta yazan veriyi ListBox'da Aratma

Katılım
23 Nisan 2011
Mesajlar
283
Excel Vers. ve Dili
Excel 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
02.01.2019
Merhaba, TextBox'a harf/sayı/karakter yazdığım zaman o TextBox içeriğini ListBox verilerinden bulup, aynı ListBox'a getirsin istiyorum. Ayrıca,
TextBox1'in içeriğini sildiğimde tüm veri geri gelsin. Sadece boşluk girildiğinde aratmasın. Forumda bir iki bilgi buldum ama işin içinden çıkamadım. Bu konuda yardımcı olabilirseniz çok sevinirim.
 

Ekli dosyalar

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Dosyanız ektedir.:cool:
Kod:
Private Sub TextBox1_Change()
Dim i As Long, sat As Long, deg As String, x As Long
sat = Sheets("Sayfa1").Cells(Rows.Count, "A").End(xlUp).Row
ListBox1.RowSource = ""
txtbx = UCase(Replace(Replace(TextBox1.Text, "i", "İ"), "ı", "I"))
For i = 1 To sat
    deg = UCase(Replace(Replace(Cells(i, "A").Value, "i", "İ"), "ı", "I"))
    If UCase(Replace(Replace(deg, "i", "İ"), "ı", "I")) Like "*" & txtbx & "*" Then
        ListBox1.AddItem Cells(i, "A").Value
    End If
Next i
    
End Sub
 

Ekli dosyalar

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
Kod:
Private Sub TextBox1_Change()

    Dim sds As Long, j As Long
    
    ListBox1.Clear
    With Sheets("Sayfa1")
        sds = .Range("A" & .Rows.Count).End(xlUp).Row
        Select Case TextBox1.Value
            Case Is = " "
                ListBox1.Clear
            Case Is = ""
                ListBox1.List = .Range("A1:A" & sds).Value
            Case Else
                For j = 1 To sds
                    If InStr(1, .Cells(j, 1).Value, TextBox1.Value) > 0 Then
                        ListBox1.AddItem .Cells(j, 1).Value
                    End If
                Next j
        End Select
    End With
End Sub
 
Katılım
23 Nisan 2011
Mesajlar
283
Excel Vers. ve Dili
Excel 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
02.01.2019
Sn. Orion1 ve Sn. mancubus cevaplarınız için çok teşekkür ederim iki kod da gayet güzel bir şekilde çalışıyor.


Kodlarla ilgili anlayamadığım iki sorum vardı onlara da bakabilen olursa çok sevinirim:

Sn. Orion1'in yazdığı kodun aşağıdaki satırını başka bir kodun içinde de bulmuştum ama nasıl çalıştığını hiç anlayamadım. Ayrıca i var I var onlar ne işe yarıyor?

Kod:
    deg = UCase(Replace(Replace(Cells(i, "A").Value, "i", "İ"), "ı", "I"))
Sn. mancubus'un yazdığı kodda da şu satırı açıklayabilirseniz çok sevinirim.
Kod:
      If InStr(1, .Cells(j, 1).Value, TextBox1.Value) > 0 Then
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Ucase ile değişkenin içinde verileri büyütüp,replace ilede i leri İ,ı ları I yapıyor.
Türkçe versiyon windowslarda sorun çıkmıyor ama ingilizce sürümlerde bu karakterlerde sorun yaşanıyor.
Onun için replace ile değiştiriyoruz.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
böyle konunun içinde kalarak çözüm üretmeye çalışırken yazılmış cevaplar varsa göremiyorsunuz. bu aralar 2. oldu benim için. :)

InStr fonksiyonu FIND (bul) ve SEARCH (mbul) fonksiyonlarının VBA'deki karşılığıdır diyebiliriz.

bir metin içerisinde, sol taraftan başka bir metin arayarak, bulduğu takdirde ilk bulduğu yerin metin içindeki sıra numarasını döndürür. bulamaz ise 0 rakamı döner.

yani fonksiyon sonucu 0'dan büyük ise aranan metin bulunmuş demektir. If ile bunu test ediyoruz. hücrede yer alan metinlerde TextBox1'e yazdığımız metin var mı. 0'dan büyük ise var demektir.

InStr(Başlangıç, Metin, AltMetin, Karşılaştırma)
Başlangıç: kaçıncı karakterden itibaren arama yapılacağı. default değer 1'dir. yazılmasına da gerek yoktur aslında.
Metin: içinde arama yapılacak metin
AltMetin: aranacak metin
Karşılaştırma: aramanın büyük harf - küçük harf duyarlı olup olmayacağı. default değer 0 yani duyarlı olup yazılmasına gerek yoktur. FIND-BUL gibi. 1 yazılır ise duyarsız olur. SEARCH-MBUL gibi.
 
Katılım
23 Nisan 2011
Mesajlar
283
Excel Vers. ve Dili
Excel 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
02.01.2019
Sn. Orion1 ve Sn. mancubus cevaplarınız için çok çok teşekkür ediyorum, çok sağ olun...
 
Katılım
9 Ağustos 2014
Mesajlar
85
Excel Vers. ve Dili
2013 türkçe
Dosyanız ektedir.:cool:
Kod:
Private Sub TextBox1_Change()
Dim i As Long, sat As Long, deg As String, x As Long
sat = Sheets("Sayfa1").Cells(Rows.Count, "A").End(xlUp).Row
ListBox1.RowSource = ""
txtbx = UCase(Replace(Replace(TextBox1.Text, "i", "İ"), "ı", "I"))
For i = 1 To sat
    deg = UCase(Replace(Replace(Cells(i, "A").Value, "i", "İ"), "ı", "I"))
    If UCase(Replace(Replace(deg, "i", "İ"), "ı", "I")) Like "*" & txtbx & "*" Then
        ListBox1.AddItem Cells(i, "A").Value
    End If
Next i
    
End Sub
hocam sizin formüle göre yaptım çok işe yaradı ancak bende 6 sütun var. Listboxa bunlar da geliyor ancak textboxa yazmaya başladığımda bulunan 1 tane oluyor. Uğraştım yapamadım.
 

Ekli dosyalar

Katılım
9 Ağustos 2014
Mesajlar
85
Excel Vers. ve Dili
2013 türkçe
Tablolar aslında 30 tane. 10×3 şeklinde. Yani alt alta olması benim için uygun olmayacak. Bu şekilde yapılamaz mi?
 

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
Murat bey, söylediğiniz yapılması çok zahmetli bir iş.
Nacizane çat pat ilmime göre imkansız demiyorum ama ayrı ayrı tanımlamalar ve listelemeler, birleştirmeler isteyen bir iş.
İlmini bilene çok kolay olabilir. Maalesef beni aşar.
Allah kolaylık versin.
 
Katılım
16 Eylül 2012
Mesajlar
49
Excel Vers. ve Dili
excell 2010
Altın Üyelik Bitiş Tarihi
12-03-2022
Dosyanız ektedir.:cool:
Kod:
Private Sub TextBox1_Change()
Dim i As Long, sat As Long, deg As String, x As Long
sat = Sheets("Sayfa1").Cells(Rows.Count, "A").End(xlUp).Row
ListBox1.RowSource = ""
txtbx = UCase(Replace(Replace(TextBox1.Text, "i", "İ"), "ı", "I"))
For i = 1 To sat
    deg = UCase(Replace(Replace(Cells(i, "A").Value, "i", "İ"), "ı", "I"))
    If UCase(Replace(Replace(deg, "i", "İ"), "ı", "I")) Like "*" & txtbx & "*" Then
        ListBox1.AddItem Cells(i, "A").Value
    End If
Next i
    
End Sub

"sayfa2" açıkken arama userformu açıp arama yaptıgımda sayfa2 dekileri arıyor..

sayfa1 e sabitlenemezmi?
 
Üst