TextBox ile ListBox da süzme.

Katılım
1 Ekim 2017
Mesajlar
694
Excel Vers. ve Dili
2019 türkçe
Altın Üyelik Bitiş Tarihi
06/10/2023
Hayırlı günler . İyi çalışmalar arkadaşlar. Dosyamdaki Useform üzerindeki listboxtaki bilgileri ada göre textboxa yazarak süzmek istiyorum. Yardımcı olursanız çok memnun olurum.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,765
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İlk olarak eklediğiniz dosyada kişisel bilgiler var. Bunlar doğruysa değiştirmenizde fayda var.

Sonrasında eğer arama işlemi sonucu veriler Listbox'a yüklenirse başlık satırını kaybedersiniz. Ama derseniz ki yardımcı bir sayfa kullanılabilir, bu durumda başlık satırı kullanılabilir.
 
Katılım
1 Ekim 2017
Mesajlar
694
Excel Vers. ve Dili
2019 türkçe
Altın Üyelik Bitiş Tarihi
06/10/2023
İlk olarak eklediğiniz dosyada kişisel bilgiler var. Bunlar doğruysa değiştirmenizde fayda var.

Sonrasında eğer arama işlemi sonucu veriler Listbox'a yüklenirse başlık satırını kaybedersiniz. Ama derseniz ki yardımcı bir sayfa kullanılabilir, bu durumda başlık satırı kullanılabilir.
Hocam merhaba arama işlemi üstte sıralanan kişiyi çift tıkladığımda yandaki TextBoxlara aktarılacak orada yaptığım değişikliği kaydedilecek. Başlık satırı Bilgi sayfasında kaybolmaması gerekir. Yok eğer listboxta çıkmayacaksa önemli değil. İlginiz için teşekkür ederim. iyi çalışmalar dilerim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,765
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Arama işlemi İÇERİR mantığı ile yapılmaktadır.

C++:
Private Sub TextBox1_Change()
    Dim S1 As Worksheet, Veri As Variant, Son As Long
    Dim Ad As String, Aranan As String, X As Long, Say As Long
    
    Set S1 = Sheets("BİLGİ")
    
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    Veri = S1.Range("A3:W" & Son).Value
    
    ReDim Liste(1 To UBound(Veri, 2), 1 To 1)
    
    On Error Resume Next
    ListBox1.Clear
    ListBox1.RowSource = ""
    On Error GoTo 0
    
    If TextBox1 <> "" Then
        For X = LBound(Veri) To UBound(Veri)
            Ad = UCase(Replace(Replace(Veri(X, 3), "ı", "I"), "i", "İ"))
            Aranan = UCase(Replace(Replace(TextBox1, "ı", "I"), "i", "İ"))
            If Ad Like "*" & Aranan & "*" Then
                Say = Say + 1
                For Y = 1 To UBound(Veri, 2)
                    ReDim Preserve Liste(1 To UBound(Veri, 2), 1 To Say)
                    Liste(Y, Say) = Veri(X, Y)
                Next
            End If
        Next
        If Say > 0 Then
            ListBox1.ColumnCount = 16
            ListBox1.ColumnWidths = 50
            ListBox1.ColumnHeads = False
            ListBox1.Column = Liste
        End If
    Else
        Call listbox1_doldur
    End If
End Sub

Ek olarak Listbox çift tıklama olayını da aşağıdaki gibi değiştirin.

C++:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    sat = ListBox1.ListIndex
    For i = 1 To 16
        Controls("kay" & i) = ListBox1.Column(i - 1)
    Next i
End Sub
 
Katılım
1 Ekim 2017
Mesajlar
694
Excel Vers. ve Dili
2019 türkçe
Altın Üyelik Bitiş Tarihi
06/10/2023
Arama işlemi İÇERİR mantığı ile yapılmaktadır.

C++:
Private Sub TextBox1_Change()
    Dim S1 As Worksheet, Veri As Variant, Son As Long
    Dim Ad As String, Aranan As String, X As Long, Say As Long
   
    Set S1 = Sheets("BİLGİ")
   
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    Veri = S1.Range("A3:W" & Son).Value
   
    ReDim Liste(1 To UBound(Veri, 2), 1 To 1)
   
    On Error Resume Next
    ListBox1.Clear
    ListBox1.RowSource = ""
    On Error GoTo 0
   
    If TextBox1 <> "" Then
        For X = LBound(Veri) To UBound(Veri)
            Ad = UCase(Replace(Replace(Veri(X, 3), "ı", "I"), "i", "İ"))
            Aranan = UCase(Replace(Replace(TextBox1, "ı", "I"), "i", "İ"))
            If Ad Like "*" & Aranan & "*" Then
                Say = Say + 1
                For Y = 1 To UBound(Veri, 2)
                    ReDim Preserve Liste(1 To UBound(Veri, 2), 1 To Say)
                    Liste(Y, Say) = Veri(X, Y)
                Next
            End If
        Next
        If Say > 0 Then
            ListBox1.ColumnCount = 16
            ListBox1.ColumnWidths = 50
            ListBox1.ColumnHeads = False
            ListBox1.Column = Liste
        End If
    Else
        Call listbox1_doldur
    End If
End Sub

Ek olarak Listbox çift tıklama olayını da aşağıdaki gibi değiştirin.

