Textbox içinde arama yapmak

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
UserFom daki Textbox içinde aradığım bir kelimeyi bulup seçili hale nasıl getirilebilir. Bunu için nasıl bir yol izlenir.
Doğrudan "ctrl+F" işlevi çalışmıyor.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,382
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Aşağıdaki kodlar ile yapabilirsiniz.

Kod:
Private Sub CommandButton1_Click()
    Dim Aranan As String
    Aranan = "test"
    TextBox1.Text = "Bu bir test metnidir."
    
    On Error GoTo Bulunamadi
    TextBox1.SelStart = WorksheetFunction.Find(Aranan, TextBox1.Text) - 1
    TextBox1.SelLength = Len(Aranan)
    TextBox1.SetFocus
    Exit Sub
Bulunamadi:
    MsgBox "Aradığınız veri bulunamadı."
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
sayın dalgalikur ilginize teşekkürler...
Ben aradığım kelimeyi nereye yazacağım
Textbox1 arama yapacağım yer mi yoksa aradığım kelimeyi yazacağım yer mi

Ben galiba derdimi tam olarak anlatamadım.
Amacım şu: Örneğin oluşturacağım bir yeni textbox veya comboBox kutucuğuna yazacağım kelimeyi bulmasını istediğim Textbox kutusu içinde arayıp bulacak ve bulduğu kelimeyi word'da ki gibi seçili hale getirecek
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,382
Excel Vers. ve Dili
2019 Türkçe
Arama yapmak istediğiniz kelime TextBox2 de ise
ve
Arama TextBox1 de yapılacaksa
kodlar şöyle olacak.

Kod:
Private Sub CommandButton1_Click()
    Dim Aranan As String
    Aranan = textbox2.text
    
    On Error GoTo Bulunamadi
    TextBox1.SelStart = WorksheetFunction.Find(Aranan, TextBox1.Text) - 1
    TextBox1.SelLength = Len(Aranan)
    TextBox1.SetFocus
    Exit Sub
Bulunamadi:
    MsgBox "Aradığınız veri bulunamadı."
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Sayın Dalgalikur Hocam ilginiz için teşekkürler...
kod çalışıyor ama bazı hatalar var bunlar şöyle:
1- aranan kelime arama kutusundaki ile birebir aynı değilse bulmuyor mesele "Yeryüzü" kelmesi cümlede textboxta küçük harf ile başlıyor be arama kutusuna ilk harfi büyük yazmış isem yok diyor bulmuyor
2- aranan kelime ilk paragrafta ise tam buluyor, ikinci paragrafta ise ikinci harften itibaren buluyor dileyim ki 15 paragraflık bir metin var ve 4 harflik bir kelime arıyorum aradığım kelimenin 11 harf sağındaki harften başlıyarak seçili hale getiriyor.
3 Bu hata değil ama paragrafta birden fazla aynı kelime varsa sonrakini nasıl bulacağız. hep ilk kelimeyi buluyor diğerini bulmuyor.
ilk iki hata ile ilgili aşağıya ekran görüntülerini yapıştıracağım

Saygılar
 
Son düzenleme:

asdsxx

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

asdsxx

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

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,382
Excel Vers. ve Dili
2019 Türkçe
Aşağıdaki kodları kullanın.

Kod:
Private Sub CommandButton1_Click()
    Dim Aranan As String
    Dim Metin As String
    Aranan = UCase(TextBox2.Text)
    Metin = UCase(WorksheetFunction.Substitute(TextBox1.Text, Chr(13), ""))
    On Error GoTo Bulunamadi
    TextBox1.SelStart = WorksheetFunction.Find(Aranan, Metin) - 1
    TextBox1.SelLength = Len(Aranan)
    TextBox1.SetFocus
    Exit Sub
Bulunamadi:
    MsgBox "Aradığınız veri bulunamadı."
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Teşekkürler kod düzgün çalıştı. Yukarıdaki belirttiğim iki madde yani hatalar yok.
peki aynı kelimeden birden fazla varsa sonraki kelimeyi bulmak için ne yapmak gerekiyor.
Yada şöyle olabilir mi: eğer aranan kelime birden fazla ise aynı anda hepsini bulabilir mi yoksa command butonuna her tıklattığında bir sonraki aranan kelimeyi bulabilir mi? Her iki seçenek de olabilir.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Dalgalikur Hocam yukarıdaki son mesajım için ilave kod olabilir mi
Saygılar...
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,382
Excel Vers. ve Dili
2019 Türkçe
Aşağıdaki kodları kullanın.

