Listbox Arama Kodu

Katılım
17 Nisan 2009
Mesajlar
52
Excel Vers. ve Dili
2003-2007 TR
Selamlar userformda listboxta arama yaptırmak için aşağıdaki kodu yazıyorum
Bir harfe basınca Listboxtaki veriler kayboluyor ama sonuç bulmuyor
Sorunun 2 sütunlu bir listboxta arama yapılmasında kaynaklandığını düşünüyorum çünkü listbox ımı 2 sütün gösterir biçime getirdiğimde kod çalışıyor ama bana tek sütun gerekli Sadece C sütunundaki veriler var listboxta
Bir kaç denem yaptım ama işin mantığını bilmeyince copy paste bu kadar oluyor Sizden ricam tek sütun için Buradaki kodda hangi değişikliği yapmak gerekiyor. Eğer Zamanınız varsa kısaca her satırın e demek istediğini yazabilirmisiniz.
Örn. kodun 4. satırı için "Eğer Textbox9 boş ise" gibi

Kod:
Private Sub TextBox9_Change()
Dim k As Range, adrs As String, j As Byte, a As Long
ReDim myarr(1 To 2, 1 To 1)
If TextBox9.Text = "" Then
ListBox1.RowSource = "Arsiv!C2:C" & Sheets("Arsiv").[A65536].End(xlUp).Row
Exit Sub
End If
With Worksheets("Arsiv")
    ListBox1.RowSource = ""
    If .FilterMode Then .ShowAllData
    Set k = .Range("C2:C65536").Find(TextBox9.Text & "*", , xlValues, xlWhole)
    If Not k Is Nothing Then
        adrs = k.Address
       Do
            a = a + 1
            ReDim Preserve myarr(1 To 2, 1 To a)
            For j = 1 To 2
               myarr(j, a) = .Cells(k.Row, j + 1).Value
            Next j
            Set k = Range("C2:C65536").FindNext(k)
        Loop While Not k Is Nothing And k.Address <> adrs
        ListBox1.Column = myarr
    End If
End With

End Sub
 
Katılım
17 Nisan 2009
Mesajlar
52
Excel Vers. ve Dili
2003-2007 TR
Üstadlardan yardım bekliyorum lütfen
 

Orion1

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

Ofis-2010-TR 32 Bit
initialize olayına aşağıdaki kodu giriniz.:cool:
Kod:
ListBox1.ColumnWidths = "100;100"
 
Katılım
17 Nisan 2009
Mesajlar
52
Excel Vers. ve Dili
2003-2007 TR
Yok hocam olmadı bu verdiğiniz kod sütun genişliklerini belirlemiyor mu?
Ben Textbox9 da aradığım kelimelerin listbox1 de süzülmesini istiyorum listbox 'ı 2 sütun olan bir iletiden kopyaladım bu kodu bende listbox ımı 2 sütun yapınca çalışıyor ama benim listbox 1 sütun onda çalışmıyor.
Birde bu ezbere olunca hep sizin yardımınıza ihtiyaç duyuyoruz vba kodlarının anlamlarını nereden öğrenebilirim.
 
Katılım
5 Aralık 2007
Mesajlar
635
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
08-05-2021
Merhaba,
Aşağıdaki kod işinizi görür sanıyorum. Userformun açılışında tüm listenizi de görmek istiyorsanız ikinci kodu da kullanın. İyi çalışmalar.
Private Sub TextBox9_Change()
With Worksheets("Arşiv")
strLetter = Me.TextBox9.Text
Me.ListBox1.Clear
If .FilterMode Then .ShowAllData
vList = Range("c2", Cells(Rows.Count, 3).End(xlUp)).Value
vList = Application.Transpose(vList)
vList = Filter(SourceArray:=vList, _
Match:=strLetter, _
Include:=True, _
Compare:=vbTextCompare)
Me.ListBox1.List = vList
End With
End Sub

Private Sub UserForm_Initialize()
Sheets("Arşiv").Select
With Worksheets("Arşiv")
Me.ListBox1.Clear
If .FilterMode Then .ShowAllData
Me.ListBox1.List = Range("c2", Cells(Rows.Count, 3).End(xlUp)).Value
Me.TextBox9.SetFocus
End With
End Sub
 
