Таблица Excel подготовлена для создания графика платежей для отображения текущих и предыдущих платежей. Цель наличия макроса - позволить пользователю иметь минимальный ввод в документ, то есть вводимые пользователем данные должны ввести номер претензии и сумму этой претензии (текущая поданная претензия). После ввода этой информации пользователь запускает макрос, используя кнопку, и в зависимости от значения номера претензии копируется в соответствующую историю претензий и суммируется до общей суммы и предыдущего платежа. Кажется, все работает идеально, за исключением случаев, когда пользователь запускает макрос, не меняя претензию, нет предыдущего платежа, и общие значения платежа продолжают расти. Другими словами, стоимость последней претензии добавляется к общей сумме платежа, а претензия перед последней добавляется к предыдущему платежу. Мне нужна помощь, чтобы остановить макрос и сообщить пользователю, что претензия «нет» не изменена. Это помогает избежать неправильной общей суммы платежа и предыдущей суммы платежа.
Пример: Допустим, претензия 1 составила 1000 долларов, а претензия 2 - 2000 долларов. Если претензия № в B5 равна 2, 2000 долларов из столбца A (эта претензия) копируются в претензию 2 в истории претензий. Затем значения 1000 долларов США (претензия 1) в истории претензий, скопированные в предыдущий платеж, и значения (1000 долларов США + 2000 долларов США) в претензиях 1 и 2 в истории претензий суммируются в общем платеже. Если пользователь запускает макрос, не изменяя номер претензии в ячейке B5 2–3, предыдущий платеж увеличивается на 1000 долларов, а общий платеж увеличивается на 2000 долларов.
Sub SubContractorClaim()
Dim i As Integer, lastcol As Long, j As Integer, total As Double, lastrow As Long, ClaimNo As
Integer, k As Integer, lastrow2 As Long, total2 As Double, WSR As Worksheet, l As Integer
Set WSR = Worksheets("Return of Works")
lastcol = WSR.Cells(5, Columns.Count).End(xlToLeft).Column + 5
lastrow = WSR.Cells(Rows.Count, 1).End(xlUp).Row
lastrow2 = WSR.Cells(Rows.Count, 7).End(xlUp).Row
ClaimNo = WSR.Range("B5")
For i = 12 To lastrow
For j = 6 To lastcol Step 2
If WSR.Cells(5, j).Value = ClaimNo Then
WSR.Cells(i, j).Value = WSR.Cells(i, 1)
total = WSR.Cells(i, 3)
If WSR.Cells(5, j).Value <= ClaimNo Then
total = total + WSR.Cells(i, j)
End If
total2 = WSR.Cells(i, 2)
If ClaimNo > 1 And WSR.Cells(5, j).Value = ClaimNo Then
total2 = total2 + WSR.Cells(i, j - 2)
End If
End If
Next j
WSR.Cells(i, 3).Value = total
WSR.Cells(i, 2).Value = total2
If WSR.Cells(i, 2) = 0 Then
WSR.Cells(i, 2) = ""
End If
If WSR.Cells(i, 3) = 0 Then
WSR.Cells(i, 3) = ""
End If
Next i
End Sub
![enter image description here](https://i.stack.imgur.com/o8ORx.png)