Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel vba удалить лист

Quickest way to clear all sheet contents VBA

I have a large sheet that I need to delete all the contents of. When I try to simply clear it without VBA it goes into not responding mode. When using a macro such as:

It also doesn’t respond. What’s the quickest way to do this?

Создан 30 апр. 15 2015-04-30 12:09:06 hc91

**Does the sheet contain Conditional Formatting ??** – Gary’ s Student 30 апр. 15 2015-04-30 12:17:11

Not conditional formatting, no. – hc91 30 апр. 15 2015-04-30 12:21:11

Try ‘Application.EnableEvents = False: Sheets(«Zeroes»).Cells.Delete: Application.EnableEvents = True’ – omegastripes 26 мар. 16 2016-03-26 21:12:16

4 ответа

The .Cells range isn’t limited to ones that are being used, so your code is clearing the content of 1,048,576 rows and 16,384 columns — 17,179,869,184 total cells. That’s going to take a while. Just clear the UsedRange instead:

Alternately, you can delete the sheet and re-add it:

Создан 30 апр. 15 2015-04-30 12:28:14 Comintern

I’m not sure that will work either. I’ve tried doing it out of VBA and just highlighting a snippet (200 rows, 5000 columns) and deleting and that froze it. I’ve then put a loop in and just tried to loop through 1000 rows, that didn’t work either. I may just loop it manually and hold F8 down. – hc91 30 апр. 15 2015-04-30 12:34:53

@hc91 — Interesting. Sounds like there’s enough data that Excel is causing the issue, not VBA. You can always delete the worksheet and re-add it. See the edit. – Comintern 30 апр. 15 2015-04-30 12:41:37

That’s a very good workaround, thanks. – hc91 30 апр. 15 2015-04-30 12:49:52

Heads up for future readers, you cannot delete a sheet if it’s the last/only one in the workbook. In that case, you can add the new blank sheet first, delete the old one, and finally rename that new sheet to the old sheet’s name. – tavnab 28 июн. 16 2016-06-28 03:34:34

Also, note that deleting a sheet removes all associated VBA code if this is an issue. I went with just deleting and recreating sheets in a VBA utility I was developing which painted me into a corner when I started adding events to these sheets. My recommendation is ‘Sheets(«Zeroes»).Cells.Delete xlShiftUp’ which seems instantaneous to me. – user1274820 12 авг. 16 2016-08-12 16:34:08

Also note that eliminating a Sheet will create conflicts with formulas in other sheets that were referencing the recently eliminated one, recreating the sheet may not solve that issue. – Azura 15 дек. 16 2016-12-15 20:58:36

Technically, and from Cominterns accepted workaround, I believe you actually want to Delete all the Cells in the Sheet. (Which removes Formatting etc as well as the Cells Contents) I.e. Sheets(«Zeroes»).Cells.Delete

(clears 10000 lines and 2000 columns in about half a second on my PC)

Combined instead with UsedRange and ScreenUpdating it should be nearly intantaneous.

Создан 04 фев. 16 2016-02-04 22:39:02 Stax

Excel vba удалить лист

Еще вопрос. Файл Excel перемещается с компьютера на компьютер с разными локализациями офиса одной версии. Постоянно появляются новые модули типа : ЭтаКнига1, ThisWorkBook1, Лист2, Sheet2 и т.д. Номера — условно. Причем некоторых листов в самой книге нет. В загрузке самого WorkBook стоит макрос и когда файл переносится на другой компьютер, где появляется уже новый активный модуль ThisWorkBookХ, то макрос не срабатывает. Что за дурацкая система! Как навести порядок?

Здравствуйте, Trot, Вы писали:

T>Привет. Задолбали ненужные листы Excel в дереве проектов VB. Как удалить это дело? RMB меню Remove засерено. Что делать?

Здравствуйте, Trot, Вы писали:

T>Еще вопрос. Файл Excel перемещается с компьютера на компьютер с разными локализациями офиса одной версии. Постоянно появляются новые модули типа : ЭтаКнига1, ThisWorkBook1, Лист2, Sheet2 и т.д. Номера — условно. Причем некоторых листов в самой книге нет. В загрузке самого WorkBook стоит макрос и когда файл переносится на другой компьютер, где появляется уже новый активный модуль ThisWorkBookХ, то макрос не срабатывает. Что за дурацкая система! Как навести порядок?

А в какой папке они появляются — Microsoft Excel Objects или Modules?