Katılım
5 Aralık 2007
Mesajlar
635
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
08-05-2021
Not; Ya gönderdiğim koddaki "Arşiv" leri "Arsiv" yapın veya sayfa isminizi Arşiv olarak değiştirin. :)
 
Katılım
17 Nisan 2009
Mesajlar
52
Excel Vers. ve Dili
2003-2007 TR
Merhaba,
Aşağıdaki kod işinizi görür sanıyorum. Userformun açılışında tüm listenizi de görmek istiyorsanız ikinci kodu da kullanın. İyi çalışmalar.
Private Sub TextBox9_Change()
With Worksheets("Arşiv")
strLetter = Me.TextBox9.Text
Me.ListBox1.Clear
If .FilterMode Then .ShowAllData
vList = Range("c2", Cells(Rows.Count, 3).End(xlUp)).Value
vList = Application.Transpose(vList)
vList = Filter(SourceArray:=vList, _
Match:=strLetter, _
Include:=True, _
Compare:=vbTextCompare)
Me.ListBox1.List = vList
End With
End Sub

Private Sub UserForm_Initialize()
Sheets("Arşiv").Select
With Worksheets("Arşiv")
Me.ListBox1.Clear
If .FilterMode Then .ShowAllData
Me.ListBox1.List = Range("c2", Cells(Rows.Count, 3).End(xlUp)).Value
Me.TextBox9.SetFocus
End With
End Sub
Beceremedim olmuyor ama bişey daha farkettim süzme ile arama yapsam ve seçsemde listboxtaki ismin bilgileri yerine hangi sıra ise onun bilgileri geliyor. örnek dosya hazıladım. yardımlarınızı rica ediyorum.
 

Ekli dosyalar

Katılım
17 Nisan 2009
Mesajlar
52
Excel Vers. ve Dili
2003-2007 TR
Listbox ta yapılan seçim ile arşiv numarasını öğrenip hastanın dosyasını bulmak istiyorum Birisi banada yardımcı olabilir mi? Lütfen
 
Katılım
17 Nisan 2009
Mesajlar
52
Excel Vers. ve Dili
2003-2007 TR
Teşekkürler ama buda olmadı hocam
 
Son düzenleme:

Orion1

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

Ofis-2010-TR 32 Bit
Neresi olmuyor.
Bende çalışıyor.
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,163
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Sayın Gizlen
aylardır bu sitede özellikle listbox nesnesine arama sonuçlarının aktarılması için arama yapılması konusuyla ilgili olarak verilmiş örnekleri inceliyorum.
Bu konuya ilişkin ortaya koyduğunuz çözümler tek kelimeyle muhteşem. Ancak eğer beni anlayışla karşılarsanız, tüm örneklerinize rağmen çözemediğim bir şeyler kalıyor. Bunları mesajımda kırmızı ile işaretledim. Sanırım bu kodların açıklamasını yazarsanız çok daha işime yarayacaktır.
örneğin:
j neden byte olarak tanımlanıyor? String ya da integer olsaydı ne olurdu?
"ReDim" burda tam olarak ne yapıyor?
"ReDim Preserve myarr(...)" Bunların herbiri ne anlama geliyor?
Bu arada inanın ki size bunları sormadan önce görsel cd den tutun, kitaplara kadar bir çok kaynak satın aldım ve inceledim. ama bu kodların açıklamasına rastlayamadım. Genelde sadece yüzeysel nesne tanımları ve basit fonksiyonlarla sınırlı bilgiler bulabildim.
Özellikle Listbox nesnesine arama sonuçlarını toplama ile ilgili olarak sizin kişisel olarak yararlandığınız, en çok faydalandığınız kaynak hangisi oldu?
Yardımcı olursanız, gerçekten bana çok büyük bir yardımda bulunmuş olacasınız.
Önceden sonsuz teşekkürler ve bilgisizliğimden ötürü mazur görülmek temennisiyle saygılarımı sunarım.