Kod:
Private Sub CommandButton1_Click()
    Dim Aranan As String
    Dim Metin As String
    Aranan = UCase(TextBox2.Text)
    Metin = UCase(WorksheetFunction.Substitute(TextBox1.Text, Chr(13), ""))
    On Error GoTo Bulunamadi
    TextBox1.SelStart = WorksheetFunction.Find(Aranan, Metin, TextBox1.SelStart + 2) - 1
    TextBox1.SelLength = Len(Aranan)
    TextBox1.SetFocus
    Exit Sub
Bulunamadi:
    If TextBox1.SelStart = 0 Then
        MsgBox "Aradığınız veri bulunamadı."
    Else
        MsgBox "Aradığınız veri başka yok."
    End If
End Sub

Private Sub TextBox2_Change()
TextBox1.SelStart = 0
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Teşekkkürler... Şimdi tam istediğim gibi oldu.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Sayın arkadaşlar yukarıdaki Dalgalikur' Bey'in hazırladığı kod ve Koray Bey'in hazırladığı örnek dosya gayet güzel çalışıyor. çalışma mantığı aranan kelimeleri tek tek bulması. Textbox metnindeki aranan ilk kelimeyi buluyor, sonra diğer kelimeyi....
Peki aran kelimeden birden fazla varsa aynı anda hepsini de tek hamlede bulup seçili hale getirilebilir mi acaba? Word mantığında olduğu gibi.
yani textbox metninde aranan kelimeden 5 tane varsa 5'ini de aynı anda bulup seçil hale getirsin...
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Bende örnek dosya hazırlamıştım.

Lazım olan üyelerimiz kullanabilirler.
Korhan Bey selamlar
sizin textbox içinde kelime arama ile ilgili yukarıdaki örnek dosyadaki kodu kendi çalışmama uyarlamaya çalıştım ama bir türlü beceremedim. 11. Mesajdaki kodları uyarladım o çalışıyor bir sıkıntı yok ama sizin örnek dosyadaki kodda sonraki kelimeyi ararken Textbox'un aşağılarında ise kaydırma çubuğunu da otomatik kaydırıyor.
11. koda sadece kaydırma çubuğunu da hareket ettirecek kodu ilave edebilirmisiniz.
Yada sadece komut butonuna tıklatınca çalışacak şekilde kod verebilirmisiniz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
sizin dosyadaki Ara komut butonundaki kod

Private Sub CommandButton1_Click()
If TextBox1.Value <> "" Then
Aranan = TextBox1.Value
On Error GoTo 10
Bul = WorksheetFunction.Search(Aranan, Replace(TextBox2, Chr(13), ""), IIf(Bul = 0, 1, Bul + 1))
If Bul > 0 Then
With TextBox2
.SetFocus
.SelStart = Bul - 1
.SelLength = Len(Aranan)
.SetFocus
End With
CommandButton1.Caption = "Sonrakini Bul"
Exit Sub
Else
MsgBox "Aradığınız veri bulunamadı!", vbCritical
End If
10
If Bul = 0 Then
MsgBox "Aradığınız veri bulunamadı!", vbCritical
TextBox1.SetFocus
Else
MsgBox "Metin içindeki son veri bulunmuştur. Lütfen başka arama yapınız.", vbExclamation
TextBox2.SetFocus
End If
End If
End Sub

Kırmızılı yerleri dosyama göre değiştiriyorum. Eksiklik mi var
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,770
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kodda aşağıdaki bölüm seçim işlemi yapıyor.

Kod:
With TextBox2
    .SetFocus
    .SelStart = Bul - 1
    .SelLength = Len(Aranan)
    .SetFocus
End With
Vermiş olduğum kod zaten butona tıklayınca çalışıyor.

Dosyanıza uyarlarken daha dikkatli davranırsanız sorunu çözersiniz. Dosyanızı görmeden benim yorum yapmam çok doğru olmaz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
501
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Koray Bey benim isteğim sadece aranan kelimeyi buldukça kaydırma çubuğunun hareket etmesi. Değilse 11. mesajdaki kod çalışıyor. sizin ilave ettiğiniz kısım 11. mesajdaki kod'un neresine ilave edeyim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,770
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
11. mesajda önerilen kod içinde seçme bölümü var.

Kod:
    TextBox1.SelStart = WorksheetFunction.Find(Aranan, Metin, TextBox1.SelStart + 2) - 1
    TextBox1.SelLength = Len(Aranan)
    TextBox1.SetFocus
 
Üst