Здравствуйте, Elena_, Вы писали:

E_>Здравствуйте, Trot, Вы писали:

T>>Еще вопрос. Файл Excel перемещается с компьютера на компьютер с разными локализациями офиса одной версии. Постоянно появляются новые модули типа : ЭтаКнига1, ThisWorkBook1, Лист2, Sheet2 и т.д. Номера — условно. Причем некоторых листов в самой книге нет. В загрузке самого WorkBook стоит макрос и когда файл переносится на другой компьютер, где появляется уже новый активный модуль ThisWorkBookХ, то макрос не срабатывает. Что за дурацкая система! Как навести порядок?

E_>А в какой папке они появляются — Microsoft Excel Objects или Modules?

В Microsoft Excel Objects.
В Modules только мои файлы — с этим все в порядке.

Здравствуйте, Trot, Вы писали:

E_>>А в какой папке они появляются — Microsoft Excel Objects или Modules?

T>В Microsoft Excel Objects.
T>В Modules только мои файлы — с этим все в порядке.

А в Ваших макросах ничего не может спровоцировать такое поведение? Дело в том, что я для одной цели в свое время пыталась добавить ЭтаКнига, туда где уже было ThisWorkbook (и наоборот) специально, в подходящей версии, конечно, и у меня ничего не получилось.

Здравствуйте, Elena_, Вы писали:

E_>А в Ваших макросах ничего не может спровоцировать такое поведение? Дело в том, что я для одной цели в свое время пыталась добавить ЭтаКнига, туда где уже было ThisWorkbook (и наоборот) специально, в подходящей версии, конечно, и у меня ничего не получилось.

Нет, в макросах ничего похожего нет. Инициализация переменных, открытие других книг. «Моя озабоченность» вызвана тем, что:
1. ThisWoorkBook только один, а ЭтаКнига уже несколько
2. Sheetы видимо тоже соответствуют числу доступных листов, а вот Листов развелось уже за 3-ий десяток.
3. Почему то я не могу удалить хотя бы эти листы. Меню Remove недоступно.

Сейчас работаю на английской системе. Рост страниц не наблюдаю. Возможно есть какое-то меню в Excel, которое позволяет увидеть внутрениие листы что ли. Только где такое меню — непонятно.

Здравствуйте, Trot, Вы писали:

T>1. ThisWoorkBook только один, а ЭтаКнига уже несколько
T>2. Sheetы видимо тоже соответствуют числу доступных листов, а вот Листов развелось уже за 3-ий десяток.
T>3. Почему то я не могу удалить хотя бы эти листы. Меню Remove недоступно.

Читать еще:  Vba excel byref argument type mismatch

T>Сейчас работаю на английской системе. Рост страниц не наблюдаю. Возможно есть какое-то меню в Excel, которое позволяет увидеть внутрениие листы что ли. Только где такое меню — непонятно.

А в окне Properties у них есть свойства: Name, Visible и другие, и чему они равны?
Может быть, они VeryHidden? И на самом деле существуют?

если поменять Visible на что-нибудь и снова установить Visible, что-нибудь произойдет?
Если обратиться из программы к ним по этому объектному имени, типа,

Если попробовать их так удалить, типа

Вообще, если они есть как объекты, то можно ли ими как-то манипулировать? Я пока только о листах.

Спасибо, что пытаетесь мне помочь
Выяснилось следующее.
На самом деле, что объекты (назовем их неопознанными екселевскими объектоми — НЕО) под названия ЛистNN или SheetNN — это Workbookи. Это я выяснил по

1. свойств Visible у них нет (есть куча других свойств, назначение большинства я не знаю)
2. иконки другие (как файл екселя)
3. в каждом таком объекте доступна функция WoorkBook_Open.

А с листами оказалось все в порядке. Сколько в файле, столько и в дереве.

Здравствуйте, Trot, Вы писали:

T>Выяснилось следующее.
T>На самом деле, что объекты (назовем их неопознанными екселевскими объектоми — НЕО) под названия ЛистNN или SheetNN — это Workbookи. Это я выяснил по

T>1. свойств Visible у них нет (есть куча других свойств, назначение большинства я не знаю)
T>2. иконки другие (как файл екселя)
T>3. в каждом таком объекте доступна функция WoorkBook_Open.

T>А с листами оказалось все в порядке. Сколько в файле, столько и в дереве.

Вообще, очень это все странно выглядит. Я бы предположила, что это результат какого-то сбоя и автоматического восстановления файла. Может быть, имеет смысл просто перенести весь код и данные в чистую книгу?

