hücreye yazılan sayının üzerine otomatik toplama

Katılım
12 Mart 2008
Mesajlar
24
Excel Vers. ve Dili
2007
Sayın Arkadaşlar,

aşagıdaki kodu aynı sayfadaki bir çok hücreye nasıl uyguluyabilirim.
teşekkürler

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Static dAccumulator As Double
With Target
If .Address(False, False) = "A1" Then
If Not IsEmpty(.Value) And IsNumeric(.Value) Then
dAccumulator = dAccumulator + .Value
Else
dAccumulator = 0
End If
Application.EnableEvents = False
.Value = dAccumulator
Application.EnableEvents = True
End If
End With
End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki şekilde A1:B20 aralığındaki her hücrede çalıştırabilirsiniz. Siz, bu aralığı kodlarda kırmızı olarak belirttiğim kısımda değişiklik yaparak revize edebilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Static dAccumulator As Double
    
    If Not Intersect(Target, Range("[B][COLOR=red]A1:B20[/COLOR][/B]")) Is Nothing Then
        
        With Target
            
            If Not IsEmpty(.Value) And IsNumeric(.Value) Then
                dAccumulator = dAccumulator + .Value
            Else
                dAccumulator = 0
            End If
            
            Application.EnableEvents = False
           .Value = dAccumulator
            Application.EnableEvents = True
        
        End With
    
    End If
End Sub
 
Katılım
12 Mart 2008
Mesajlar
24
Excel Vers. ve Dili
2007
Çok teşekkür ederim ilginize fakat çalışmıyor kullanmak istediğim yer stok çalışması daha önce girilmiş sayının üzerine toplaması gerekiyor.
 
Katılım
12 Mart 2008
Mesajlar
24
Excel Vers. ve Dili
2007
İlginize çok teşekkür edrim ama çalışmıyor daha önce hücrenin üzerine yazılmış sayının üstüne toplaması gerekiyor
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

Kod:
Dim dAccumulator As Double
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 
    If Not Intersect(Target, Range("A1:B20")) Is Nothing Then
 
        With Target
 
            If Not IsEmpty(.Value) And IsNumeric(.Value) Then
                dAccumulator = dAccumulator + .Value
            Else
                dAccumulator = 0
            End If
 
            Application.EnableEvents = False
           .Value = dAccumulator
            Application.EnableEvents = True
 
        End With
 
    End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
dAccumulator = Target
End Sub
 
Katılım
12 Mart 2008
Mesajlar
24
Excel Vers. ve Dili
2007
Çok harika oldu çok teşekkür ederim. kusuruma bakmazsanız bunun yanına ikinci veya üçüncü bir hücre dizisi nasıl ekleyebilirim
Teşekkür ederim
Saygılarımla,
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Hücre dizisi eklemek için ilgili satırı aşağıdaki gibi değiştirebilirsiniz. Örneğin burada sadece A1:A10 , C1:C10 ve D1: D10 aralıklarında işlem yapılacaktır.

Kod:
If Not Intersect(Target, Range("A1:A10,C1:C10,D1:D10")) Is Nothing Then
 
Katılım
12 Mart 2008
Mesajlar
24
Excel Vers. ve Dili
2007
Harikasınız, İlginiz ve yardım severliginiz için çok teşekkür ederim. Başarılar dilerim.
Sevgi ve Saygılarımla
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Rica ederim. Yardımcı olabildiysem ne mutlu bana.
 
Üst