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
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
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?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
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.
 
Katılım
21 Temmuz 2023
Mesajlar
16
Excel Vers. ve Dili
2019 Türkçe
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
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
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
 
Katılım
21 Temmuz 2023
Mesajlar
16
Excel Vers. ve Dili
2019 Türkçe
Teşşekkür ederim. Elinize sağlık
 
Üst