То есть, как я поняла, все эти объекты имеют те же свойства, что и настоящая ThisWorkbook? Выполняются ли их события, то же Open при открытии, Save при сохранении и т.п.? Чему у них равно значение свойства IsAddin, если оно есть, как в любом нормальном ThisWorkbook? Можно ли их закрыть, и что собственно при этом закроется, если вызывать метод Close по этому объектному имени —

или покажет ли какое-нибудь имя

Можно ли импортировать эти модули, и если можно, отличаются ли они от ThisWorkbook. То есть как-то подобраться к их удалению. Хотя, мне кажется, что надежнее просто все перенести в чистую книгу, даже копированием, а не импортом, экспортом, хотя это более-менее все равно. А то какой-то монстр просто получается.

Здравствуйте, Elena_, Вы писали:

Если попробовать взять указатели на эти объекты ObjPtr(ЛистNN), то они разные, как для нормальных объектов? или это просто отображение дерева проекта глючит?

Здравствуйте, Elena_, Вы писали:

E_>Вообще, очень это все странно выглядит. Я бы предположила, что это результат какого-то сбоя и автоматического восстановления файла. Может быть, имеет смысл просто перенести весь код и данные в чистую книгу?

Возможно, Ексль часто падал. Можно и перенести, почучится. Только не хотелось бы тратить время, если эта проблема не серьезная. Вдруг там опять такое проявится. И переносить надо аккуратно. Пока работает, лучше не трогать

E_>То есть, как я поняла, все эти объекты имеют те же свойства, что и настоящая ThisWorkbook? Выполняются ли их события, то же Open при открытии, Save при сохранении и т.п.? Чему у них равно значение свойства IsAddin, если оно есть, как в любом нормальном ThisWorkbook? Можно ли их закрыть, и что собственно при этом закроется, если вызывать метод Close по этому объектному имени —
E_>
E_>или покажет ли какое-нибудь имя
E_>

Эти объекты ПУСТЫЕ. Что это значит. Когда я кликаю на этот объект в окне Properties в заголовке появляется имя этого объекта, а в списке параметров отображаются свойства АКТИВНОГО WorkBook. Даже параметр (Name) показывает имя активного объекта. Собственно я так и нахожу, какой модуль рабочий.
IsAddin у этого модуля = False. Для других модулей я добраться не могу (см. предложение выше). Окно кода же появляется и в нем можно писать что угодно. В ниспадающем комбобоксике окна редактора кода есть объект WorkBook. Функции у этого объекта также существуют. Закрыть окно кода можно.
Код, который вы мне написали еще не пробовал.

E_>Можно ли импортировать эти модули, и если можно, отличаются ли они от ThisWorkbook. То есть как-то подобраться к их удалению. Хотя, мне кажется, что надежнее просто все перенести в чистую книгу, даже копированием, а не импортом, экспортом, хотя это более-менее все равно. А то какой-то монстр просто получается.

Экспортировать эти модули можно. Файл сохраняется с уникальным именем. например:

Может быть свойста о чем то вам подскажут.
Вот такая вот шняга.
Копировать не хочется, т.к. проект большой, есть вероятность что-то забыть и порушить.

VBA: удалить листы после определенного листа

Мне нужно удалить все листы после листа с именем «template 1».

До сих пор я пытался

Однако я получаю сообщение об ошибке «Delete method of Worksheet class failed». У кого-нибудь есть решение этой проблемы?

4 Ответов

Единственное, что я могу придумать, что могло бы вызвать эту ошибку, — это наличие листа «Very Hidden» в вашей рабочей книге. «Very Hidden» листы не будут удалены с помощью вашей функции. Попробовать это:

Это установит все листы, которые будут удалены, чтобы быть «Hidden», позволяя им быть удаленными без их отображения. Если лист «Very Hidden» должен остаться, то используйте это:

Верните номер Index листа,а затем удалите все листы с индексом выше этого.

Вам нужно проверить, что «template 1» не является единственным листом в книге или что это не последний лист в книге. Вам также нужно удалить с последнего листа назад к первому-что, как я вижу, вы сделали в своем исходном коде.

Edit: только что понял — он также должен проверить, что по крайней мере один лист виден, но предполагая, что «template 1» будет виден, поэтому немного обманывает и не проверяет это. 🙂

Читать еще:  Работа в excel для начинающих

