Bir Fatura İle İlgili Alınan Ödemelerin Macro'yla Listelenmesi
Excel'de bir dosya veya fatura ile ilgili alınan ödemelerin listelenmesi ile ilgili Macro kodu aşağıdadır.
Bu kod, ilgili sayfanın kod kısmına yazılıyor.
------------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then 'B1 hücresi değiştiyse
'Ödemeler sayfasında son satır no bulunuyor.
'Ödemeler sayfasında son satır no bulunuyor.
n = WorksheetFunction.CountA(Sheets("Ödemeler").Range("A:A")) + 1
c = 5
i = 14
imax = 50
sayac = 1
Aranan = Range("B1")
ActiveSheet.Unprotect 'Sayfanın koruması kaldırılıyor.
Range(Cells(1, c - 1), Cells(imax, c + 2)).Clear
Cells(i - 2, c) = Aranan & " Ödemeleri"
Cells(i - 1, c + 0) = "Ödeme Tarihi"
Cells(i - 1, c + 1) = "Makbuz No"
Cells(i - 1, c + 2) = "Ödeme Tutarı"
Range(Cells(i - 2, c - 1), Cells(i - 1, c + 2)).Font.Bold = True
Range(Cells(i, c), Cells(imax, c)).NumberFormat = "dd.mm.yyyy"
imin = i
c = 5
i = 14
imax = 50
sayac = 1
Aranan = Range("B1")
ActiveSheet.Unprotect 'Sayfanın koruması kaldırılıyor.
Range(Cells(1, c - 1), Cells(imax, c + 2)).Clear
Cells(i - 2, c) = Aranan & " Ödemeleri"
Cells(i - 1, c + 0) = "Ödeme Tarihi"
Cells(i - 1, c + 1) = "Makbuz No"
Cells(i - 1, c + 2) = "Ödeme Tutarı"
Range(Cells(i - 2, c - 1), Cells(i - 1, c + 2)).Font.Bold = True
Range(Cells(i, c), Cells(imax, c)).NumberFormat = "dd.mm.yyyy"
imin = i
For r = 2 To n
If Sheets("Ödemeler").Cells(r, 1) = Aranan Then 'Her bir satırın 1 kolon değeri aranana eşitse
Cells(i, c - 1) = sayac
Cells(i, c + 0) = Sheets("Ödemeler").Cells(r, 4) 'Ödeme Tarihi
Cells(i, c + 1) = Sheets("Ödemeler").Cells(r, 5) 'Makbuz No
Cells(i, c + 2) = Sheets("Ödemeler").Cells(r, 6) 'Ödeme Tutarı
i = i + 1
sayac = sayac + 1
End If
Next r
Cells(i, c - 1) = sayac
Cells(i, c + 0) = Sheets("Ödemeler").Cells(r, 4) 'Ödeme Tarihi
Cells(i, c + 1) = Sheets("Ödemeler").Cells(r, 5) 'Makbuz No
Cells(i, c + 2) = Sheets("Ödemeler").Cells(r, 6) 'Ödeme Tutarı
i = i + 1
sayac = sayac + 1
End If
Next r
imax = i
Cells(imax, c - 1) = "Toplam"
Cells(imax, c - 1) = "Toplam"
Cells(imax, c + 2) = WorksheetFunction.Sum(Range(Cells(imin, c + 2), Cells(imax, c + 2)))
Range(Cells(imax, c - 1), Cells(imax, c + 2)).Font.Bold = True
ActiveSheet.Protect 'Sayfa yeniden korunuyor.
End If
Range(Cells(imax, c - 1), Cells(imax, c + 2)).Font.Bold = True
ActiveSheet.Protect 'Sayfa yeniden korunuyor.
End If
End Sub
------------------------------------------------------------------------------------------------------------------------
Sorgulamanın Yapıldığı Sayfa
Sorgulanan Ödemelerin Sayfası