Soru Excel de arama kutusu yapmak

Katılım
11 Haziran 2021
Mesajlar
4
Excel Vers. ve Dili
2016 tr
Merhaba bir hücreye girilen değeri, bir veri kümesi içerisinde aratıp, eğer bulursa ilgili hücreye gitmesini sağlayacak bir formüle ihtiyacım var. Araştırdığım konular arasında maalesef çalışan kod bulamadım. en son aşağıdaki kodu denedim ama maalesef o da çalışmıyor.

özet: a1 hücresine değer gireceğiz ve c2 sütununda o değeri arayacak. varsa hücreye gidecek. arama tuşuna her basışımda ilgili değeri aramaya devam edip diğer seçenekleri gösterecek.)



en son denediğim kod:



Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range, Adr As Variant, onay As String

If Intersect(Target, [A1]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub

With Cells
Set c = .Find(Target, LookAt:=xlPart)
If Not c Is Nothing Then
Adr = c.Address
Do
c.Offset(0, 0).Select
onay = MsgBox("Tamam/Devam", vbCritical + vbYesNo, "Dikkat!")
If onay = vbYes Then Exit Sub

Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> Adr
End If
End With

Set c = Nothing

End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
10,378
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Verdiğiniz kodu denediğimde düzgün bir şekilde çalıştığını gördüm. Uyarı çıktığında Hayır'a basıldığında aramaya devam ediyor. Çünkü Evet seçilince işlemi sonlandırmayı seçmişsiniz.
 
Katılım
11 Haziran 2021
Mesajlar
4
Excel Vers. ve Dili
2016 tr
Verdiğiniz kodu denediğimde düzgün bir şekilde çalıştığını gördüm. Uyarı çıktığında Hayır'a basıldığında aramaya devam ediyor. Çünkü Evet seçilince işlemi sonlandırmayı seçmişsiniz.
Ben de hiç bir şekilde çalışmadı. herhangi bir hata mesajı da almıyorum. çalıştıra basıyorum ama hiçbir şey olmuyor. O yüzden benim işime yarar bir kod mu bilmiyorum. Ben her arama tuşuna basıldığında sonuçlar arasında geçmesini istiyorum aynı ctrl+f komutu gibi
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
10,378
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Makroların etkinleştirilmiş olduğundan emin misiniz?

Aşağıdaki kodları bir defaya mahsus çalıştırın. Belki herhangi bir sebeple sayfa olaylarına bağlı kodlar pasiflenmiştir:

Kod:
Sub aktif()
    Application.EnableEvents = True
End Sub
 
Katılım
11 Haziran 2021
Mesajlar
4
Excel Vers. ve Dili
2016 tr
Makroların etkinleştirilmiş olduğundan emin misiniz?

Aşağıdaki kodları bir defaya mahsus çalıştırın. Belki herhangi bir sebeple sayfa olaylarına bağlı kodlar pasiflenmiştir:

Kod:
Sub aktif()
    Application.EnableEvents = True
End Sub
Yok olmuyor. Ben mi yanlış yapıyorum acaba ?

Geliştirici sekmesinden vb'yi açıyoruz. Daha sonra bulunduğumuz sheete sağ tık ile insert module yapıyorum. kodu sayfaya yapıştırıyorum. F5 ile create diyerek yeni makro oluşturuyorum. daha sonra geliştiriciden bitane düğme ekleyip, oluşturduğum makroyu ona atıyorum. ve A1 hücresine değer girip düğmeye basarak çalıştırıyorum.

yaptıklarım bunlar hocam ama maalesef birşey olmuyor
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
10,378
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu kod modülden çalışan bir makro değil, Sayfa olaylarına bağlı olarak çalışan bir makro. Çalışması için kodları modüle değil sayfanın kod bölümüne yani sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya yapıştırın. A1 hücresini değiştirdiğinizde kodlar otomatik çalışacaktır.
 
Katılım
11 Haziran 2021
Mesajlar
4
Excel Vers. ve Dili
2016 tr
Peki bunu modül olarak nasıl yapabilirim. 200 girdiden oluşan bir sütunum var. Bunu her seferinde filtre veya ctrl+F5 ile bulmak yerine bu şekilde bir arama kutusu ve arama butonu yapmak istiyorum. hangi kodu kullanmam lazım
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
117
Excel Vers. ve Dili
Excel 2007
Peki bunu modül olarak nasıl yapabilirim. 200 girdiden oluşan bir sütunum var. Bunu her seferinde filtre veya ctrl+F5 ile bulmak yerine bu şekilde bir arama kutusu ve arama butonu yapmak istiyorum. hangi kodu kullanmam lazım
açıkcası bunu bende merak ediyorum yapılabilirmi diye
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
10,378
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Sayfanıza Activex denetimlerinden bir tetxbox ve commandbutton ekleyin (Adlarının TextBox1 ve CommandButton1 olduğunu kabul ediyorum). Sayfa adına sağ tıklayın ve kod görüntüle dedikten sonra açılan sayfaya aşağıdaki kodları yapıştırın Textbox' aranacak veriyi girip commandbuttona basın. C sütunundaki son dolu hücreye kadar arama yapıp, bulunanlar arasında dolaşacaktır:

PHP:
Private Sub CommandButton1_Click()
Dim c As Range, Adr As Variant, onay As String

If TextBox1 = "" Then Exit Sub

son = Cells(Rows.Count, "C").End(3).Row

With Range("C1:C" & son)
    Set c = .Find(TextBox1.Text, LookAt:=xlPart)
    If Not c Is Nothing Then
        Adr = c.Address
        Do
            c.Offset(0, 0).Select
            onay = MsgBox("Tamam/Devam (Aramaya devam etmek için Evet'i seçiniz)", vbQuestion + vbYesNo, "Dikkat!")
            If onay = vbNo Then Exit Sub
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> Adr
    End If
End With

Set c = Nothing
End Sub
 

balanar

Altın Üye
Katılım
22 Şubat 2021
Mesajlar
117
Excel Vers. ve Dili
Excel 2007
Yusuf hocamızın verdiği kodlarla şu şekilde uygulanacak yanlışım yoksa?

son = Cells(Rows.Count, "C").End(3).Row

buradaki 3 c sutunu 3.sırada oldugu için mi başka bir anlam mı ifade ediyor hocam?
 

Ekli dosyalar

Son düzenleme:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
10,378
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Hayır, C sütununu zaten C olarak belirtmiştim. Ordaki 3 End fonksiyonunun türünü belirtiyor. End(3) bulunulan hücreden CTRL+Üst tuşları ile hareket etmek anlamını taşıyor.

Cells(rows.count, "C") ifadesi C sütunundaki son yani en alt hücredemektir. Örneğin 2007 ve sonrası versiyonlarda C1048576 hücresidir.

End(3) ise bu hücredeyken CTRL+Üst ok yap demektir. Bunu manuel olarak deneyebilirsiniz. En alt hücreye gidin ve CTRL+Üst ok tuşlarına basın. Bu hareket sizi O sütundaki son dolu hücreye götürür. En son C100 hücresi doluysa imleç C100 hücresine gelir.

.Row ifadesi ise bu işlem sonucunda gelinen hücrenin satır numarasını verir.

Bu kod satırıyla son dolu hücrenin satır numarasını buluyoruz ki daha sonraki işlemlerde arama alanını bu hücreyle sınırlandıralım, boş yere daha aşağılarda aramayalım.
 
Üst