Правка 2: я добавил проверку, чтобы убедиться, что шаблон 1 существует. Обычно я передавал это в отдельную функцию, которая возвращала TRUE/FALSE.

Редактировать 3: Извините! Изменил Worksheets на Sheets , так что он включает в себя листы диаграмм.

Убедитесь, что у вас есть сохранить файл с enable macros и затем попробуйте:

Похожие вопросы:

Чтобы быть конкретным, я хочу удалить все листы, кроме Sheet6, который является кодовым именем листа, но я не могу заставить мой код работать. Dim ws As Worksheet For Each ws In.

В моем текущем проекте, с которым я собираюсь покончить, я хочу быть уверенным, что люди, взявшие на себя мою работу, останутся с чем-то, что не сломается после того, как я уйду. Этот проект.

Моя книга Excel имеет 4 листа, но редактор VBA показывает 5 листов в одной книге. Как сделать все листы видимыми?

У меня есть листы, перечисленные в книге Excel, которые на самом деле не существуют. Листы отображаются при просмотре кода и просмотре списка листов в части VBA, но на самом деле они вообще не.

Я новичок в VBA. Я написал код для удаления определенного листа. После выполнения этого макроса удаления листа, макрос excel остановил выполнение. Он не выполнил дальнейшее.. Вот мой код.. Sub.

Любая идея, как удалить все листы, чье имя похоже на M######? например, у меня может быть M124598, M999999, M650123 и т. д. Пробовал использовать подстановочный знак, но безуспешно. Спасибо! For.

У меня есть рабочая книга, в которой есть динамическое количество листов. Соответствующие листы, которые я хочу извлечь, всегда появляются после листа Sheet 3. Проблема в том, что соответствующие.

Мой файл excel имеет 2 листа с именами A и B Оба листа показывали данные из 6 запросов (6 имен соединений) с видом sql сервера Обычно, когда я хочу обновить данные в файле excel, Я нажимаю refresh.

У меня есть рабочий лист в моей книге в качестве теста . Есть и другие рабочие листы. Я хочу удалить листы, которые отображаются справа от листа, называемого тестом. Как мне это сделать в VBA? Нужна.

Мой код ниже должен удалить все листы, начиная с 6 и далее, сколько бы их ни было, когда эта кнопка нажата. Это работает, однако я получаю удалить метод класса листа не удалось ошибка впоследствии.

VBA в Excel Объект Excel.Worksheet и программная работа с листами Excel средствами VBA

10.5 Коллекция Sheets и объект Worksheet, их свойства и методы

Объект Excel.Worksheet, программное создание, обнаружение, удаление листа Excel средствами VBA, свойства, методы и события объекта Excel.Worksheet

В Word ниже объекта Application и Document начинались уже объекты непосредственно для работы с текстом — Selection, Range и т.п. В Excel между объектом рабочей книги и ячейками есть еще один промежуточный объект — объект Worksheet (лист). Объекты Worksheet в книге объединены в коллекцию Sheets.

Чаще всего для ввода данных в Excel (напрямую или из базы данных) нам потребуется в первую очередь определиться с листом, на который пойдет ввод данных — либо просто выбрать его, либо вначале создать, а потом выбрать.

Процесс создания выглядит очень просто:

Dim oExcel As New Excel.Application ‘Запускаем Excel

oExcel.Visible = True ‘Делаем его видимым

Dim oWbk As Excel.Workbook

Set oWbk = oExcel.Workbooks.Add () ‘Создаем новую книгу

Dim oSheet As Excel.Worksheet

Set oSheet = oWbk.Worksheets.Add() ‘ Создаем новый лист

oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»

Метод Add() для коллекции Worksheets принимает несколько необязательных параметров, главная задача которых — определить, между какими существующими листами будет вставлен новый лист. Если ничего не указывать, то новый лист будет помещен самым первым.

Часто встречается и другая задача — просто найти нужный лист среди листов книги, например, если мы открыли существующую книгу. Сделать это очень просто, поскольку коллекция Worksheets умеет работать с именами листов. Ниже приведен пример, в котором мы так же запускаем Excel и создаем новую книгу, но при этом находим лист с именем «Лист1» и переименовываем его в «Новый лист»:

Dim oExcel As New Excel.Application ‘Запускаем Excel

oExcel.Visible = True ‘Делаем его видимым

Dim oWbk As Excel.Workbook

Set oWbk = oExcel.Workbooks.Add() ‘Создаем новую книгу

Dim oSheet As Excel.Worksheet

