Arama kodu

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Arkadaşlar userform da aşağıdaki arama kodu ile "OptionsButton" ile birden fazla sütunda seçerek, ilgili sütunlarda arama yapınca sadece "metin" leri buluyor. eğer TC no veya Tel. No gibi sayı veya rakam aradığımda bulmuyor.
kodda sanırım "Variant" olması gerekiyormuş ama ben denedim olmadı yardımcı olursanız sevinirim.
Aşağıdaki kod'a ilgili sütunlarda rakamlarıda bulacak şekilde düzenlenmesi lazım

Kod:
Dim araSutunda As Integer
Private Declare PtrSafe Function FindWindowA Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub OptionButton3_Click()
araSutunda = 25
End Sub

Private Sub OptionButton1_Click()
araSutunda = 24
End Sub

Private Sub OptionButton2_Click()
araSutunda = 23
End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Bu eklediğiniz kodlar arama yapmaz.

Muhtemelen "ARA" adında bir butonunuz var ona bastığınızda çalışan kodları buraya ekleyin.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba.

Bu eklediğiniz kodlar arama yapmaz.

Muhtemelen "ARA" adında bir butonunuz var ona bastığınızda çalışan kodları buraya ekleyin.
Kod:
Private Sub CommandButton22_Click()

On Error Resume Next
Aranan = TextBox3.Value
Set FC2 = Range("A9:AB6500").Find(What:=Aranan)
Application.GoTo Reference:=Range(FC2.Address), _
   Scroll:=False
Selection.AutoFilter Field:=araSutunda, Criteria1:="*" & TextBox3.Value & "*" 'İçerenleri bulur

If Aranan = "" Then
Selection.AutoFilter Field:=24
Selection.AutoFilter Field:=23
Selection.AutoFilter Field:=25

End If

 f = WorksheetFunction.CountA(Sheets("sayfa1").Range("B9:B6500"))
Sheets("sayfa1").Unprotect


Set rng = Sheets("sayfa1").Range("B9:B" & f + 8).SpecialCells(xlCellTypeVisible)
'Sheets("sayfa1").Protect
With ListBox1
    .Clear
    .RowSource = ""
End With

With ListBox4
    .Clear
    .RowSource = ""
End With

For Each rngCell In rng
    ListBox1.AddItem rngCell.Value
    ListBox4.AddItem rngCell.Value
    Next rngCell


End Sub
 
Son düzenleme:

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
On Error Resume Next
satırını kullanmamanızı tavsiye ederim.
Bırakın kodlar hata verecekse versin, ki böylelikle bir hata olursa bulup çözmek mümkün olsun.

Sorunuzun cevabına gelirsek sorun aramakta değil, filtrelemede.

Kodlarınızı aşağıdakiler ile değiştirin.
Rakam filtresi yaparken metin filtresinde olduğu gibi "içerir, başlar ve biter gibi" filtreleme yapamazsınız.
Rakam filtreleme yaparken rakama uygun filtreleme olmalı "Büyüktür, küçüktür, eşittir gibi"
Aşağıdaki kodlar rakama göre filtrelendiğinde tam eşleşme filtre yapar, metne göre filtre yapınca "içerir" filtresi yahpar.

Kod:
Private Sub CommandButton22_Click()
    Aranan = TextBox3.Value
    Set FC2 = Range("A9:AB" & Rows.Count).Find(What:=Aranan)
    Application.GoTo Reference:=Range(FC2.Address), Scroll:=False
    If IsNumeric(Aranan) Then
        Selection.AutoFilter Field:=araSutunda, Criteria1:=TextBox3.Value   'rakam filtrelemesi yapar
    Else
        Selection.AutoFilter Field:=araSutunda, Criteria1:="*" & TextBox3.Value & "*" 'İçerenleri bulur
    End If
    If Aranan = "" Then
        Selection.AutoFilter Field:=24
        Selection.AutoFilter Field:=23
        Selection.AutoFilter Field:=25
    End If
    f = WorksheetFunction.CountA(Sheets("sayfa1").Range("B9:B" & Rows.Count))
    Sheets("sayfa1").Unprotect
    Set Rng = Sheets("sayfa1").Range("B9:B" & f + 8).SpecialCells(xlCellTypeVisible)
    With ListBox1
        .Clear
        .RowSource = ""
    End With
    With ListBox4
        .Clear
        .RowSource = ""
    End With
    For Each rngCell In Rng
        ListBox1.AddItem rngCell.Value
        ListBox4.AddItem rngCell.Value
    Next rngCell
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
On Error Resume Next
satırını kullanmamanızı tavsiye ederim.
Bırakın kodlar hata verecekse versin, ki böylelikle bir hata olursa bulup çözmek mümkün olsun.