C++:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    sat = ListBox1.ListIndex
    For i = 1 To 16
        Controls("kay" & i) = ListBox1.Column(i - 1)
    Next i
End Sub
Hayırlı sabahlar. Korhan hocam çok teşekkür ederim. Beni büyük bir stresten kurtardınız. Yaklaşık 10 gündür bu acemi halimle listboxu forumdaki konularda bulunan kodlarla çözmeye çalıştım. Ama bazen olmuyor işte. Hocam ALLAH razı olsun sizden. Hayırlı çalışmalar diliyorum.
- Arkadaşlar User formdaki Kaydet butonuna tıkladığımda sıra no 1 2 ye dönüyor. Bir türlü çözemedim yardımlarınızı bekliyorum.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,765
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Buradaki uygulamanızda UserForm üzerinde SIRA NO verisi kilitli olması gerekmez mi? O kısmı değişmemesi için kilitlemeniz gerekir.
 
Katılım
1 Ekim 2017
Mesajlar
694
Excel Vers. ve Dili
2019 türkçe
Altın Üyelik Bitiş Tarihi
06/10/2023
Buradaki uygulamanızda UserForm üzerinde SIRA NO verisi kilitli olması gerekmez mi? O kısmı değişmemesi için kilitlemeniz gerekir.
Hocam kaydet buonuna bastığımda 1. sıradaki şahısın sıra nosu 2 oluyor bu nasıl oluyor bilmiyorum. Sıra no değişmemesi gerekiyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,765
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sayfadaki Z2 hücresinde formüller var. KAYDET butonu bu hücrelere bakıp işlem yapıyor.

A3 hücresindeki değeri 1 olarak düzelttiğimde Z2 hücresinde 3 yazıyor. Sonrasında KAYDET butonunda ki aşağıdaki kısım sıra numarasını güncelliyor.

Kod:
sonsatir = Sheets("BİLGİ").Range("Z2")
S1.Cells(sonsatir, 1) = sonsatir - 1
Diyelim ki siz formu açtınız ve ListBox nesnesinde ilk kaydı çift tıklayıp seçtiniz.

Bu kaydın sıra numarası 1 olarak form üzerindeki nesneye yükleniyor. Siz KAYDET butonuna tıkladığınızda Z2 hücresinde 3 yazdığı için ve kod satırında siz 3-1 komutunu verdiğiniz için 2 olarak sayfaya yazıyor.

Forumda aslında veri yönetimi başlığı altında UserForm ile sayfaya kayıt işlemleri ile ilgili bolca örnek var. Bunları inceleyip kendinizi geliştirdikten sonra proje yapımına başlasaydınız bu sıkıntıları daha az yaşardınız. Bu sıkıntıyı maalesef birçok üyemizde gözlemliyoruz. Gelişim sağlamadan hemen proje yapımına girişiyorlar ve bu sorunları hep yaşıyorlar.
 
Katılım
1 Ekim 2017
Mesajlar
694
Excel Vers. ve Dili
2019 türkçe
Altın Üyelik Bitiş Tarihi
06/10/2023
Sayfadaki Z2 hücresinde formüller var. KAYDET butonu bu hücrelere bakıp işlem yapıyor.

A3 hücresindeki değeri 1 olarak düzelttiğimde Z2 hücresinde 3 yazıyor. Sonrasında KAYDET butonunda ki aşağıdaki kısım sıra numarasını güncelliyor.

Kod:
sonsatir = Sheets("BİLGİ").Range("Z2")
S1.Cells(sonsatir, 1) = sonsatir - 1
Diyelim ki siz formu açtınız ve ListBox nesnesinde ilk kaydı çift tıklayıp seçtiniz.

Bu kaydın sıra numarası 1 olarak form üzerindeki nesneye yükleniyor. Siz KAYDET butonuna tıkladığınızda Z2 hücresinde 3 yazdığı için ve kod satırında siz 3-1 komutunu verdiğiniz için 2 olarak sayfaya yazıyor.

Forumda aslında veri yönetimi başlığı altında UserForm ile sayfaya kayıt işlemleri ile ilgili bolca örnek var. Bunları inceleyip kendinizi geliştirdikten sonra proje yapımına başlasaydınız bu sıkıntıları daha az yaşardınız. Bu sıkıntıyı maalesef birçok üyemizde gözlemliyoruz. Gelişim sağlamadan hemen proje yapımına girişiyorlar ve bu sorunları hep yaşıyorlar.
Hocam haklısınız. İnanın 50 yaşındayım bugüne kadar hiç kimseden ders almadım. 40 yaşına kadar Excel in ne olduğunu bilmiyordum. Kendi çabalarımla ve bu foruma üye olduktan sonra sizin gibi hocaların ve arkadaşlar sayesinde bir şeyler öğrendim. Kendi işimi daha fazla nasıl kolaylaştırırım niyetiyle çalışıyorum. Dediğiniz gibi bir çok proje inceledim belki 100 dosya indirdim ama yeteri kadar bilgi olmayınca olmuyor. Sizleri de rahatsız etmek istemiyorum ama mecbur kalıyorum. Benim gibileri de arada idare edin.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,765
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben size zaten çözüm yolunu gösterdim.

Z2 hücresinde 3 değeri var siz bundan 1 çıkarmışsınız. Bu sebeple 2 sıra numarasını veriyor. Siz -2 yaparsanız sanırım doğru sonuca ulaşırsınız.
 
Üst