Set oSheet = oWbk.Worksheets.Item(«Лист 1») ‘ Находим Лист1

oSheet.Name = «Новый лист» ‘Присваиваем ему имя «Новый лист»

Обратите внимание, что в английской версии Excel этот код, скорее всего, не пройдет, поскольку листы там по умолчанию называются «Sheet1», «Sheet2» и т.п. Если вы в вашем коде используете имена листов по умолчанию и при этом вашей программе придется работать на компьютерах с разноязычными версиями Excel, обязательно предусмотрите дополнительные проверки или просто используйте номера листов вместо их имен.

У коллекции Sheets, помимо привычных нам свойств и методов ( Count, Item, Add(), Delete()) и свойств и методов, которые удобнее применять для объекта Worksheet ( Visible(), Copy(), Move(), PrintOut(), PrintPreview(), Select()) — поскольку все равно указывать конкретный лист — есть и один специфический метод FillAcrossSheets() — скопировать объект диапазона Range (варианты: полностью, только содержимое, только оформление) во все листы данной книги.

У объекта Worksheet — множество важных свойств и методов:

  • Cells — одно из наиболее часто используемых свойств объекта Worksheet. Работает точно так же, как и рассмотренное выше одноименное свойство объекта Application — за исключением того, что вам больше не нужно ограничиваться только активным листом. Аналогично работают свойства Columns и Rows.
  • EnableCalculation — возможность отключить автоматический пересчет значений ячеек в книге.
  • EnableSelection — возможность запретить выделять на листе: все, ничего не запрещать, или разрешить выделять только незаблокированные ячейки.
  • Next — возможность получить ссылку на следующий лист в книге. Previous — то же самое для предыдущего листа.
  • PageSetup — как и в Word, возможность получить объект PageSetup, при помощи которого можно настроить те же параметры, что и через меню Файл ->Параметры страницы.
  • свойство Protection позволяет получить объект Protection, при помощи которого можно запретить пользователю вносить изменения в лист Excel. Настройке параметров защиты также служат и другие свойства, названия которых начинаются на Protection.
  • QueryTables — исключительно важное свойство. Оно возвращает коллекцию QueryTables — набор объектов QueryTable, которые, в свою очередь, представляют данные, полученные из внешних источников (как правило, из баз данных).
  • Range — самое важное свойство объекта Worksheet. Возвращает объект Range (диапазон ячеек), который в объектной модели Excel занимает примерно такое же место, что и одноименный объект в объектной модели Word. Этот объект будет рассматриваться ниже.
  • Type — возможность определить тип данного листа. Обычно используются два типа: xlWorksheet (обычный лист) и xlChart (диаграмма).
  • UsedRange — возвращает объект Range, представляющий собой прямоугольную область, включающую все непустые ячейки. Удобно для целей копирования или форматирования.
  • Visible — возможность спрятать лист с глаз пользователя (например, если он используется для служебных целей).
Читать еще:  Excel application методы

Некоторые важные методы объекта Worksheet:

  • методы Activate() , Calculate(), Copy(), Paste(), Delete(), Move(), Evaluate(), Select(), SaveAs(), PrintOut(), PrintPreview(), Protect(), Unprotect()нам уже знакомы . Отличие заключается только в том, что теперь эти методы могут применяться для выбранного вами листа.
  • метод PivotTables() возвращает коллекцию очень интересных объектов PivotTable (сводная таблица), которые будут рассматриваться ниже;
  • метод Scenarios() возвращает коллекцию Scenarios, состоящую из объектов Scenario (сценарии). Сценарии — это именованные наборы вводных данных, которые можно использовать для проверки различных сценариев (разные суммы продаж, уровни налогов, расходов и т.п.)
  • SetBackgroundPicture() — возможность назначить листу фоновое изображение (естественно, желательно, чтобы оно было полупрозрачное — «водяной знак», иначе на его фоне будет трудно читать текст в ячейках).
  • ShowAllData() — показать все скрытые и отфильтрованные данные на листе.

Самое важное событие объекта Worksheet — это, конечно, Change. Существует множество практических задач, когда изменение пользователем значения ячейки должно приводить к изменению значения в ячейке другого листа/рабочей книги Excel или даже в базе данных. Другая ситуация, в которой используется это события — сложная проверка вводимого пользователем значения (например, опять-таки через обращение к базе данных). Эта событийная процедура работает со специальным параметром Target — то есть объектом Range, представляющим изменившуюся ячейку. При помощи свойств и методов объекта Range вы можете получить информацию об изменившемся значении, столбце и строке, в котором произошло изменение и т.п.

