3

После выполнения макроса в Excel нет кнопки, чтобы отозвать его, если только вы не закроете книгу и не сохраните ее.

Есть ли аккуратный и простой способ просто отменить его?

2 ответа2

4

Короткий ответ: вы не можете отменить (я полагаю, это то, что вы подразумеваете под отзывом) действия макроса. Решения, принимаемые в языке программирования, могут быть затруднены для отмены Excel, поэтому существует общее состояние «Не удается отменить», вызванное отключением макроса.

Длинный ответ заключается в том, что если вы ожидаете отмены, ваш код должен удовлетворить этот запрос, сохранив предыдущее состояние данных перед выполнением. Это очень широкое предположение, что вы работаете с данными в VBA; прямое создание и манипулирование файлами может быть сложнее в зависимости от того, что выполняется.

Джон Уокенбах приводит хороший пример хранения данных для обеспечения возможности дальнейшего отмены:

Пользователи компьютеров привыкли к возможности "отменить" операцию. Почти все операции, которые вы выполняете в Excel, могут быть отменены. Если вы программируете на VBA, вы, возможно, задумывались, возможно ли отменить эффекты подпрограммы. Ответ - да. Квалифицированный ответ не всегда прост.

Джон Уокенбах, Spreadsheetpage.com

Я думаю, что его вступительное заявление немного вводит в заблуждение: для пользователей, не кодирующих код, ответ «нет, вы не можете отменить макрос».

0

Да, вы можете отменить все действия макроса. Ниже приведен макрос, назначенный кнопке 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

Используйте понятное содержание.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .