Пожалуйста, установите процедуру события ниже в кодовой таблице рабочего листа, для которого вы хотите действие.
Private Sub Worksheet_Change(ByVal Target As Range)
Const Triggers As String = "E12,H12,K12,D12"
Dim Rng As Range
Dim Cell As Range
' skip if more than one cell was changed (like paste)
If Target.Cells.CountLarge = 1 Then
Set Rng = Range(Triggers)
For Each Cell In Rng
If Cell.Value = "" Then
Cell.Select
Exit For
End If
Next Cell
End If
End Sub
Теперь, если пользователь вводит что-то в E12, макрос выберет H12. Если пользователь вводит что-то в D12, следующий макрос вернет его к K12. Это все очень хорошо.
Но если пользователь что-то изменит в A3 (где угодно, фактически), он попадет в первую пустую ячейку диапазона триггера. Поэтому система должна быть настроена так, чтобы соответствовать вашему рабочему процессу. Возможно, код должен выполняться только при вводе D12 или когда пользователь щелкает ячейку, на которую он не должен щелкать до завершения диапазона триггера.
Короче говоря, объем процедуры, возможно, придется урезать в соответствии с вашим рабочим процессом. Это может быть сделано либо путем включения указанных c ячеек в диапазон запуска, либо путем исключения других ячеек.