После выполнения макроса в Excel нет кнопки, чтобы отозвать его, если только вы не закроете книгу и не сохраните ее.
Есть ли аккуратный и простой способ просто отменить его?
После выполнения макроса в Excel нет кнопки, чтобы отозвать его, если только вы не закроете книгу и не сохраните ее.
Есть ли аккуратный и простой способ просто отменить его?
Короткий ответ: вы не можете отменить (я полагаю, это то, что вы подразумеваете под отзывом) действия макроса. Решения, принимаемые в языке программирования, могут быть затруднены для отмены Excel, поэтому существует общее состояние «Не удается отменить», вызванное отключением макроса.
Длинный ответ заключается в том, что если вы ожидаете отмены, ваш код должен удовлетворить этот запрос, сохранив предыдущее состояние данных перед выполнением. Это очень широкое предположение, что вы работаете с данными в VBA; прямое создание и манипулирование файлами может быть сложнее в зависимости от того, что выполняется.
Джон Уокенбах приводит хороший пример хранения данных для обеспечения возможности дальнейшего отмены:
Пользователи компьютеров привыкли к возможности "отменить" операцию. Почти все операции, которые вы выполняете в Excel, могут быть отменены. Если вы программируете на VBA, вы, возможно, задумывались, возможно ли отменить эффекты подпрограммы. Ответ - да. Квалифицированный ответ не всегда прост.
Джон Уокенбах, Spreadsheetpage.com
Я думаю, что его вступительное заявление немного вводит в заблуждение: для пользователей, не кодирующих код, ответ «нет, вы не можете отменить макрос».
Да, вы можете отменить все действия макроса. Ниже приведен макрос, назначенный кнопке do DO.
Sub do_while()
Dim num As Integer
num = 1
Do While num <= 12
Cells(num, 1) = num
num = num + 1
Loop
End Sub
The code below is assigned to an UNDO button.It uses ClearContents.
Dim num As Integer
num = 1
Do While num <= 12
Cells(num, 1).ClearContents
num = num + 1
Loop
End Sub
Используйте понятное содержание.