Доброго времени суток.
Задача проста: нужно перехватить нажатие клавиши Delete и, если значение ячейки было не пустым, выполнить определенный код.
Мои действия:
Private Sub Worksheet_Change(ByVal Target As Range)
If keycode = vbKeyDelete Then
If IsEmpty(ActiveCell.Value) Then
Else
del
End If
End If
End Sub
Столкнулся с несколькими сложностями: ни в какую не хочет работать выражение "keycode = vbKeyDelete". Пробовал и такое: "keycode = 46". В чем может быть ошибка?
Вторая сложность: Worksheet_Change - выполнение кода происходит уже ПОСЛЕ удаления данных из ячейки, т.е. IsEmpty(ActiveCell.Value) будет всегда равно TRUE, а это УЖЕ неправильно. Я пробовал этот код ставить в Worksheet_SelectionChange, но там перехват Delete не происходит вообще. Как варианты решения я вижу дублирование значения активной ячейки в "переменную" ячейку, и уж потом при нажатии клавиши Delete проверять наличие в ней данных, но этот вариант мне кажется очень "топорным".
Хотелось бы услышать ваши идеи по этому вопросу. Заранее благодарен.