Лист Специфичные макросы
У меня есть рабочая тетрадь с тремя листами Excel. Я хочу, чтобы пользователь мог копировать данные с третьего листа, который является результатом вычислений на втором листе. Как бы то ни было, код, который я использую
'The code for the Macro
Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim col As String
Dim msg As String
col = Split(Target.Address(1, 0), "AOS")(0)
'Permet d'éviter les modifications des modifications manuelles des cellules calculées automatiquement
If Intersect(Target, Sheets("AOS").Range("A3:AP100")) Is Nothing Then Exit Sub
'We're going to make a change, so turn this off
'so that macro doesn't get called infinitely
Sheets("AOS").Application.EnableEvents = False
Sheets("AOS").Application.Undo
MsgBox "Can't touch this!", vbCritical + vbOKOnly, "Error !!!!!"
Sheets("AOS").Application.EnableEvents = True
Также отменяются изменения, сделанные на втором листе. Похоже, Sheets("AOS").Application.Undo не работает так, как должно быть.
Какие-либо предложения..?
2 ответа
Из MSDN:
Этот метод отменяет только последнее действие, выполненное пользователем перед запуском макроса, и это должна быть первая строка в макросе. Его нельзя использовать для отмены команд Visual Basic.
Вы используете SelectionChange
событие, вы должны использовать Change
событие. SelectionChange
происходит каждый раз, когда выбор изменяется, поэтому, когда вы используете Отмена, это отменяет последнее обратимое действие, которое могло произойти на другом листе.