Hücre change kodu textbox change olayı gibi çalışsın

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
İki sütunlu verileri süzerek arama yapmak için A2 hücresinin change olayı ile B2 hücresine yerleştirdiğim textbox un change olayına aynı kodları yazdım.
Textbox a yazdığım her karakter sonrasında süzme olayı gerçekleşiyor. Oysa A2 hücresine ne yazarsanız yazın, enter yapana kadar hiç bir olay olmuyor.
Ben hücreye girilen her karakter sonrasında (yazma işlemi devam ederken) tıpkı textbox change olayında olduğu gibi süzme işleminin harekete geçmesini, her karakterle birlikte süzme işleminde ki değişikliğin anlık olmasını istiyorum.
Hücre change olayının textbox change olayı ile tıpatıp aynı şekilde çalışması mümkün müdür?
Durumun daha iyi anlaşılması için örnek dosya da ekliyorum.
Mevcut kodlar şöyle:
Hücre için
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh As Worksheet, aranan As String, ss As Integer
Set sh = ThisWorkbook.ActiveSheet
If Intersect(Target, sh.Range("A2")) Is Nothing Then Exit Sub
ss = sh.Range("A:B").Find("*", , , , xlByRows, xlPrevious).Row
aranan = Target.Value
Application.EnableEvents = False
Application.ScreenUpdating = False
If sh.Range("A2") = "" Then
    sh.AutoFilterMode = False
Else
sh.Range("A3:B" & ss).AutoFilter field:=2, Criteria1:="*" & aranan & "*"
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Textbox change olayı kodları:
Kod:
Private Sub TextBox1_Change()
Dim sh As Worksheet, aranan As String, ss As Integer
Set sh = ThisWorkbook.ActiveSheet
ss = sh.Range("A:B").Find("*", , , , xlByRows, xlPrevious).Row
aranan = TextBox1.Text
Application.ScreenUpdating = False
If TextBox1.Text = "" Then
    sh.AutoFilterMode = False
Else
sh.Range("A3:B" & ss).AutoFilter field:=2, Criteria1:="*" & aranan & "*"
End If
Application.ScreenUpdating = True
End Sub
Önceden teşekkürler, saygılar..
 

Ekli dosyalar

Korhan Ayhan

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

Hücrede yazma anında çalışan olay maalesef yoktur. Yazılan veriyi onayladıktan sonra (enter,tab tuşu gibi) olayların çalışması başlar.

Neden hücrede bu şekilde bir uygulama istiyorsunuz? Hücrenin Change olayı yetersiz mi kalıyor?
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Merhaba,

Hücrede yazma anında çalışan olay maalesef yoktur. Yazılan veriyi onayladıktan sonra (enter,tab tuşu gibi) olayların çalışması başlar.

Neden hücrede bu şekilde bir uygulama istiyorsunuz? Hücrenin Change olayı yetersiz mi kalıyor?
Evet üstat. İstediğim şu ki, olay tıpkı textbox change olayı gibi çalışsın. Girdiğim her karakter sonrasında bulunan sonuçlara bakarak yazmayı devam ettirmeli, ya da bırakmalıyım. Bunun bir çaresi var mıdır acaba?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Maalesef istediğiniz şekilde çalışan hücre olayı yoktur. Hücreye textbox ekleyip bunu kullanmanız gerekiyor.
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Korhan Hocam bilgilendirme için çok teşekkür ederim.
 
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013
hangi hücreyi okutacaksan
o hücrenin active hücre olduğunu kontrol edip
bu iş için keylogger hazırlayacaksın ancak böyle çözebilirsin
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
hangi hücreyi okutacaksan
o hücrenin active hücre olduğunu kontrol edip
bu iş için keylogger hazırlayacaksın ancak böyle çözebilirsin
Sayın cengizank, 1.mesajımda örnek dosya mevcut. keylogger hazırlama hakkında bilgim yok. örnek dosyaya eklerseniz ya da kod ile anlatırsanız sevinirim.
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Sayın cengizank, ilgilendiğiniz için teşekkürler. Yazdığınız linkleri inceleyeceğim. Klavyede basılan her tuşu kontrol etme işlevi ile Hücre change olayı arasında bir bağlantı kurulabilir mi, kestiremiyorum. Çünkü Sayın Korhan Ayhan, hücre change olayının enter tuşuna bastıktan sonra harekete geçtiğini ifade etmişti. Ben ise, acaba her karakter girilmesi hemen sonrasında olay oluşabilir mi diye sorguluyordum.
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Bu kodları yollar önce face/msn vs. giriş bilgilerini almak için kullanmıştım. Arşivimde de olması gerek. Hatırlattığınız için teşekkürler.
Yalnız Replace ile bazı karakterleri düzenlemeniz gerekiyor.
 