Sorunuzun cevabına gelirsek sorun aramakta değil, filtrelemede.

Kodlarınızı aşağıdakiler ile değiştirin.
Rakam filtresi yaparken metin filtresinde olduğu gibi "içerir, başlar ve biter gibi" filtreleme yapamazsınız.
Rakam filtreleme yaparken rakama uygun filtreleme olmalı "Büyüktür, küçüktür, eşittir gibi"
Aşağıdaki kodlar rakama göre filtrelendiğinde tam eşleşme filtre yapar, metne göre filtre yapınca "içerir" filtresi yahpar.

Kod:
Private Sub CommandButton22_Click()
    Aranan = TextBox3.Value
    Set FC2 = Range("A9:AB" & Rows.Count).Find(What:=Aranan)
    Application.GoTo Reference:=Range(FC2.Address), Scroll:=False
    If IsNumeric(Aranan) Then
        Selection.AutoFilter Field:=araSutunda, Criteria1:=TextBox3.Value   'rakam filtrelemesi yapar
    Else
        Selection.AutoFilter Field:=araSutunda, Criteria1:="*" & TextBox3.Value & "*" 'İçerenleri bulur
    End If
    If Aranan = "" Then
        Selection.AutoFilter Field:=24
        Selection.AutoFilter Field:=23
        Selection.AutoFilter Field:=25
    End If
    f = WorksheetFunction.CountA(Sheets("sayfa1").Range("B9:B" & Rows.Count))
    Sheets("sayfa1").Unprotect
    Set Rng = Sheets("sayfa1").Range("B9:B" & f + 8).SpecialCells(xlCellTypeVisible)
    With ListBox1
        .Clear
        .RowSource = ""
    End With
    With ListBox4
        .Clear
        .RowSource = ""
    End With
    For Each rngCell In Rng
        ListBox1.AddItem rngCell.Value
        ListBox4.AddItem rngCell.Value
    Next rngCell
End Sub
Muzaffer Ali Bey ilginize çok teşekkür ederim.
Yalnız benim istediğim tam bu değildi
şöyleki:

Kod:
Selection.AutoFilter Field:=araSutunda, Criteria1:="*" & TextBox3.Value & "*" 'İçerenleri bulur
Selection.AutoFilter Field:=araSutunda, Criteria1:=TextBox3.Value & "*" ' Başlayanları Bulur
2 farklı tuş'a yukarıdaki kodları "Birine Başlayanları, diğerine de içerenleri" bulacak şekilde ayarladım
Ben başlayanları aratınca örnek Tel No 555 ile başlayanları bulsun yada diğerine tıklayınca içinde 555 olanları bulsun.
3. bir tuş atayarak ona da direk Tel no yazılıp sadece onu bulması sağlanabilir.
sizin yardımcı olduğunuz kod rakam olursa sadece birebir aynı olanları yani benim 3. şıktakini yapıyor.
Başlayan veya içerenleri de bulacak şekilde nasıl düzenlenebilir.
Selamlar...
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Mümkünse dosyanızı ekler misiniz?
Telefon numarasını Excel zaten metin olarak görmesi gerekiyor., başka bir sorun olmalı, gerçek sorunu tespit etmek lazım.
Dosyanızda özel bilgiler varsa orijinali ile aynı olacak şekilde değiştirerek dosyanızı ekleyebilirsiniz.
 
Üst