kodu private sub yapmak ve iki private sub'u birleştirmek

Katılım
18 Nisan 2005
Mesajlar
62
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
08/03/2022
elimde aşağıdaki makro var

Sub toplasay()
Toplam = 0
For sutun = 3 To 6
For Satir = 10 To 21
If Cells(Satir, sutun) <> Empty Then
For b = 1 To Len(Cells(Satir, sutun))
If IsNumeric(Mid(Cells(Satir, sutun), b, 1)) = True Then
Say = Say + 1
Toplam = Toplam + Mid(Cells(Satir, sutun), b, 1)
End If
Next b
End If
Next Satir
Next sutun
Range("c22") = Say
Range("d22") = Toplam

End Sub

bunu private sub yaparak otomatikleştirmek istiyorum fakat aynı sayfa için de aşağıdaki private sub var her ikisini de birleştirip nasıl çalıştırabilirim

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [a3]) Is Nothing Then Exit Sub
kisiler
End Sub [ (a3) değişince kisiler makrosunu çalıştırıyor]
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Belirttiğiniz kod modül kodu. Private sub kodları bir hücre için kullanılır. Sizin sorunuzda aralıkdan bahsettiği için cevap yazmamıştım.
 
Katılım
18 Nisan 2005
Mesajlar
62
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
08/03/2022
sayın askm bu kod zaten sizin kodunuz ben bunu modül kodundan çıkarıp aşağıdaki gibi yapınca da çalışıyor problem diğer private sub ile aynı anda çalıştırmak

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Toplam = 0
For sutun = 3 To 6
For Satir = 10 To 21
If Cells(Satir, sutun) <> Empty Then
For b = 1 To Len(Cells(Satir, sutun))
If IsNumeric(Mid(Cells(Satir, sutun), b, 1)) = True Then
Say = Say + 1
Toplam = Toplam + Mid(Cells(Satir, sutun), b, 1)
End If
Next b
End If
Next Satir
Next sutun
Range("c22") = Say
Range("d22") = Toplam

End Sub
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Bu şekilde kod hangi hücreye dokunsanız çalışacak. Belli bir süre sonra işin içinden çıkılmaz olacak.
 
Katılım
18 Nisan 2005
Mesajlar
62
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
08/03/2022
bu topla say kodunu fonksiyona çeviremez miyiz
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Aşağıdaki şekilde function yapılabilir.
Kullanımı;
=askm_toplasay(ilksutun,sonsutun,ilksatir ,sonsatir)
Kod:
Function askm_toplasay(ilksutun As Long, sonsutun As Long, ilksatir As Long, sonsatir As Long)
Toplam = 0
For sutun = ilksutun To sonsutun
For Satir = ilksatir To sonsatir
If Cells(Satir, sutun) <> Empty Then
For b = 1 To Len(Cells(Satir, sutun))
If IsNumeric(Mid(Cells(Satir, sutun), b, 1)) = True Then
Say = Say + 1
Toplam = Toplam + Mid(Cells(Satir, sutun), b, 1)
End If
Next b
End If
Next Satir
Next sutun
askm_toplasay= Say & "-" & Toplam
End Function
Tabi for each ile seçilen alan şeklinde de yapılabilir.
 
Katılım
18 Nisan 2005
Mesajlar
62
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
08/03/2022
bu functionu çalıştıramadım değer veriyor
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
=askm_toplasay(1,4,1,30) şeklinde yazdınız mi. 1. Sütundan 4. Sütuna kadar, 1. Satırdan 30. Satıra kadar.
 
Katılım
18 Nisan 2005
Mesajlar
62
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
08/03/2022
evet yaptım fonksiyonu yazdığımız hücre içine f2-enter yapınca güncelliyor , otomatik hesaplamıyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,992
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Fonksiyonun ikinci satırına aşağıdaki satırı ekleyip deneyiniz.

Kod:
Application.Volalite True
 
Üst