• DİKKAT

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

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
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]
 
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.
 
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
 
Bu şekilde kod hangi hücreye dokunsanız çalışacak. Belli bir süre sonra işin içinden çıkılmaz olacak.
 
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.
 
=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.
 
evet yaptım fonksiyonu yazdığımız hücre içine f2-enter yapınca güncelliyor , otomatik hesaplamıyor
 
Merhaba,

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

Kod:
Application.Volalite True
 
Geri
Üst