Я не верю, что код может выполняться, пока «редактор» ячейки имеет фокус и контроль. Например, попробуйте сделать что-то еще в Excel во время редактирования формулы. Я считаю, что ячейка должна завершить сохранение своего значения или формулы, прежде чем код сможет выполняться.
Вы можете иметь формулу «прислушиваться», когда ячейка обновляется, но это немного сложно. Затем он может заставить вас вернуться в исходную ячейку после обновления. Вот как вы можете написать некоторый код для «прослушивания», когда значение ячейки изменяется. В следующем примере:
- Я записываю значение Cell
I1
в strValue
.
- Затем я запускаю цикл, который продолжает работать, пока значение ячейки
I1
не изменилось.
- Команда
DoEvents
возвращает управление обратно процессору, что позволяет вам работать в Excel во время его работы.
- Как только значение ячейки
I1
изменится, оператор While
станет ложным, и цикл завершится.
- После выхода из цикла появляется окно с сообщением об изменении значения, а затем снова выбирается исходная ячейка.
Sub testChange()
Dim strValue As String
strValue = Range("I1").Value
Do While strValue = Range("I1").Value
DoEvents
Loop
MsgBox "The value changed!"
Range("I1").Activate
End Sub
Возможно, если вы просто хотите возвращать элемент управления обратно в исходную ячейку каждый раз, когда значение изменяется, вы можете использовать приведенную выше строку без окна сообщения и вернуться к циклу после выполнения вашего метода. Помните, что вам, возможно, придется найти другой способ выхода из кода, если вы сделаете это.
Почему вы хотите, чтобы он выполнялся внутри клетки? Какова конечная цель вашей задачи?