Private Sub TextBox9_Change()
Dim k As Range, adrs As String, j As Byte, a As Long
ReDim myarr(1 To 8, 1 To 65536)
If TextBox9.Text = "" Then
ListBox1.RowSource = "Arsiv!A2:H" & Sheets("Arsiv").[A65536].End(xlUp).Row
Exit Sub
End If
With Worksheets("Arsiv")
ListBox1.RowSource = ""
If .FilterMode Then .ShowAllData
Set k = .Range("C2:C65536").Find(TextBox9.Text & "*", , xlValues, xlWhole)
If Not k Is Nothing Then
adrs = k.Address
Do
a = a + 1
For j = 1 To 8
myarr(j, a) = .Cells(k.Row, j).Value
Next j
Set k = Range("C2:C65536").FindNext(k)
Loop While Not k Is Nothing And k.Address <> adrs
ReDim Preserve myarr(1 To 8, 1 To a)
ListBox1.Column = myarr
End If

End With

End Sub
 

Orion1

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

Ofis-2010-TR 32 Bit
Forumdan alıp arşivime aldığım ekli dosyayı okuyunuz.
nereden yardım aldığım konusu ise forumdan aldım.Özellikle Haluk beyin çok yardımı oldu.Bana Emeği geçen tüm arkadaşlara bu vesile ile teşekkür ederim.

Sayın Gizlen
aylardır bu sitede özellikle listbox nesnesine arama sonuçlarının aktarılması için arama yapılması konusuyla ilgili olarak verilmiş örnekleri inceliyorum.
Bu konuya ilişkin ortaya koyduğunuz çözümler tek kelimeyle muhteşem. Ancak eğer beni anlayışla karşılarsanız, tüm örneklerinize rağmen çözemediğim bir şeyler kalıyor. Bunları mesajımda kırmızı ile işaretledim. Sanırım bu kodların açıklamasını yazarsanız çok daha işime yarayacaktır.
örneğin:
j neden byte olarak tanımlanıyor? String ya da integer olsaydı ne olurdu?
"ReDim" burda tam olarak ne yapıyor?
"ReDim Preserve myarr(...)" Bunların herbiri ne anlama geliyor?
Bu arada inanın ki size bunları sormadan önce görsel cd den tutun, kitaplara kadar bir çok kaynak satın aldım ve inceledim. ama bu kodların açıklamasına rastlayamadım. Genelde sadece yüzeysel nesne tanımları ve basit fonksiyonlarla sınırlı bilgiler bulabildim.
Özellikle Listbox nesnesine arama sonuçlarını toplama ile ilgili olarak sizin kişisel olarak yararlandığınız, en çok faydalandığınız kaynak hangisi oldu?
Yardımcı olursanız, gerçekten bana çok büyük bir yardımda bulunmuş olacasınız.
Önceden sonsuz teşekkürler ve bilgisizliğimden ötürü mazur görülmek temennisiyle saygılarımı sunarım.


Private Sub TextBox9_Change()
Dim k As Range, adrs As String, j As Byte, a As Long
ReDim myarr(1 To 8, 1 To 65536)
If TextBox9.Text = "" Then
ListBox1.RowSource = "Arsiv!A2:H" & Sheets("Arsiv").[A65536].End(xlUp).Row
Exit Sub
End If
With Worksheets("Arsiv")
ListBox1.RowSource = ""
If .FilterMode Then .ShowAllData
Set k = .Range("C2:C65536").Find(TextBox9.Text & "*", , xlValues, xlWhole)
If Not k Is Nothing Then
adrs = k.Address
Do
a = a + 1
For j = 1 To 8
myarr(j, a) = .Cells(k.Row, j).Value
Next j
Set k = Range("C2:C65536").FindNext(k)
Loop While Not k Is Nothing And k.Address <> adrs
ReDim Preserve myarr(1 To 8, 1 To a)
ListBox1.Column = myarr
End If

End With

End Sub
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,163
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Üstadım değişkenler hakkında eklediğiniz dosya sayesinde, sorduklarımın içinden byte değişkenine ilişkin sorduğumun cevabını alabildim. Çok teşekkür ederim.
Aynı açıklayıcı özellikte aşağıdaki vba kodlarının da açıklamasını alabilirsem, harbiden Sümerlerin ruhunu şaad etmiş olursun :))).
redim
myarr
preserve

