Задача оказалась чуть более сложнее, так как в расчетах участвует валюта.
Макрос распределяет ГТД на оплаты, мне же нужно оплаты распределить на ГТД, с учетом того, что пошлина фиксированная по курсу на дату оплаты. И хотелось бы, чтобы в крайней правой колонке G и D в примере текстом было написано какой платеж и в какой сумме пошел на части ГТД.
Код |
---|
Next
For nRow = 1 To RngPay_.Rows.Count
RngPay_.Cells(nRow, 4).Value = _
RngPay_.Cells(nRow, 3).Value
RngPay_.Cells(nRow, 5).Value = ""
Next
End Sub
Private Sub ClearDeclStores_()
Dim nRow As Long
For nRow = 1 To RngCosts_.Rows.Count
RngCosts_.Cells(nRow, 3).Offset(0, 1).ClearContents
Next
End Sub
Private Sub Process_()
Dim nRowCost As Long
Dim nRowPay As Long
Dim fValue As Double
Dim sText As String
nRowCost = 1
nRowPay = 1
Do While (nRowCost <= RngCosts_.Rows.Count) And (nRowPay <= RngPay_.Rows.Count)
If RngCosts_.Cells(nRowCost, 4) > RngPay_.Cells(nRowPay, 4) Then
fValue = RngPay_.Cells(nRowPay, 4)
RngPay_.Cells(nRowPay, 4) = 0
RngCosts_.Cells(nRowCost, 4) = RngCosts_.Cells(nRowCost, 4) - fValue
Else
fValue = RngCosts_.Cells(nRowCost, 4)
RngCosts_.Cells(nRowCost, 4) = 0
RngPay_.Cells(nRowPay, 4) = RngPay_.Cells(nRowPay, 4) - fValue
End If
sText = RngCosts_.Cells(nRowCost, 2)
If (fValue <> RngCosts_.Cells(nRowCost, 3)) Then
sText = sText & "=" & Format(fValue, "0")
End If
If RngPay_.Cells(nRowPay, 5) <> "" Then
RngPay_.Cells(nRowPay, 5).Value = RngPay_.Cells(nRowPay, 5).Value & ","
End If
RngPay_.Cells(nRowPay, 5) = RngPay_.Cells(nRowPay, 5) & sText
If (RngPay_.Cells(nRowPay, 4) = 0) Then nRowPay = nRowPay + 1
If (RngCosts_.Cells(nRowCost, 4) = 0) Then nRowCost = nRowCost + 1
Loop
End Sub
Private Function RngCosts_() As Excel.Range
Set RngCosts_ = ThisWorkbook.Names("rngCosts").RefersToRange
End Function
Private Function RngPay_() As Excel.Range
Set RngPay_ = ThisWorkbook.Names("rngPayments").RefersToRange
End Function
|