Як скасувати дії макросу, excel для всіх

Багато з тих, хто програмує в VBA знають, що після дій макросу пропадає можливість скасування дій. І якщо зі скасуванням тих дій, які були здійснені до виконання макросу абсолютно точно можна розпрощатися (неможливо буде це зробити), то скасувати дії макросу можливо. І рано чи пізно кожен програмує в VBA задається питанням: як можна скасувати дії, вчинені [...] (повний текст статті)

  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх
  • Як скасувати дії макросу, excel для всіх

Пошук по мітках

Супер, дякую велике за наведений приклад.
Перший метод хороший - досить винести з методу Fill_Numbers () приклад зі зміною даних, і він перетворюється в майже повноцінний метод для збереження дій для виділеного діапазону, який можна буде викликати на початку свого методу. На жаль, рядок

Application.OnUndo
доведеться викликати в кінці кожного свого методу: написати універсальний метод не вийшло - можливість використання делегатів для vba excel я не знайшов (може, погано шукав).
А взагалі, спосіб відмінний - якщо зберігати посилання (або масив станів) на попередні дії, то можна буде скасувати не тільки останній макрос, але ще і передостанній і так далі)

На мій погляд потрібно використовувати перший метод, тому що видалення листа попсує посилання, а значить краще взагалі без скасування дій.

Потрібно створювати прихований лист для надбудови і на ньому зберігати діапазон, ім'я листа, ім'я книги та ім'я процедури, що робила зміни.
І коли потрібно буде, скасовувати ці дії від кінця, а в разі закриття файлу надбудови - очищати лист історії.

Сергій, не зовсім зрозумів Вашу думку. Навіщо створювати лист для зберігання даних, якщо в першому методі для цього і так використовується масив? До того ж на лист доведеться заносити так само і всі значення діапазону, формули, параметри осередків, що вельми влучно. А запис і витяг значень з листа значно сповільнить дії коду, що на більш-менш великих обсягах буде більш ніж помітно. Але тут, в принципі, справа фантазії - я не претендував на оригінальність і універсальність рішення. Моїм завданням було показати принцип і якщо Ви знайшли рішення краще - це тільки плюс Вам.

Схожі статті