• DİKKAT

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

Makro yazımı

byfika

Altın Üye
Altın Üye
Katılım
15 Ağustos 2009
Mesajlar
512
Excel Vers. ve Dili
Excel Vers. ve Dili : Ofis 2016 Tr
Merhabalar, alttaki makro gelir gider kalan işlemi dolaylı yoldan yaptırmaktayım. Daha kısa ir şekilde yazılabilinir mi? (J,K ve L sütunları olmadan)
Bilgi için teşekkürler...

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2:C2500")) Is Nothing Then Exit Sub
s = Target.Row
Range("J1").Value = WorksheetFunction.Sum(Range("B2:B65536"))
Range("K1").Value = WorksheetFunction.Sum(Range("C2:C65536"))
Range("L1").Value = WorksheetFunction.Sum(Range("J1")) - WorksheetFunction.Sum(Range("K1"))
Cells(s, 4) = WorksheetFunction.Sum(Range("L1:L65536" & s))
End Sub
 
Merhaba,
Range("J1").Value yerine [J1]
Range("K1").Value yerine [K1]
[L1]=[J1]-[K1] yazabilirsiniz
diye biliyorum
İyi çalışmalar
 
Sayın Tevfik bey, teşekkürler....
 
Rica ederim
İyi çalışmalar
not: Cells(s, 4) = WorksheetFunction.Sum(Range("L1:L65536" & s)) bu satır görev yapmadı bende
 
Merhabalar, cevabınızı yeni gördüm. Örnek dosyayı ekliyorum.
Saygılarımla....
 

Ekli dosyalar

Merhabalar, alttaki makro gelir gider kalan işlemi dolaylı yoldan yaptırmaktayım. Daha kısa ir şekilde yazılabilinir mi? (J,K ve L sütunları olmadan)
Bilgi için teşekkürler...

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2:C2500")) Is Nothing Then Exit Sub
s = Target.Row
Range("J1").Value = WorksheetFunction.Sum(Range("B2:B65536"))
Range("K1").Value = WorksheetFunction.Sum(Range("C2:C65536"))
Range("L1").Value = WorksheetFunction.Sum(Range("J1")) - WorksheetFunction.Sum(Range("K1"))
Cells(s, 4) = WorksheetFunction.Sum(Range("L1:L65536" & s))
End Sub
Merhaba,
Aşağıdaki kodu deneyebilirsiniz...
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2:C2500")) Is Nothing Then Exit Sub
Dim s As Integer, btop As Double, ctop As Double
s = Target.Row
btop = WorksheetFunction.Sum(Range("B2:B65536"))
ctop = WorksheetFunction.Sum(Range("C2:C65536"))
Cells(s, 4) = btop - ctop
End Sub
 
Daha kısası değil ancak bana göre doğru olanı bu şekilde olmalı :)

Düzeltme: Bu kod gelir gider satırlarını otomatik toplamaktadır.
Resimde olduğu gibi 1. satıra toplamları aldırılabilir.

214883

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Selection.Count > 1 Then Exit Sub
  If Intersect(Target, Range("B2:C2500")) Is Nothing Then Exit Sub
  satir = Target.Row
  sonsatirb = Cells(Rows.Count, "B").End(3).Row
  sonsatirc = Cells(Rows.Count, "C").End(3).Row
  sonsatir = sonsatirc
  If sonsatirb > sonsatirc Then sonsatir = sonsatirb
  For i = 3 To sonsatir
     verib = Val(Cells(i, "B").Value)
     veric = Val(Cells(i, "C").Value)
     If i = 3 Then
        Cells(i, "D").Value = verib - veric
     Else
        Cells(i, "D").Value = Cells(i - 1, "D").Value + verib - veric
     End If
  Next i
  Cells(1, "B").Value = WorksheetFunction.Sum(Range("B3:B65536"))
  Cells(1, "C").Value = WorksheetFunction.Sum(Range("C3:C65536"))
  Cells(1, "D") = Cells(1, "B").Value - Cells(1, "C").Value
End Sub
 
Son düzenleme:
Merhabalar, Ömer ve Asri bey, Kodlar için teşekkürler. Her iki kodda çalışmakta. Asri beyin kodunun sadece kalan kısmında (B1, C1 ve D1 işlemleri doğru istenildiği gibi göstermekte) fakat D3:D65536 arasını tam sayı olarak göstermekte. Yani B3 ile C3 arasındaki farkın 5,20 olduğunu düşünülürse D1 de sayı 15,20 olduğu görülmekte D3 de ise 15 olarak yazmakta.
Yinede vermiş olduğunuz bilgi için Ömer ve Asri beylere çok çok teşekkürler.
Saygılarımla....
 
Merhabalar, Ömer ve Asri bey, Kodlar için teşekkürler. Her iki kodda çalışmakta. Asri beyin kodunun sadece kalan kısmında (B1, C1 ve D1 işlemleri doğru istenildiği gibi göstermekte) fakat D3:D65536 arasını tam sayı olarak göstermekte. Yani B3 ile C3 arasındaki farkın 5,20 olduğunu düşünülürse D1 de sayı 15,20 olduğu görülmekte D3 de ise 15 olarak yazmakta.
Yinede vermiş olduğunuz bilgi için Ömer ve Asri beylere çok çok teşekkürler.
Saygılarımla....

Aşağıdaki kodu,
verib = Val(Cells(i, "B").Value)
veric = Val(Cells(i, "C").Value)

Aşağıdaki şekilde yazıp deneyiniz.

verib = Cells(i, "B").Value
veric = Cells(i, "C").Value

Yazmış olduğum kodda her hangi bir satırda gelir yada giderde bir değişiklik yaptığınızda tüm KALAN satırlarını yeniden hesaplamaktadır.
 
Merhabalar, Asri bey, kodda vermiş olduğunuz bölümü değiştirince D3:D65536 arası da kuruşlu olarak problemsiz çalıştı. Çok teşekürler.
Saygılarımla...
 
Geri
Üst