Удаление листов в макросе (Microsoft Excel)
Большинство команд Excel доступны для использования в ваших макросах при условии, что вы знаете правильные команды VBA для выполнения поставленной задачи. Вы можете использовать следующую макрос-команду для удаления активного рабочего листа:
ActiveSheet.Delete
Если вы введете команду в макросе, вы обнаружите, что Excel приостанавливает выполнение макроса и спрашивает вас, уверены ли вы, что хотите удалить рабочий лист.
Когда вы нажимаете Да, рабочий лист удаляется и макрос возобновляется.
Вся идея макросов, конечно же, состоит в том, чтобы автоматизировать многие задачи, которые вы делаете на регулярной основе. Остановка и запрос подтверждения может быть безопасным способом, но это не очень помогает делу автоматизации. Если вы хотите, чтобы лист удалялся без пауз, вы можете сделать несколько вещей. Во-первых, вы можете использовать метод SendKeys для имитации нажатия клавиши Enter, что аналогично нажатию Да в диалоговом окне подтверждения. Все, что вам нужно сделать, это добавить одну строку перед строкой, которая удаляет рабочий лист:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeys ничего не делает, кроме как записывает нажатия клавиш в буфер клавиатуры, как если бы вы вводили их с клавиатуры. Таким образом, строка SendKeys должна предшествовать строке Delete, чтобы нажатие клавиши Enter находилось в буфере до того, как оно понадобится.
Любой давний разработчик макросов может указать на несколько потенциальных проблем с использованием SendKeys, основная проблема заключается в том, что вы не можете использовать его, чтобы указать, что вы принимаете опцию Да в диалоговом окне подтверждения, и только в этом диалоговом окне. Однако маловероятно, что если в нужный момент появится другое диалоговое окно (возможно, созданное другой программой), нажатие клавиши Enter будет применено к этому диалоговому окну, а не к тому, которое вы ожидали.
Лучшее решение — отключить на короткое время функции предупреждений в Excel. Рассмотрим следующий код макроса:
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
Этот код отключает предупреждения, удаляет лист, а затем снова включает предупреждения. Пока они выключены, Excel не будет отображать диалоговое окно подтверждения, а будет действовать так, как если бы оно отображалось и был выбран вариант по умолчанию (Да).
Важно помнить последнюю строку кода, показанную здесь. Если вы не установите для свойства DisplayAlerts значение True, Excel больше не будет показывать предупреждающие сообщения даже после завершения макроса. Как вы понимаете, это может вызвать проблемы. Лучше всего установить значение False только на то короткое время, когда вам нужно отключить предупреждения.
Даже если для DisplayAlerts установлено значение False, вы все равно будете видеть сообщения об ошибках, если они будут созданы. Например, если вы выполните приведенный выше код и в книге есть только один лист, вы все равно увидите сообщение об ошибке. (Это происходит потому, что вы не можете удалить последний лист в книге.)
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2293) применим к Microsoft Excel 97, 2000, 2002 и 2003.