önceden teşekkürler büyük üstat.
 

Orion1

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

Ofis-2010-TR 32 Bit
Üstadım değişkenler hakkında eklediğiniz dosya sayesinde, sorduklarımın içinden byte değişkenine ilişkin sorduğumun cevabını alabildim. Çok teşekkür ederim.
Aynı açıklayıcı özellikte aşağıdaki vba kodlarının da açıklamasını alabilirsem, harbiden Sümerlerin ruhunu şaad etmiş olursun :))).
redim
myarr
preserve

önceden teşekkürler büyük üstat.
redim:bir dizinin eleman sayısını tekrar değiştirmek.
Bu komut kullanıldığında değişken yeni duruma göre düzenlenir.
Eğer önceden veri varsa bu veriler silenecektir.
Bunu engellemek için preserve komutu ile beraber redim komıutunu kullanmalısınız.
myarr dizi değişkenin adı.Herhangi bir ad olabilir.:cool:
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,163
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Sayın Evren Gizlen
Formda verdiğiniz muhteşem örnekler ve bilgi paylaşımı için sonsuz teşekkürler.
özellikle verileri listboxt nesnesine, arama sonuçlarına göre süzme tekniği çok ilgimi çekiyor. Verdiğiniz örnekleri bire bir uygulayarak bir kütüphane programı yapmaya çalıştım. Kitaplar sekmesi, Öğrenciler sekmesi ve kitap teslimat sekmesi olmak üzere çok sekmeli bir form oluşturdum. kitaplarda listbox tüm kitapları gösteriyor. arama alanına yazmaya başlayınca o isime yakın kitaplar gelmeye başlıyor. Aynı tekniği öğrenciler ve teslim edilen kitaplar için de uyguladım.
böyle olunca 91 no lu error mesajı çıkıyor ve program kapanıyor.
Sormak istediğim şu: acaba hatayı tetikleyen verilerin fazlalığı mıdır (+/- 3000 satır) yoksa aynı değişkenlerin farklı multipage/listboxlarda kullanılması veri çakışması mı yapıyor? Bazen de ilk listboxta ki arama sonuçları sorunsuz geliyor, ikincisine dokunduğunuz zaman 91 no lu hata mesajı verip kapatıyor. Daha sonra ilkin çalışanda çalışmamaya başlıyor. Bu sorunla ilgili olarak tavsiyeleriniz nelerdir?
Önceden teşekkürler..
 

Ekli dosyalar

Son düzenleme:

Orion1

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

Ofis-2010-TR 32 Bit
Buradan ne olduğunu bilemem.(Yani görmeden)

Sayın Evren Gizlen
Formda verdiğiniz muhteşem örnekler ve bilgi paylaşımı için sonsuz teşekkürler.
özellikle verileri listboxt nesnesine, arama sonuçlarına göre süzme tekniği çok ilgimi çekiyor. Verdiğiniz örnekleri bire bir uygulayarak bir kütüphane programı yapmaya çalıştım. Kitaplar sekmesi, Öğrenciler sekmesi ve kitap teslimat sekmesi olmak üzere çok sekmeli bir form oluşturdum. kitaplarda listbox tüm kitapları gösteriyor. arama alanına yazmaya başlayınca o isime yakın kitaplar gelmeye başlıyor. Aynı tekniği öğrenciler ve teslim edilen kitaplar için de uyguladım.
böyle olunca 91 no lu error mesajı çıkıyor ve program kapanıyor.
Sormak istediğim şu: acaba hatayı tetikleyen verilerin fazlalığı mıdır (+/- 3000 satır) yoksa aynı değişkenlerin farklı multipage/listboxlarda kullanılması veri çakışması mı yapıyor? Bazen de ilk listboxta ki arama sonuçları sorunsuz geliyor, ikincisine dokunduğunuz zaman 91 no lu hata mesajı verip kapatıyor. Daha sonra ilkin çalışanda çalışmamaya başlıyor.
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,163
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
dosyayı zipleyip yüklemeye çalıştım. Boyutu 80 MB iken 51 MB oldu. Ancak sayfa sayfa ayrı olarak gönderebilirim
 
Üst