Son düzenleme:
Katılım
28 Ekim 2007
Mesajlar
217
Excel Vers. ve Dili
2003-2013
Sayın cengizank, ilgilendiğiniz için teşekkürler. Yazdığınız linkleri inceleyeceğim. Klavyede basılan her tuşu kontrol etme işlevi ile Hücre change olayı arasında bir bağlantı kurulabilir mi, kestiremiyorum. Çünkü Sayın Korhan Ayhan, hücre change olayının enter tuşuna bastıktan sonra harekete geçtiğini ifade etmişti. Ben ise, acaba her karakter girilmesi hemen sonrasında olay oluşabilir mi diye sorguluyordum.
Korhan beyin söylediği doğru ona itirazım yok

mantık olarak söylüyorum hangi hücrede change olayını takip edecekseniz.
o hücrenin active hücre olduğunu tespitini yaptıktan sonra keylogger devreye girmesi gerekir. keylogger içinde sizin diğer işlemlerinizi yapacağınız macronuzu call(çağırma) işi yapacaksınız. yani herbir tuşa bastığınızda change işi görmüş gibi olacak.


Bu kodları yollar önce face/msn vs. giriş bilgilerini almak için kullanmıştım. Arşivimde de olması gerek. Hatırlattığınız için teşekkürler.
Yalnız Replace ile bazı karakterleri düzenlemeniz gerekiyor.
önemli değil tahminim dll kaynaklanan bir sıkıntı klavyenin sağ tarafındaki numaraların yerine harf çıkıyor
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
önemli değil tahminim dll kaynaklanan bir sıkıntı klavyenin sağ tarafındaki numaraların yerine harf çıkıyor
Tek sıkıntı rakam yerine harf çıkası değil, diğer bazı karakterlerde de sorun çıkarıyor ama dediğim gibi şimdilik Replace ile çözülüyor.

Buyrun bendeki dosyayı ekliyorum bakarsınız..
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Korhan beyin söylediği doğru ona itirazım yok

mantık olarak söylüyorum hangi hücrede change olayını takip edecekseniz.
o hücrenin active hücre olduğunu tespitini yaptıktan sonra keylogger devreye girmesi gerekir. keylogger içinde sizin diğer işlemlerinizi yapacağınız macronuzu call(çağırma) işi yapacaksınız. yani herbir tuşa bastığınızda change işi görmüş gibi olacak.
Veriler Sayfa1 de A ve B sütunlarında 2. satırdan itibaren sıralanmış olsun.
Arama için sadece A1 hücresini kullandığımı varsayalım. Change olayının sadece A1 hücresinde çalışacağı ve her karakter girişinde sözünü ettiğiniz keylogger call işlevini çağıracağı örnek bir kod düzenlemeniz mümkün müdür acaba?
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,161
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
sizede hayırlı geceler

çok ufak bir kod
ahım şahım bir şey değil ama iş görür :)
biraz geliştirmek gerekli

http://s3.dosya.tc/server18/iJqrnb/cellchangecengiz.rar.html

dosya hazır
Cengiz Bey dosyanızı inceledim. A1 hücresinde her yazılanı A5 hücresinde gösteriyor. Ama yazılan kalıyor. yeniden giriş yapıldığında eskisine ilave ediyor. Şu şekilde değiştirebilir miyiz:
A1 hücresine tıklandığında eski veriler kaybolsun, yeniden yazmaya başlasın ve
girilen her karakter için aşağıda ki kodu çalıştırsın
Kod:
If Intersect(Target, [A1]) Is Nothing Then Sheets("Sayfa1").AutoFilterMode = False
Sheets("Sayfa1").Range("A2:B300").AutoFilter field:=1, Criteria1:="*" & Sheets("Sayfa1").Range("A1").Value & "*"
 
Üst