• DİKKAT

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

Makro Formül Hatası

Katılım
21 Temmuz 2023
Mesajlar
16
Excel Vers. ve Dili
2019 Türkçe
İyi günler. Yazdığım formüle "Y" sütununda hücre değeri 1 olan satırlara hesaplanan değeri yazdırmak istiyorum. Ancak sadece hücre değeri 1 olan ilk satıra yazıyor. Diğer hücre değeri 1 olan satırlara. yazmıyor. Yardım edebilirseniz sevinirim. Şimdiden teşekkür ederim.
Sub AylikTuatar(Optional satirNo As Long)
Dim AyGün, FarkGün, MaKt, MaKtF As Integer

AyGün = Sheets("Bordro").Range("A3").Value
FarkGün = Sheets("Bordro").Range("A5").Value
MaKt = Sheets("Ayar").Range("C3").Value
MaKtF = Sheets("Ayar").Range("D3").Value

For i = 12 To Range("Y65536").End(3).Row
If Cells(i, "Y").Value = 1 Then
strA = BORDRO_ILKSTR
If Sheets("Bordro").Range("A1").Value = "Maaş" And Cells(strA + 3, ACİK_SUTUN).Value = "" Then
AyTtr = WorksheetFunction.Round((MaKt * Cells(strA + 4, 5)), 2)
End If

If AyTtr >= 0 Then
Cells(strA, BİR_SUTUN).Value = AyTtr
End If
End If
Next
MsgBox "TÜM PERSONELİN AYLIKLARI HESAPLANDI."
End Sub
 
Kod:
strA = BORDRO_ILKSTR

If Sheets("Bordro").Range("A1").Value = "Maaş" And Cells(strA + 3, ACİK_SUTUN).Value = "" Then

BORDRO_ILKSTR ve ACİK_SUTUN nedir?
 
If AyTtr >= 0 Then bu koşul sadece 1. satırda sağlanıyor demek ki.

Dosyanızı paylaşırsanız daha hızlı ve doğru yanıt alırsınız.
Dosyanızı dosya.tc gibi bir paylaşım sitesine ekleyebilirsiniz.
 
Sub AylikTuatar(Optional satirNo As Long)
Dim AyGün, FarkGün, MaKt, MaKtF As Integer

AyGün = Sheets("Bordro").Range("A3").Value
FarkGün = Sheets("Bordro").Range("A5").Value
MaKt = Sheets("Ayar").Range("C3").Value
MaKtF = Sheets("Ayar").Range("D3").Value

For i = 12 To Range("Y65536").End(3).Row
If Cells(i, "Y").Value = 1 Then
strA = 12 '12.Satırdan sonra başlıyor hesaplamalar

If Sheets("Bordro").Range("A1").Value = "Maaş" And Cells(strA + 3, 1).Value = "" Then
AyTtr = WorksheetFunction.Round((MaKt * Cells(strA + 4, 5)), 2)
End If

If AyTtr >= 0 Then
Cells(strA, 8).Value = AyTtr
End If
End If
Next
MsgBox "TÜM PERSONELİN AYLIKLARI HESAPLANDI."
End Sub
 
Kod:
If Cells(i, "Y").Value = 1 Then
    strA = 12
Şart yerine geldiğinde satırı yine 12 yaptırıyorsunuz.
Yukarıda bunlar ne sormamın sebebi, buralardan yanlış değerler geldiğini düşünmemdi.
strA gereksiz. Zaten for döngüsünde i ile satır var.

Kod:
Sub AylikTuatar(Optional satirNo As Long)
Dim AyGün, FarkGün, MaKt, MaKtF As Integer

AyGün = Sheets("Bordro").Range("A3").Value
FarkGün = Sheets("Bordro").Range("A5").Value
MaKt = Sheets("Ayar").Range("C3").Value
MaKtF = Sheets("Ayar").Range("D3").Value
    For i = 12 To Range("Y65536").End(3).Row
        If Cells(i, "Y").Value = 1 Then
            If Sheets("Bordro").Range("A1").Value = "Maaş" And Cells(i + 3, 1).Value = "" Then
                AyTtr = WorksheetFunction.Round((MaKt * Cells(i + 4, 5)), 2)
            End If
            If AyTtr >= 0 Then
                Cells(i, 8).Value = AyTtr
            End If
        End If
    Next
    MsgBox "TÜM PERSONELİN AYLIKLARI HESAPLANDI."
End Sub
 
Teşşekkür ederim. Elinize sağlık
 
Geri
Üst