2016-10-27 3 views
0

У меня есть кнопка управления Active X на листе, которая «перезагрузит содержимое» листа.Функция отмены для возврата макроса содержимого сброса

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

Private Sub CommandButton21_Click() 
Worksheets("DropSheet").Range("E7:E15").ClearContents 
End Sub 

Пожалуйста Предлагайте

+1

Он принимает создавать снимки рабочего листа до изменения, а затем сбросить страницу с снимку. Вы буквально скопируете лист перед выполнением изменения, а затем, если требуется отменить, вы вставьте лист обратно. –

+0

@ScottCraner Спасибо за ваш ответ. вы предлагаете зарезервировать лист для хранения моментального снимка и использовать его при нажатии кнопки «Отменить». Верный? Один вопрос, не увеличивает ли размер таблицы? – sady

+0

Это увеличит размер, так как вы создаете резервную копию листа (копируя его, даже если он имеет одинаковые значения). Процесс будет примерно таким: когда кнопка сброса нажмите скопировать целевой лист и скрыть его, затем очистите содержимое целевого листа. Когда вы отмените удаление, удалите целевой лист и затем скопируйте скрытый лист. (тогда скрытый лист можно также удалить) – RCaetano

ответ

1

Если предположить, что в вашем соответствующем ("DropSheet"?) Рабочий лист есть:

  • кнопка ActiveX именем "CommandButton21"

  • ActiveX кнопка «UndoBtn»

место этот код в том же самом листе кода панели:

Option Explicit 

Dim lastValues As Variant '<-- worksheet scoped variable where to store "last" values in before CommandButton21 button clears them 

Private Sub CommandButton21_Click() 
    With Range("E7:E15") '<--| reference your relevant range 
     lastValues = .Value '<--| first, store its content in the worksheet scoped array variable 
     .ClearContents '<--| then, clear its content 
    End With 
End Sub 

Private Sub UndoBtn_Click() 
    Range("E7:E15").Value = lastValues '<--| write'em back! 
End Sub 
+0

@sady, вы прошли через это? – user3598756

+0

Спасибо, это сработало !! – sady

Смежные вопросы