У объекта Worksheet есть еще два очень удобных события (их сильно не хватает объекту Document в Word). Это — события BeforeRightClick() и BeforeDoubleClick(). Как понятно из названия, первое событие позволяет перехватывать щелчок правой кнопкой мыши по любому месту в листе, а второе — двойной щелчок мышью. При помощи этих событий вы можете назначить свою реакцию (открытие контекстных меню, выдачу предупреждающих сообщений, переход в другой режим работы и т.п.) на действия пользователя.

Удаление листа с ошибками VBA Excel

Я пытаюсь удалить рабочий лист, когда пользователь нажимает на изображение (кнопку) в Excel. Однако это приводит к сбою и перезагрузке excel, забывая о любом несохраненном прогрессе.

Это мое подразделение:

Запуск приложения чаще всего происходит. Но не всегда. Любые идеи, что может быть неправильным? (Я протестировал и подтвердил, что функция удаления вызывает сбой, но не всегда тот же лист).

Изменить: эта функция не удаляет последний лист в книге. Есть еще 20 листов. Также я использую Application.Calculation = xlCalculationAutomatic , потому что есть выделение формул, и я не хочу, чтобы excel вычислял изменения до того, как все связанные листы удалены.

Любой намек или ответ приветствуются 🙂

Вы можете удалить активный лист с кнопки (или изображения) на активном листе. Вам просто нужно обойти это.

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

Поэтому ответ: не создавайте кнопку (или изображение, связанное с макросом), которое удаляет лист, на котором он включен.

Если кто-то может добавить к этому ответу причину этой ошибки, сделайте это;)

Я сам столкнулся с этой проблемой! Я собираюсь отнестись к более опытным дизайнерам, чтобы усовершенствовать эту технику, но, как общая концепция, у меня есть рабочее решение:

Если вы разрешите макросу запускать его курс, а затем удалять лист, он не падает. Что-то вроде этого:

Я обнаружил, что в Office 2013 вы не можете поместить кнопку, которая перекрывает ячейку, которая изменяет этот макрос. Интересно, что это не происходит, если изменение носит числовой характер, но если оно является буквенно-цифровым, оно взрывается, когда вы пытаетесь удалить эту вкладку. Оказывается, он взрывает его при попытке удалить вкладку вручную (щелчком мыши) или макросом, пытающимся это сделать. THUS, мой урок, извлеченный из этого потока и применяющий его к моей конкретной ситуации, никогда не помещает кнопку развития над ячейкой, которую он меняет (в моем случае это была просто ячейка, которая дает статус того, что делал этот макрос). Excel 2013 не нравится эта ситуация, в то время как Excel 2010 просто все равно.

Как насчет перемещения кода кнопки в модуль?

У меня была проблема с этим в Excel 2016, из-за которой Option явный не работал, если код был в модуле, но если код был в модуле, то вы «должны» быть в состоянии удалить лист, где находилась кнопка.

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

Мое простое решение заключалось в том, чтобы макрос скрыть лист, но затем удалить последний скрытый лист, чтобы файлы не стали огромными с десятками скрытых листов.

Я создал диапазон в скрытом листе, называемом «DeleteSheet», чтобы сохранить имя скрытого листа.

У меня была аналогичная, но не идентичная проблема. У меня был макрос, который удалил все листы диаграмм со следующей командой, но, несмотря на то, что он работал правильно, Excel 2013 был обречен на провал, как только я попытался сохранить файл, и «восстановился», вернувшись к ранее сохраненной ситуации, отбрасывая любую последующую работу:

О, и он работал нормально, пока я не переехал, я думаю, что это был Excel 2010 до 2013 года, одновременно меняя Windows 10. Команда обречена:

Благодаря некоторому вдохновению из приведенных выше ответов, я сначала ввел сохранение перед действием удаления, а затем изменил удаление следующим образом (оказалось, что сохранение не было необходимым, но мне нравится иметь их там, даже если я их прокомментирую ):

Следует также упомянуть, что перед циклом for существует предшествующее Application.DisplayAlerts = False и, конечно же, Application.DisplayAlerts = True после оператора Next. для вырезания нежелательных

вы уверены, что хотите сделать этот вопрос?

Опять же, благодаря вашим вкладчикам за вдохновение.

Ссылка на основную публикацию
Adblock
detector