• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,166
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

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?
 
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?
 
Maalesef istediğiniz şekilde çalışan hücre olayı yoktur. Hücreye textbox ekleyip bunu kullanmanız gerekiyor.
 
Korhan Hocam bilgilendirme için çok teşekkür ederim.
 
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
 
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.
 

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.
 

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:
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
 
ö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

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?
 
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 & "*"
 
Geri
Üst