Сумма значений в каждом втором столбце - PullRequest
0 голосов
/ 16 июня 2020

Таблица 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...