Я строю простое доказательство концепции системы управления запасами.Чтобы упростить эти шаги, я использую функцию изменения событий в Excel vba с частными подписчиками на листах.Поток процесса должен выглядеть следующим образом: номер рабочего задания сканируется в ячейку I2, вызывая выбор ячейки L4.После того, как что-то введено в диапазон L4: L13, оно перейдет к следующему столбцу.Как только ячейка O4 будет изменена, она запустит другой макрос для обновления базы данных записей.Проблема заключается в том, что при изменении ячейки I2 ничего не происходит.
Я пытался создать закрытые подписки на несколько событий изменения, но это не сработало.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkOrder As Range
Dim MoveTo As Range
Dim ChangeStatus As Range
Dim ChangeComplete As Range
Set WorkOrder = Range("I2")
Set MoveTo = Range("L4:L13")
Set ChangeStatus = Range("M4:M13")
Set ChangeComplete = Range("O4")
If Not Application.Intersect(WorkOrder, Range(Target.Address)) _
Is Nothing Then
Range("L4").Select
ElseIf Not Application.Intersect(MoveTo, Range(Target.Address)) Is Nothing Then
Range("M4").Select
ElseIf Not Application.Intersect(ChangeComplete, Range(Target.Address)) Is Nothing Then
Call Module1.EditWorkOrderStatus
End If
Range("i2").Select
End Sub
Iожидать, что макрос в module1 запустится и очистит все измененные ячейки, но ничего не происходит.В настоящее время я не получаю ошибок в своем коде.
ОБНОВЛЕННЫЙ КОД:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkOrder As Range
Dim MoveTo As Range
Dim ChangeStatus As Range
Dim ChangeComplete As Range
Set WorkOrder = Range("I2")
Set MoveTo = Range("L4:L13")
Set ChangeStatus = Range("M4:M13")
Set ChangeComplete = Range("O4")
If Not Application.Intersect(WorkOrder, Target) _
Is Nothing Then
If WorkOrder = "" Then
WorkOrder.Select
Else
Range("L4").Select
End If
ElseIf Not Application.Intersect(MoveTo, Target) Is Nothing Then
Range("M4").Select
ElseIf Not Application.Intersect(ChangeComplete, Target) Is Nothing Then
If ChangeComplete = "" Then
Else
Call Module1.EditWorkOrderStatus
Range("o4").ClearContents
Range("i2").Select
End If
End If
End Sub