Советы будут с благодарностью. Я занимаюсь разработкой электронной таблицы с использованием Excel 2016 / Windows.
Я написал 4 подпрограммы для обмена событиями, и все они работают хорошо. Код VBA для рабочего листа проверяет 4 события. События 1, 2 и 3 вводят сегодняшнюю дату в ячейку, если данные вводятся в другую ячейку (код не указан ниже)
Код для EventChange работает нормально, но иногда работает, когда этого не ожидается!
EventChange4 перемещает значение из одной ячейки в другую, если другая ячейка содержит текст в столбце J «ЭТОТ МЕСЯЦ - Срок платежа» или «Выпущено, но не оплачено». Вторая часть этого события exchange4 перемещает нулевое значение в 2 ячейки, если данные в столбце j содержат текст "не идет вперед"
Я новичок в VBA. Проблема в том, что eventchange4 запускается без видимой причины, например, копирование значения ячейки в столбце H в другую ячейку в столбце ч. Как я могу изменить код так, чтобы eventchange4 запускался только при изменении данных в столбце J? Все советы с благодарностью приняты !!!!
Private Sub Worksheet_Change(ByVal Target As Range)
Call EventChange_1(Target)
Call EventChange_2(Target)
Call EventChange_3(Target)
Call EventChange_4(Target)
End Sub
Sub EventChange_1(ByVal Target As Range)
'Update on 11/11/2019 -If data changes in column L, insert
'today's date into column M
End Sub
Sub EventChange_2(ByVal Target As Range)
'Update on 15/01/2020 -If data changes in column P, insert today's date
'into next Column Q
End Sub
Sub EventChange_3(ByVal Target As Range)
'Update on 15/01/2020 -If data changes in column R, insert today's date
'into next Column S
End Sub
Sub EventChange_4(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
' this works !
If Target.Column = 10 And (Target.Value = "THIS Month – Payment Due" Or Target.Value = "Issued But Not Paid") Then
Range("K" & Target.Row).Value = Range("I" & Target.Row).Value
Range("I" & Target.Row).Clear
MsgBox "Moved Commission Due to Month Paid"
End If
If Target.Column = 10 And (Target.Value = "Not Going Ahead") Then
Range("I" & Target.Row).Value = 0
Range("K" & Target.Row).Value = 0
MsgBox "Moved ZERO to Initial Commisson and Month Paid"
End If
Application.EnableEvents = True
End Sub