• DİKKAT

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

Soru BİRDEN ÇOK Worksheet_Change kullanımı

Katılım
9 Aralık 2006
Mesajlar
134
Excel Vers. ve Dili
microsoft office professional plus 2010 TR
değerli üstatlarım; aşağıda ki kodda hata nerde birinci şart için kod çalışırken ikinci şart için kod çalışmıyor. Yardımcı olur musunuz.
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B9:B4000")) Is Nothing Then Exit Sub
Call DÖNÜŞTÜR
If Intersect(Target, Range("CX8")) Is Nothing Then Exit Sub
Call TOPLA
End Sub
 
Merhaba.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B9:B4000")) Is Nothing Then
        Call DÖNÜŞTÜR
    ElseIf Not Intersect(Target, Range("CX8")) Is Nothing Then
        Call TOPLA
    End If
End Sub
 
Merhaba.
Bunu da denedim lakin 2. kodu çalıştırmıyor. 2 kod manuel çalışıyor lakin change olayıyla tetiklenmiyor.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B9:B4000")) Is Nothing Then
        Call DÖNÜŞTÜR
    ElseIf Not Intersect(Target, Range("CX8")) Is Nothing Then
        Call TOPLA
    End If
End Sub
 
Aşağıdaki kodu yeniden deneyin.
Mesajların çalıştığını göreceksiniz.
Sorun muhtemelen DÖNÜŞTÜR ve TOPLA kodlarında olmalı.

Eğer sorunu bulamazsanız dosyanızı ekleyin kontrol edelim.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B9:B4000")) Is Nothing Then
        MsgBox "DÖNÜŞTÜR çalışacak."
        Call DÖNÜŞTÜR
    ElseIf Not Intersect(Target, Range("CX8")) Is Nothing Then
        MsgBox "TOPLA çalışacak."
        Call TOPLA
    End If
End Sub
 
Aşağıdaki kodu yeniden deneyin.
Mesajların çalıştığını göreceksiniz.
Sorun muhtemelen DÖNÜŞTÜR ve TOPLA kodlarında olmalı.

Eğer sorunu bulamazsanız dosyanızı ekleyin kontrol edelim.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B9:B4000")) Is Nothing Then
        MsgBox "DÖNÜŞTÜR çalışacak."
        Call DÖNÜŞTÜR
    ElseIf Not Intersect(Target, Range("CX8")) Is Nothing Then
        MsgBox "TOPLA çalışacak."
        Call TOPLA
    End If
End Sub

kusura bakmayın benim izah konusunda bir hatam var. Aslında kodlarınız çalışıyor.
CX8 hücresi CN9;CW.... hücrelerindeki değerlerin toplamına göre değişiyor çalışmama sebebi bu imiş.
Benim işim son satırdaki cn ve cw sutunları arasında bir değer değişince çalışan bir change olayı.
 
Soruyu tekrar sorar mısınız?
Hangi hücrelerde değişiklik yaptığınızda hangi kodlar çalışsın?
 
Kodlara bakarak aslında çözebileceğiniz bir konu bu.

If Not Intersect(Target, Range("B9:B4000")) Is Nothing Then

Satırında B9 ile B4000 arasında bir değişiklik olduğunda çalışıyorsa siz burada B9:B4000 kısmını değiştirmeniz gerekiyor

B9:B4000 yerine
CN9:CW4000 yazabilirsiniz.

Satır sınırlaması olmadan tüm satırlarda çalışmasını isterseniz
CN:CW yazmalısınız.
 
Son düzenleme:
Kodlara bakarak aslında çözebileceğiniz bir konu bu.

If Not Intersect(Target, Range("B9:B4000")) Is Nothing Then

Satırında B9 ile B4000 arasında bir değişiklik olduğunda çalışıyorsa siz burada B9:B4000 kısmını değiştirmeniz gerekiyor

B9:B4000 yerine
CN9:CW4000 yazabilirsiniz.

Satır sınırlaması olmadan tüm sütunlarda çalışmasını isterseniz
CN:CW yazmalısınız.
bazen çözüm çok basit olabiliyor çözümsüz yapan belki olmazı istemiş olmam son satır için çalışsın istemiştim buda işi görür .Teşekkürler
 
Sadece ilk boş hücrede çalışması için.

Kod:
Dim Son As Long

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("CN" & Son & ":CW" & Son)) Is Nothing Then
        Call DÖNÜŞTÜR
    ElseIf Not Intersect(Target, Range("CX8")) Is Nothing Then
        Call TOPLA
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Son = Cells(Rows.Count, Target.Column).End(xlUp).Row + 1
End Sub

Sadece son dolu hücrede çalışmasını isterseniz "+ 1" i silin
 
Geri
Üst