Удалить лист excel vba
При работе с Excel вы проводите большую часть своего времени на листе (который представляет собой область, в которой есть все ячейки и все, что там происходит). Эффективная работа с Excel также означает, что вам придется работать с несколькими листами в одной книге. Excel позволяет легко добавлять несколько листов в книгу, и в то же время вы также можете легко удалить эти листы.
В этом руководстве по Excel я покажу вам, как быстро удалить листы в Excel . Я бы рассмотрел несколько методов, таких как использование сочетаний клавиш, параметры на ленте и VBA для удаления листов в Эксель.
Примечание. В этом уроке я буду использовать слова «лист» и «рабочий лист» как синонимы. Но чтобы сказать вам разницу, листы будут включать в себя рабочие листы, а также листы диаграмм, но поскольку листы диаграмм Excel не так широко используются, всякий раз, когда я использую слово лист, рассматривайте его как лист.
Удаление листов с помощью параметров правой кнопки мыши
Предположим, у вас есть рабочий лист с тремя листами, как показано ниже, и вы хотите удалить Sheet1.
Ниже приведены шаги для этого:
Вы также можете использовать описанную выше технику для листов, которые даже не являются активными. Например, если я сейчас нахожусь на Sheet1 и хочу удалить Shee3, я могу просто щелкнуть правой кнопкой мыши Sheet3 и удалить его.
Вы также можете использовать ту же технику для одновременного удаления нескольких листов .
Например, если я хочу удалить Sheet2 и Sheet3 за один раз, я могу удерживать контрольную клавишу и нажимать на Sheet2 и Sheet3 один за другим (при этом все еще удерживая контрольную клавишу).
Удерживая контрольную клавишу, Excel позволит мне выбрать сразу несколько листов. Когда я закончу выбирать нужные листы, я могу оставить контрольную клавишу. теперь я могу щелкнуть правой кнопкой мыши любую из выбранных вкладок листов и нажать «Удалить».
Помните, что вы не можете удалить все листы в книге в Excel. в книге всегда должен быть хотя бы один лист. если вы попытаетесь удалить все рабочие листы (или единственный активный лист), вы увидите подсказку, которая сообщит вам, что вам не разрешено это делать
Сочетания клавиш для удаления рабочих листов
Существует не одна комбинация клавиш, а две с половиной, которые можно использовать для удаления листов в Excel.
Я говорю «два с половиной», потому что в одном из сочетаний клавиш он использует мышь и клавиатуру (и это все еще более быстрый способ сделать это).
Гибридная комбинация клавиш для удаления листа
Чтобы удалить выбранный рабочий лист или рабочие листы, щелкните правой кнопкой мыши, а затем нажмите клавишу D на клавиатуре.
Лично я считаю, что это намного быстрее, чем просто удаление листа с помощью мыши (как я уже говорил в предыдущем разделе).
Обычное сочетание клавиш для удаления листа
Если вы предпочитаете отказаться от мыши и использовать только клавиатуру, указанное выше сочетание клавиш удалит активный лист или выбранные листы.
Вам нужно нажимать эти клавиши последовательно (т. Е. Одну за другой).
Хотя это может выглядеть как немного более длинное сочетание клавиш, как только вы привыкнете к нему, оно будет таким же быстрым, как и любой другой метод, описанный в этом руководстве.
Устаревшее сочетание клавиш для удаления листов
Как и у всех остальных, у Excel тоже есть прошлое, и оно не такое уж красивое. Я говорю об эпохе до-ленточного стиля.
По соображениям совместимости Excel по-прежнему позволяет некоторым из этих старых сочетаний клавиш работать в более новых версиях. и во многих случаях эти ранние ярлыки короче и лучше.
К счастью, есть устаревшее сочетание клавиш, которое работает для удаления листов в Excel.
Удаление ActiveSheet с помощью VBA
Когда дело доходит до удаления одного листа или нескольких рабочих листов, лучше использовать вышеупомянутые методы.
Хотя VBA может автоматизировать процесс, он полезен, когда вам нужно повторить задачу несколько раз.
Как вы увидите, с помощью VBA вы можете сделать гораздо больше, когда дело доходит до удаления листов в Excel.
Итак, я расскажу вам о более сложных случаях использования, но перед этим давайте посмотрим, как просто удалить активный лист с помощью VBA.
Ниже приведен код VBA, который удалит активный лист:
Если вы используете его в непосредственном окне, вы можете просто использовать следующую строку:
Когда вы используете приведенный выше код для удаления активного листа, Excel покажет вам приглашение, в котором вам нужно будет нажать кнопку удаления, чтобы подтвердить действие.
Удаление листа без запроса подтверждения
Итак, вот код VBA, который гарантирует, что листы удалены, но вы не видите окно с запросом подтверждения.
В приведенном выше коде я установил для свойства Application.DisplayAlerts значение false, что означает, что Excel не будет показывать вам никаких предупреждений на дисплее во время выполнения кода.
Также очень важно убедиться, что вы вернули его к истине в конце кода, чтобы восстановить функциональность (как вы можете видеть, что я сделал в приведенном выше коде).
Внимание! Если для свойства Application.DisplayAlerts установлено значение false, Excel просто удалит рабочий лист, и восстановить его будет невозможно. поэтому я советую вам сделать резервную копию, прежде чем использовать такой код.
Удаление листа по имени (если он существует) с помощью VBA
VBA позволяет автоматизировать процесс удаления определенного листа (на нескольких листах) на основе имени листа.
Например, если у вас есть рабочий лист с названием «Продажи», вы можете использовать приведенный ниже код, чтобы удалить его:
Этот код удалит только лист с именем «Продажи».
Это полезно, когда у вас есть рабочая тетрадь с большим количеством листов, и вы не хотите просматривать все листы, найдите тот, у которого есть имя продажи, и удалите его вручную.
С приведенным выше кодом не имеет значения, сколько листов в книге, он просто удалит рабочий лист.
И поскольку я не менял свойство Application.DisplayAlert, вы увидите приглашение, в котором вам нужно будет нажать кнопку удаления, чтобы подтвердить продолжительность листа продаж.
Если вы хотите удалить несколько листов по их имени, вы также можете это сделать.
Например, приведенный ниже код удалит листы с именами Продажи, Маркетинг, Финансы:
Удаление всех листов, кроме активного листа, с помощью VBA
Если у вас есть книга с несколькими листами, и вы хотите удалить все листы, кроме активного листа, VBA, вероятно, является одним из лучших способов сделать это.
Ниже приведен код VBA, который удалит все листы, кроме активного листа в книге.
Обратите внимание, что я сказал, что свойство Application.DisplayAlerts находится в начале кода, так как я не хочу видеть подсказку для каждого удаляемого листа.
Удалить все листы с определенной текстовой строкой в имени
Это немного более продвинутый вариант эффективного использования VBA при удалении листов.
Предположим, у вас есть книга с множеством разных листов, и вы хотите удалить все листы, в которых есть определенная текстовая строка, тогда вы можете легко сделать это с помощью VBA.
Например, ниже у меня есть рабочая книга, из которой я хочу удалить все рабочие листы, содержащие текстовую строку «Продажи».
Ниже приведен код VBA, который сделает это:
В приведенном выше коде используется оператор if-then для просмотра всех листов в книге. Он проверяет имя всех этих рабочих листов, и если имя содержит слово «Продажи», то этот рабочий лист удаляется.
Если вы хотите изменить код и найти любую другую текстовую строку, вы можете изменить ее в пятой строке приведенного выше кода.
Также обратите внимание, что я использовал звездочку (*), которая является символом подстановки, с обеих сторон текстовой строки, которую мы ищем в имени рабочего листа. Это гарантирует, что независимо от того, где строка появляется в имени рабочего листа, она все равно будет удалена.
Вы также можете изменить код, чтобы убедиться, что удаляются только те листы, где текстовая строка появляется в начале имени листа.
Например, если вы хотите удалить те листы, в которых термин продажи появляется в начале, используйте следующий код в пятой строке.
Здесь я использовал подстановочный знак только после текста «drink», а не перед ним. Это гарантирует, что при проверке имен рабочего листа только те будут удовлетворять критериям, в которых термин «Продажи» стоит в начале имени.
Итак, это некоторые из методов, которые вы можете использовать, если хотите удалить листы в Excel. В большинстве случаев вы можете легко сделать это прямо на рабочем листе с помощью мыши или сочетания клавиш.
Но если у вас тяжелая книга с большим количеством листов и вы хотите быстро удалить определенные типы листов, вы также можете использовать VBA.
К этому времени мы все знаем, как снять защиту с листа. Лист удаления VBA имеет такой же способ написания кода, что и лист с незащищенной защитой. VBA Delete Sheet, как следует из названия, используется для автоматического удаления выбранного листа. Чтобы использовать функцию удаления VBA для удаления любого листа, сначала нам нужно определить, какой лист мы хотим удалить. Функция удаления VBA работает, когда мы вызываем имя листа или последовательность этого листа, а затем используем функцию удаления после этого. Ниже приведен синтаксис таблицы удаления VBA.
Вышеуказанный синтаксис будет использоваться многими различными способами в следующих примерах.
Как удалить лист в Excel VBA?
Мы узнаем, как удалить лист в Excel, используя код VBA.
Вы можете скачать этот Пример удаления листа VBA здесь - Пример удаления листа VBA
VBA Delete Sheet - Пример № 1
В этом примере мы увидим простой способ удаления любого листа. Для этого выполните следующие шаги:
Шаг 1. Откройте модуль на вкладке меню «Вставка».
Шаг 2: Теперь напишите подкатегорию VBA Delete Sheet. Мы можем использовать любое другое имя для определения кода.
Код:
Шаг 3: Используйте объект Worksheets и выберите лист, который мы хотим удалить. Здесь этот лист называется Sheet1 .
Код:
Шаг 4: Теперь используйте функцию удаления после имени выбранного листа.
Код:
Шаг 5: Запустите код, нажав клавишу F5 или нажав кнопку воспроизведения.
Мы увидим, что система предложит нам предупреждение, что Excel удалит лист навсегда. Чтобы продолжить, нажмите « Удалить» .
Шаг 6: Мы увидим, что лист «Лист1» теперь удален.
Шаг 7: Предположим, мы пытаемся удалить лист, который не существует, или если мы в итоге введем неправильное имя. Ниже я попытался ввести имя листа, которого нет в файле Excel, как показано ниже.
Код:
Шаг 8: Теперь запустите код. Мы увидим, что VBA выдает нам ошибку «Subscript out of Range», что означает, что мы выбрали лист, который не существует.
VBA Delete Sheet - Пример № 2
Существует еще один способ реализации VBA Delete Sheet. Это не такой маленький код, как метод, который мы видели в примере 1. Но также простой способ реализации. Для этого выполните следующие шаги:
Шаг 1: Запишите подпроцедуру листа VBA Delete, как показано ниже.
Код:
Шаг 2: Теперь выберите переменную для Worksheet с любым именем. Здесь мы выбрали ExSheet, как показано ниже.
Код:
Шаг 3: Теперь установите определенную переменную с помощью функции Worksheets и вставьте имя листа, который мы хотим удалить. Здесь снова имя листа « Лист1 ».
Код:
Шаг 4: Теперь назначьте определенную переменную функцией Delete, как показано ниже.
Код:
Шаг 5: Теперь запустите код, нажав клавишу F5 или нажав кнопку Play.
VBA Delete Sheet - Пример № 3
В этом примере мы увидим, как удалить лист, который в данный момент активен. Для этого выполните следующие шаги.
Шаг 1: Запишите подпроцедуру удаления листа VBA, как показано ниже.
Код:
Шаг 2: Используйте ту же строку кода для объявления переменной, что и Worksheet, как показано ниже, которую мы использовали в приведенных выше примерах.
Код:
Шаг 3: Теперь откройте цикл For Next, как показано ниже.
Код:
Шаг 4. Теперь мы выберем активную текущую рабочую таблицу из всех рабочих таблиц, доступных в Excel Workbook.
Код:
Шаг 5: После того, как выбранная в данный момент рабочая таблица выбрана, мы будем использовать функцию Delete с переменной ExSheet, чтобы удалить ее.
Код:
Шаг 6: Теперь скомпилируйте код и запустите его, если ошибки не найдены. Это удалит активную рабочую таблицу из открытой выбранной рабочей книги.
VBA Delete Sheet - Пример № 4
Код, который мы видели в примере 3, можно увидеть еще одним способом. Мы можем использовать If End If Loop вместе с циклом For Next.
Шаг 1: Давайте просто рассмотрим тот же код, который мы видели в приведенном выше примере-3.
Код:
Шаг 2: Этот код удаляет лист, который в данный момент активен. Что если мы улучшим это условие, выбрав лист, который в данный момент активен и с точно таким же именем? Да, для этого нам нужно открыть цикл If End If, где мы запишем условие для этого сразу после цикла For.
Код:
Шаг 3. Теперь запишите условие в цикле If, как будто имя листа в переменной ExSheet равно и точно соответствует « Sheet1 » (или любому другому имени листа), затем удалите этот лист, используя переменную ExSheet.
Код:
Шаг 4: Мы можем скомпилировать код здесь, так как здесь нужно выполнить много шагов. Затем запустите код после этого.
Плюсы Excel VBA Удалить лист
- Это очень полезно, когда у нас есть огромный набор данных на разных листах, которые мы должны довольно часто удалять после выполнения задачи.
- Код, показанный в примере-1, является самым простым кодом для применения.
- Мы даже можем выбрать более одного листа, который мы хотим удалить.
То, что нужно запомнить
- Мы можем также выбрать последовательность листа вместо имени листа, которое мы хотим удалить.
- Причиной получения предупреждения перед удалением листа является то, что Excel предлагает нам проверить, есть ли какие-либо данные, которые мы не хотим потерять.
- Как только мы закончим с кодированием, сохраните файл Excel в формате Macro enable Excel, чтобы избежать потери написанного кода.
Рекомендуемые статьи
Это руководство по удалению VBA. Здесь мы обсудим, как удалить лист в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Создание новых рабочих листов осуществляется с помощью метода Sheets.Add.
Синтаксис метода Sheets.Add
expression.Add [Before, After, Count, Type]
где expression — переменная, представляющая собой объект Sheet.
Компоненты метода Sheets.Add
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлен новый.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлен новый.
- Count — необязательный параметр типа данных Variant, указывающий, сколько листов будет добавлено (по умолчанию — 1).
- Type — необязательный параметр типа данных Variant, указывающий тип листа: xlWorksheet** (рабочий лист) или xlChart (диаграмма), по умолчанию — xlWorksheet.
*Если Before и After не указаны, новый лист, по умолчанию, будет добавлен перед активным листом.
**Для создания рабочего листа (xlWorksheet) можно использовать метод Worksheets.Add, который для создания диаграмм уже не подойдет.
Примеры создания листов
ThisWorkbook . Sheets . Add After : = ActiveSheet , Count : = 2 Workbooks ( "Книга1.xlsm" ) . Sheets . Add After : = Лист 1 Workbooks ( "Книга1.xlsm" ) . Sheets . Add After : = Worksheets ( 1 ) Workbooks ( "Книга1.xlsm" ) . Sheets . Add After : = Worksheets ( "Лист1" ) Workbooks ( "Книга1.xlsm" ) . Sheets . Add . Name = "Мой новый лист" Sheets . Add Before : = Worksheets ( Worksheets . Count )- Лист1 в After:=Лист1 — это уникальное имя листа, указанное в проводнике редактора VBA без скобок.
- Лист1 в After:=Worksheets(«Лист1») — это имя на ярлыке листа, указанное в проводнике редактора VBA в скобках.
Создаваемый лист можно присвоить объектной переменной:
Set myList = Workbooks ( "Книга1.xlsm" ) . Worksheets . AddЕсли создаваемый лист присваивается объектной переменной, он будет помещен перед активным листом. Указать дополнительные параметры невозможно.
Копирование листов
Копирование рабочих листов осуществляется с помощью метода Worksheet.Copy.
Синтаксис метода Worksheet.Copy
expression.Copy [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Copy
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет добавлена копия.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет добавлена копия.
*Если Before и After не указаны, Excel создаст новую книгу и поместит копию листа в нее. Если скопированный лист содержит код в проекте VBA (в модуле листа), он тоже будет перенесен в новую книгу.
Примеры копирования листов
Worksheets ( "Лист1" ) . Copy Before : = Worksheets ( "Лист2" ) Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . Copy _Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листов
Перемещение рабочих листов осуществляется с помощью метода Worksheet.Move.
Синтаксис метода Worksheet.Move
expression.Move [Before, After]
где expression — переменная, представляющая собой объект Worksheet.
Компоненты метода Worksheet.Move
- Before* — необязательный параметр типа данных Variant, указывающий на лист, перед которым будет размещен перемещаемый лист.
- After* — необязательный параметр типа данных Variant, указывающий на лист, после которого будет размещен перемещаемый лист.
*Если Before и After не указаны, Excel создаст новую книгу и переместит лист в нее.
Примеры перемещения листов
Простые примеры перемещения листов:
Worksheets ( "Лист1" ) . Move Before : = Worksheets ( "Лист2" ) Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . Move _Если рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Перемещение листа «Лист4» в позицию перед листом, указанным как по порядковому номеру, так и по имени ярлыка:
x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист4»" )Удаление листов
Удаление рабочих листов осуществляется с помощью метода Worksheet.Delete
Синтаксис метода Worksheet.Delete
где expression — переменная, представляющая собой объект Worksheet.
Примеры удаления листов
Workbooks ( "Книга1.xlsm" ) . Worksheets ( "Лист1" ) . DeleteЕсли рабочие книги указаны как элементы коллекции Workbooks, в том числе ActiveWorkbook и ThisWorkbook, листы нужно указывать как элементы коллекции Worksheets, использование уникальных имен вызовет ошибку.
Как обратиться к рабочему листу, переименовать, скрыть или отобразить его с помощью кода VBA Excel, смотрите в этой статье.
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.48 комментариев для “VBA Excel. Рабочий лист (создание, копирование, удаление)”
А как удалить листы не указывая постоянно их название?:
Если по крупному
нет Проверки наличия Листа в книге
нет Переименования Листа
Добрый день, Эдуард!
Я правильно понял вопрос: нужно, чтобы макрос при каждом запуске создавал копию листа и присваивал ему новое имя, отличное от имени по умолчанию? Если так, то по каким правилам должно создаваться новое имя?
Здравствуйте. Не могу найти макрос может кто поможет.
Задача состоит в том что бы макрос читал все листы книги после чего делал копию этих листов и вставлял в эти же листы данные как значения. Т.е. фактически разрывал связи методом копи паст но на всех листах книги (колличество листов в книге может быть каждый раз разное.
Добрый день!
У меня вопрос.
Как перемещать лист перед другим листом, номер или название которого будет вводить пользователь?
Привет, Артур!
Перемещение листа «Лист2» на позицию перед листом, имя ярлыка которого вводится в текстовое поле информационного окна InputBox:
Спасибо!
У меня ещё вопрос. А если указывать номер листа, перед которым будет другой лист, какое изменение будет в коде?
А так можно вводить и номер, и имя:
x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист2»" ) x = InputBox ( "Введите имя или номер листа" , "Перемещение листа «Лист2»" )Добрый день! Возможно ли полное копирование листа на нужный мне лист? В январе заполняются данные каждый день и надо чтобы за каждый день создавалась копия на заранее созданные 31 лист по дням?
. PasteSpecial Paste : = xlPasteFormulasAndNumberFormatsДобрый день, Эдуард!
Это можно сделать двумя строками, но перед копированием следует проверить, не был ли исходный лист сегодня уже сохранен под новым именем:
Спасибо за помощь! Нашел другое решение более мне подходящее но не знаю как сделать чтобы созданые листы вставлялись по порядку нумерации 1,2,3 и т.д. после активного листа? Не поможете вот код
destSht . Move After : = Worksheets ( Worksheets . Count )Спасибо все работает!
Еще вопрос, можно ли скопировать лист не в конец книги а между листами, есть 12 месяцев в книге ексель чтобы копировалось после января, февраля?
И может еще чтобы кнопка с макросом не копировалась а создавалась гипперссылка обратно на лист?
Sheets . Add . Name = InputBox ( "Ввести дату - від 1 до 31" ) destSht . Move After : = Worksheets ( Worksheets . Count )Я добавил код перемещения нового листа относительно исходного листа с именем текущего месяца и удаления ненужного нового листа, который создается при повторном вводе одного и того же числа:
Sheets . Add . Name = InputBox ( "Ввести дату - від 1 до 31" ) destSht . Move After : = Worksheets ( CStr ( CByte ( destSht . Name ) - 1 ) )Евгений огромное спасибо это то что и требовалось весьма признателен за Вашу помощь.
Эдуард, представленный выше код будет работать только с одним месяцем. Excel не даст создать в одной книге несколько листов с одним именем (одно и то же число, но разных месяцев). Вам придется как-то изменить наименование листов, например: 1.01-31.01, 1.02-28.02. Тогда для перемещения новых листов придется использовать другой алгоритм или по окончании одного месяца, все его листы переименовать, например так:
MsgBox "Такой номер уже используется - введите другой"Я понял этого и не требуется по окончанию месяца листы будут сохранены отдельно.
А вот по предедущему коду нельзя ввести произвольное число т.е не по порядку 1,2,3 а сразу например 17 пропустив с 1 по 16?
Помогите с мелочью никак не пойму куда вставить умножить на 2,1 и на 1,9 чтобы не считалось +_ 20% в этой формуле?
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1))
Эдуард, может быть у вас для ячейки с формулой установлен формат «Процентный»?
Нет числовой. условное форматирование со стрелками вверх вниз и вправо
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1*2,6)) для стрелки вверх
=ДВССЫЛ(АДРЕС(СТРОКА();СТОЛБЕЦ()-1;1;1*2,4)) для стрелки вправо
но не работает может я не туда вставляю *2,6
Синтаксис функции АДРЕС:
АДРЕС(номер_строки;номер_столбца;[тип_ссылки];[A1];[имя_листа])
Там, где вы умножаете, должно быть логическое значение [A1]: ИСТИНА или ЛОЖЬ (1 или 0).
удаляю Лист по имени на ярлычке
Евгений, помогите пожалуйста со следующей задачей.
В папке несколько документов эксель, в каждом из которых несколько листов.
Необходимо, чтобы макрос открывал по порядку каждый документ, проходил по каждому листу и брал оттуда нужную информацию. Затем эта информация переносится в новый документ эксель в заданном порядке.
В целом программу я реализовал, но столкнулся с проблемой, что debug упирается в последний лист первого открытого документа и не может дальше перейти к следующему документу. Т.е. необходимо прописать условие, чтобы vba понимал, что данный лист в документе последний.
Подскажите пожалуйста, как это сделать?
Цикл будет завершен после обработки последнего листа.
Здравствуйте!
Возможно ли при копировании листа из другого файла перенести и пользовательский стиль таблицы?
Добрый день!
Если не ошибаюсь, пользовательский стиль таблицы всегда копируется вместе с листом, но внешний вид таблиц будет одинаков, если оба файла созданы и открыты в одной версии Excel.
Спасибо за ответ.
Увы, не так, и даже всё не так.
Стиль «пытается» копироваться, цвета отличаются оттенками, но это полбеды. Главное, что нужно мне, чтобы копировался цвет шрифта таблицы, а этого не происходит. Почему-то на листе-цели устанавливается на весь лист чёрный шрифт, который Эксель считает главнее табличного.
И даже больше. После ручной замены на всё листе-цели шрифта с чёрного на авто замены цвета шрифта в импортированной таблице не происходит. Что всегда есть при ручной работе с таблицами.
Ну, и совсем глюк. Пользовательский стиль переезжает и доступен в новой книге. Но даже при ручном его выборе на листе-цели для таблицы не происходит смены цвета шрифта.
Цвет можно поменять только руками (макросом) без учёта таблицы.
Всё это происходит на одном компьютере в одной ОС В10.
Хм. Эксель 2016, всё выше описанное по-прежнему.
Если не затруднит, скопируйте умную таблицу макросом на новый лист, перед этим созданный тем же макросом.
Как правило, знакомство с языком VBA начинается с выполнения простейших программ, называемых макросами. С их помощью можно выполнить такие функции, как удаление листа или строки в Excel. В дальнейшем полученные знания можно использовать для написания более сложных программ.
Что такое макрос и зачем он нужен?
Удаление листа Excel
Вам будет интересно: MiFlash: как пользоваться, особенности прошивки, возможные проблемы и советы специалистов
Делается это следующим образом:
- Создаем новый документ Excel (на примере Excel 2010).
- Вставляем несколько листов и вносим в них произвольные данные.
- Чтобы открыть редактор VBA, нажимаем Alt+F11.
- Для вставки нового модуля (собственно, это и есть макрос) переходим на вкладку Insert (Вставить) и выбираем Module.
- Вставляем код:
Удаление строк в Excel
Теперь посмотрим, как удалить строки макросами Excel. Для начала уберем одну строку. Чтобы модуль легче было искать, так его и назовем – DeleteRow.
После выполнения макроса в Excel удалится строка под первым номером. Остальные сдвинутся вверх. Для удаления нескольких меняем вторую строку кода на следующую:
В данном случае будут удалены строки со второй по пятнадцатую.
Удаление
Макросы являются программами и могут причинить существенный вред компьютеру. Теперь рассмотрим, как удалить макрос в Excel.
Открываем вкладку «Вид», нажимаем на «Макросы», выбираем верхнюю строку под названием «Макросы», выбираем подлежащий удалению и нажимаем соответствующую кнопку.
Процесс удаления макроса в Excel 2003 имеет одну особенность. Чтобы полностью убрать его, нужно будет вручную очистить все модули. Для этого нужно зайти в редактор Visual Basic.
Удаление макросов программным способом
Следующий способ, как можно удалить макрос в Excel, заключается в использовании надстройки – специальной программы, которая устанавливается отдельно и содержит в себе несколько модулей для выполнения различных функций. Одной из таких надстроек является Kutools. С помощью данной программы можно одновременно удалить все макросы Excel.
Данная надстройка имеет более 300 различных функций. Отметим некоторые интересные функции:
- преобразование обычных чисел в римские и обратно;
- конвертация валюты с использованием актуальных курсов валют;
- преобразование единиц измерения;
- поиск ячеек с определенным форматированием;
- удаление пустых листов, строк, столбцов.
При наличии большой базы макросов можно создать собственную надстройку. Благодаря этому можно будет разграничить «свои» и «чужие» (Excel будет им автоматически доверять).
Что делать, если он хранится в Личной книге? Как удалить макрос в Excel в этом случае? Сперва нужно отобразить скрытое окно. Для этого следует выбрать вкладку «Вид» и в группе «Окно» нажать кнопку «Отобразить». В дальнейшем процедура удаления макроса включает стандартные шаги.
Важно отметить, что при удалении через вкладку «Вид» открывается окно просмотра макросов. По умолчанию выбран пункт «Находится во всех открытых книгах». Как удалить макрос в Excel только для одного документа? Нужно выбрать соответствующий пункт в меню «Находится»: либо «Эта книга», либо пункт меню с названием данного документа.
Читайте также: