Koşullu Private Sub Worksheet_Change(ByVal Target As Range)

Katılım
23 Şubat 2010
Mesajlar
90
Excel Vers. ve Dili
Excel 2007/ İngilizce
Herkese Merhaba,

Benim sorunum, eğer G sütununda içinde veri olan bitişik hücrelerden birinde değişim olması halinde eğer ki değişim olan satırın AM ve AK sütunlarında herhangi bir değer varsa hiç birşey yapılmaması.

Ancak eğer ilgili satırın (örn: 3. satır) AM ve AK sütunlarında değer yoksa bu sefer başka (benim belirlediğim) işlemi yapması..

Her ne kadar "Private Sub Worksheet_Change(ByVal Target As Range)" üzerinde çalışsam da çözüm üretemedim İlgili kodu aşağıda bulabilirsiniz..

Yardımlarınız için şimdiden teşekkürler :)

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, ActiveSheet.Range("G3", ActiveSheet.Range("G3"). _
End(xlDown))) And Intersect(Target, ActiveSheet.Range("AM3", ActiveSheet.Range("AM3"). _
End(xlDown))) And Intersect(Target, ActiveSheet.Range("AK3", ActiveSheet.Range("AK3"). _
End(xlDown))) Is Nothing Then Exit Sub

'Application.Run "Module1.atama"
Application.Run "Module1.guncel"
'Application.Run "Module1.tarih_duzelt"
End Sub
 
Katılım
23 Şubat 2010
Mesajlar
90
Excel Vers. ve Dili
Excel 2007/ İngilizce
Herkese Merhaba,

Burdan bir süre önce Worksheet_Change ile ilgili attığım mesaja cevap gelmediği ve ayrı bir konu başlığı tekrar açmamak için buradan devam ediyorum..

Tekrar benzeri bir sorunum var. Umarım bu sefer yardımcı olabilirsiniz. :)

Sorum ise eğer bir sayfada birden fazla sütundaki hücrelerin değişip değişmediğini takip ediyorsak nasıl bir kod ile bunu çalıştırabiliriz.

Ben aşağıda gördüğünüz gibi bir kod hazırladım ama malesef çalışmadı.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, ActiveSheet.Range("e3", ActiveSheet.Range("e65536"). _
End(xlUp))) Is Nothing Then Exit Sub
Application.Run "Module1.atama"
End Sub
Private Sub Worksheet_Change1(ByVal Target As Range)
If Intersect(Target, ActiveSheet.Range("f3", ActiveSheet.Range("f65536"). _
End(xlUp))) Is Nothing Then Exit Sub
Application.Run "Module1.atama"
End Sub
Şimdiden yardımlarınız için teşekkür ederim.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,748
Excel Vers. ve Dili
Excel 2019 Türkçe
Bunu deneyin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 7 Then Exit Sub
    If Cells(Target.Row, "am") <> Empty Or Cells(Target.Row, "ak") <> Empty Then Exit Sub
    MsgBox "merhaba"
End Sub
 
Katılım
23 Şubat 2010
Mesajlar
90
Excel Vers. ve Dili
Excel 2007/ İngilizce
Hamit Bey, hızlı cevabınız için teşekkür ederim. 2. mesajım ile ilgili fikrinizi de paylaşırsanız sevinirim.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,748
Excel Vers. ve Dili
Excel 2019 Türkçe
İkinci sorunuzu anlamadım.
 
Katılım
23 Şubat 2010
Mesajlar
90
Excel Vers. ve Dili
Excel 2007/ İngilizce
İkinci sorunuzu anlamadım.
Hamit Bey,

2. soruda ifade etmek istediğim şey şuydu: eğer E ya da F sütunlarından birinde bir değişiklik olması halinde "atama" ismini verdiğim bir kodun çalışmasını istiyorum.

Aslında sizin cevabınızı görene kadar şu şekilde bir çözüm buldum..

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Set y = Application.Union(ActiveSheet.Range("e3", ActiveSheet.Range("e65536"). _
End(xlUp)), ActiveSheet.Range("f3", ActiveSheet.Range("f65536").End(xlUp)))
 
If Intersect(Target, y) Is Nothing Then Exit Sub
Application.EnableEvents = False
Application.Run "Module1.atama"
Application.EnableEvents = True
End Sub
Fakat bu seferde başka bir problemle karşılaştım. Karşılaştığım sorun ise eğer E ya da F sütunlarında bir değişiklik yaparsam, excel donuyor..

"atama" ismini verdiğim kodun bu sorunu yarattığını farkettim. Oyüzden de Application.EnableEvents kodunu ekledim. Ancak hala ilgili sütunlarda değişiklik olması halinde çalışmam donuyor.. Bu konuda bir fikriniz olabilir mi?

Tekrar teşekkürler.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,748
Excel Vers. ve Dili
Excel 2019 Türkçe
Bu şekilde bir deneyin. Eğer sorun devam ederse, "ATAMA" isimli makroyu incelemek gerekecek.
Kod:
Application.EnableEvents = False
ATAMA
Application.EnableEvents = True
 
Katılım
27 Eylül 2010
Mesajlar
4
Excel Vers. ve Dili
ofis 2007 tr
slm arkadaşlar b1 hücresine isim girdiğimde c1 d1 e1 hücrelerini otomatik nasıl doldurabilirim makro ile ?
 
Katılım
1 Aralık 2014
Mesajlar
81
Excel Vers. ve Dili
ingilizce
Altın Üyelik Bitiş Tarihi
05/04/2019
c1 d1 e1 hücrelerine ne yazmasını istiyorsunuz?
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,154
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,
Hücreye direkt veri girmiyorum, Sayfada Listbox mevcut, bilindiği üzere Listbox' a tıklayınca (LinkedCell=$D$4) buradaki veriyi hücreye yazıyor, dolayıyla hücre değeri değişmiş oluyor; yalnız bu durumda (Worksheet_Change) kodu çalışmıyor, nasıl bir yol önerirsiniz?


Teşekkürler, iyi Çalışmalar.


Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

   Dim KeyCells As Range

    Set KeyCells = Range("D4:D5")
    
    
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        MsgBox "Cell " & Target.Address & " has changed."

End If


End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,137
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
ListBox nesnesinin Click olayını kullanmayı deneyiniz.
 
Üst