TextBoxa isim yazarken her harf için yeniden listelensin

Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Değerli Dostlar Selamlar,
Dah önce forumda böyle bir örnek görmüştüm. Şimdi lazım oldu aradım bulamadım.
UserForm üzerinde TextBox1 ve TextBox2 var. Birde ListBox. Sayfa2 de Adı Soyadı (bitişik yazılı), Doğm Tarihi, Telefon Numarası yazılı. Süzüp ListBoxa listelemek istiyorum. Süzme işlemi önce TextBox1 e her harf yazdığımda yeniden süzülsün. İsim yazımı bitince bir boşluktan sonra Soyisim ile devam etsin.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki kodları kullanınız.

Kod:
Option Explicit
Private Sub TextBox1_Change()
    Dim arr() As Variant
    Dim i%, y%
    With Sheets("Sayfa2")
        For i = 2 To .Cells(6556, 2).End(xlUp).Row
            If UCase(Replace(Replace(.Cells(i, 2), "i", "İ"), "ç", "Ç")) _
                    Like _
                        UCase(Replace(Replace(TextBox1, "i", "İ"), "ç", "Ç")) & "*" Then
                y = y + 1
                ReDim Preserve arr(1 To 4, 1 To y)
                arr(1, y) = .Cells(i, 1)
                arr(2, y) = .Cells(i, 2)
                arr(3, y) = .Cells(i, 3)
                arr(4, y) = .Cells(i, 4)
            End If
        Next i
    End With
    On Error Resume Next
    With ListBox1
        .Clear
        If UBound(arr, 2) = 1 Then
            .Column = arr
        ElseIf UBound(arr, 2) > 1 Then
            .List = Application.WorksheetFunction.Transpose(arr)
        End If
    End With
End Sub

Private Sub UserForm_Initialize()
    ListBox1.ColumnCount = 4
    TextBox1_Change
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,535
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ferhat beyin güzel çözümüne alternatif olarak ekteki örnek dosyayı incelermisiniz.

Çalışmada filtreleme işlemi kullanılmıştır. Bu şekilde kullanımda eğer veri sayınız çok fazla olursa hız kaybına uğramazsınız. Filtreleme işlemi Sayfa3 te yapılmaktadır. Bu sayfayı gizleyerek filtreleme işlemini yaptırdım. Ferhat beyin önerdiği kodda işlem döngü ile yapıldığı için çok sayıda veride sizi biraz bekletecektir. Eğer veri sayınız az olacaksa Ferhat beyin çözümü daha profesyonelcedir. Onu kullanmanızı tavsiye ederim.

Veri sayınızı 10.000 li değerlere çıkararak iki kodun çalışma hızını gözlemleyebilirsiniz.
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Selamlar,
Sayın Ferhat Bey, Sayın Korhan Hocam, çok teşekkür ederim. Sağolun.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Korhan bey'e yerinde uyarısı için teşekkür ederim.

Doğrudur. Bu kodlar, çok sayıda veriden oluşan tablolarda/listelerde , işlem süresinin uzamasına ve can sıkıntısına sebep olur.

Korhan bey'in çözümündeki gibi, Excel'in standat filtreleme işlemi, daha kullanışlı olacaktır.

Diğer hızlı bir alternatif ise; DAO veya ADO ile yapılacak tablo sorgulamalarıdır. Ancak, bir Excel sayfasını, tam bir Veri tabanı tablosu gibi sorgulamak mümkün değil ... Bugün sayı girdiğiniz aynı sütundaki bir hücreye yarın metin girerseniz, SQL sorguları çuvallar ...

Onun için; ya Veri tablosuna veri tipine uygun, kontrollü giriş sağlanmalı (veri doğrulama veya VBA kodlarıyla olabilir), ya da Excel'i bir veri tabanı olarak düşünmemeli ....
 
Üst