Сделать лист активным vba: Метод Worksheet.Activate (Excel) | Microsoft Learn

Макрос для копирования листа в Excel c любым количеством копий

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

Как макросом скопировать листы в Excel

Допустим необходимо приготовить планы работ для сотрудников вашего отдела. Иметься шаблон таблицы для заполнения документа плана в виде одного рабочего листа Excel:

Но вам необходимо создать 12 планов и соответственно 12 листов. В программе Excel нет встроенного инструмента для многократного создания копий рабочих листов за одну операцию. А копировать и вставлять 12 (а в практике встречаются случаи что и 120) листов вручную, да еще их все нужно переименовать – это потребует много рабочего времени и пользовательских сил. Определенно лучше в таком случае воспользоваться собственным макросом. А чтобы его написать воспользуйтесь VBA-кодом, который будет представлен ниже в данной статье.

Сначала откройте редактор макросов Visual Basic:

Создайте в нем стандартный модуль с помощью опций меню: «Insert»-«Module» и введите в него этот код, который ниже представленный на листинге:

Sub CopyList()
  Dim kolvo As Variant
  Dim i As Long
  Dim list As Worksheet
kolvo = InputBox("Укажите необходимое количество копий для данного листа")
If kolvo = "" Then Exit Sub
If IsNumeric(kolvo) Then
kolvo = Fix(kolvo)
Set list = ActiveSheet
For i = 1 To kolvo
list. Copy after:=ActiveSheet
ActiveSheet.Name = list.Name & i
Next
Else
MsgBox "Неправильно указано количество"
End If
End Sub

Теперь если нам нужно скопировать 12 (или любое другое количество) раз листов содержащие шаблон для заполнения плана работы сотрудника, кликните по исходному листу, чтобы сделать его активным и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CopyList»-«Выполнить». Сразу после запуска макроса появиться диалоговое окно, в котором следует указать количество копий листа:

Введите, например, число 12 и нажмите ОК:

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

Внимание! Если название исходного листа слишком длинное, тогда может возникнуть ошибка в процессе выполнения макроса. Ведь в Excel название листа не может содержать более чем 31 символ. То есть ориентируйтесь так чтобы название исходного листа было меньше чем 27 символов. Так же ошибка может возникнуть если текущая рабочая книга Excel уже содержит листы с таким названием как у копий. Ведь в Excel все листы должны иметь уникальные названия.

Примечание. В новых версиях Excel (начиная от 2010 версии) одна рабочая книга может содержать максимальное количество листов, которое ограничивается лишь размером свободной оперативной памяти системы.



Описание кода макроса для копирования листов Excel

В коде используются 3 переменные:

  1. kolvo – в этой переменной определено какое количество копий будет создано при копировании текущего рабочего листа Excel.
  2. i – счетчик циклов.
  3. list – в этой переменной будет создан экземпляр объекта листа Excel.

В начале макроса вызываем диалоговое окно, в котором пользователь должен указать в поле ввода какое количество копий листов необходимо создать с помощью данного макроса «CopyList». Введенное числовое значение в поле ввода из этого диалогового окна передается в переменную kolvo. Если поле ввода пустое или в диалоговом окне была нажата кнопка отмены «Cancel», тогда дальнейшие инструкции не выполняться и работа макроса прерывается.

В следующей строке кода проверяется: является ли введенное значение в поле ввода – числовым? Если да, тогда на всякий случай удаляются все числа после запятой с помощью функции Fix.

Далее в переменой list создается экземпляр объекта ActiveSheet. После в цикле копируются листы. Количество циклов выполняется ровно столько, сколько пользователь указал в диалоговом окне макроса. В процессе копирования каждый раз изменяется название для новой копии листа. Так как в одной книге не может быть 2 и более листов с одинаковым названием. Уникальные названия для каждой копии создаются за счет присвоения к названию исходного листа число с порядковым номером текущего цикла. При необходимости пользователь может задать свои параметры для присвоения названия копиям листов изменив данную строку кода. Главное придерживаться правила уникальности названий листов.

Примечание. Если нет необходимости настраивать названия для новых листов, тогда данную строку кода можно закомментировать.

‘ActiveSheet.Name = list.Name & i

Читайте также: Макрос для переименования листов Excel при копировании.

В таком случае названия для копий Excel будет присваивать сам. Например, для исходного листа с названием «Лист1» копии будут получать названия: «Лист1 (2)», «Лист1 (3)», «Лист1 (4)» и т.д.

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

Диспетчер листов Excel




Готовые решения »


Надстройка VBA-Excel »
Диспетчер листов

Диспетчер помогает быстро перемещаться по листам, выполнять различные операции с ними (удалять, скрывать, сортировать и многое другое)

Добавить в Excel

Работа с диспетчером листов

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

Откроется диалоговое окно, в котором будут перечислены все имеющиеся листы активной книги Excel, а также основная информация по ним: номер по порядку, названиетип (лист/диаграмма), видимость (видимый/скрытый/супер скрытый), установлена ли защита листа, количество ячеек содержащие данные.

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

Использование фильтра

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

На картинке далее более наглядно видна работа фильтра.

Перемещение листов

С помощью кнопок справа от списка листов можно перемещать как один так и несколько листов одновременно.

Одинарная стрелка  перемещает листы вверх на 1 позицию, в то время как двойная стрелка  перемещает их в начало книги. Соответственно одинарная и двойная стрелки с направлением вниз, перемещают листы вниз на 1 позицию или в конец списка соответственно. Кнопка между стрелками  делает выбранный лист активным.

Активировать выбранный лист

Чтобы перейти к любому листу можно дважды кликнуть по соответствующей строке в диспетчере. При этом если лист был скрыт (или супер скрыт), то он автоматически будет переведен в Видимый.

Операции с листами

С выбранными листами можно выполнять различные действия:
















Защита. Установить или снять защиту с выбранных листов. Можно дополнительно настроить степень защиты, указать пароль.
Объединить. Собрать данные с выделенных листов в указанное место.
Сортировка. Можно отсортировать листы в алфавитном порядке или по цвету заливки.
Сохранить листы как книги. Каждый выбранный лист Excel можно сохранить как отдельную книги в указанное место.
Только значения. Очистить выбранные листы от формул заменив их на значения.
Видимость. Изменить видимость выбранных листов. Работает как переключатель. Видимый/Скрытый/Супер скрытый.
Оглавление. Создание листа с оглавлением, которое содержит перечень всех листов книги.
Список листов. Выводит список всех листов в указанную ячейку.
Создать листы. Создает листы из заданного диапазона.
Переименовать. Позволяет массово переименовать листы указав к старым наименованиям их новые варианты.
Копировать листы. Создает заданное количество копий выбранных листов.
Удалить картинки. Удаляет все картинки и прочие объекты с выбранных листов.
Ярлыки листов. Скрывает или отображает ярлыки листов.
Удалить пустые. Позволяет удалить листы, которые не содержат никаких данных
Удалить. Удалить выбранные листы. ВНИМАНИЕ! Действие не обратимо.

 

Надстройка

VBA-Excel

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

Добавить в Excel

Рекомендуем к прочтению

Как сделать оглавление в Excel

Расширение диспетчера имен Excel

Диспетчер стилей Excel

Как объединить листы в Еxcel в один

Как сделать скриншот в Excel

Как скопировать лист Excel несколько раз

Как создать листы из диапазона

Как вывести список листов в Excel

Как переименовать все листы книги

Как удалить пустые листы в Excel

Диспетчер открытых книг в Excel

Как удалить все картинки в Excel с выбранных листов

Одновременная работа с группой листов Excel

Комментарии:

Please enable JavaScript to view the comments powered by Disqus.comments powered by Disqus

Научитесь получать доступ, переименовывать и активировать с помощью 4 примеров

В этом руководстве показано, как сделать неактивный лист в Excel активным с помощью кода VBA.

Работа с активным листом Excel с помощью VBA

В этом руководстве вы узнаете, как сделать неактивный лист в Excel активным листом с помощью кода VBA.

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

Для информации: если лист активен, действия, которые вы выполняете, такие как макрокоманды, доступ к данным и т. д., без ссылки на имя/номер листа, будут выполняться на этом активном листе.

Пример получения имени активного листа в VBA

Начнем с простого примера получения имени активного листа и его отображения в окне сообщения.

В нашем образце рабочей книги есть следующие листы:

В VBA Объект Application имеет свойство ActiveSheet , которое позволяет нам работать с активным листом.

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

Показать имя активного листа в примере оповещения

Шаг 1:

Поместить кнопку на лист:

Шаг 2:

Двойной щелчок на кнопку в « Design Mode » чтобы открыть редактор VBA

Шаг 3:

Напишите эту строку кода в событии нажатия кнопки:

MsgBox «Active Sheet Name = » & ActiveSheet. Name

Сохраните код и вернитесь к листу, содержащему это кнопка.

Шаг 4:

Нажмите кнопку после отмены выбора «Режим дизайна», и в предупреждении должно отображаться имя нашего активного листа, как показано ниже:

Активация листа в VBA, пример

Чтобы сделать лист активным в VBA, вы можете использовать объект Worksheet с его методом Activate .

Предположим, мы были на листе «test1» в нашем образце рабочей тетради. Мы хотим сделать «Лист5» активным. Вот как вы можете это сделать:

Рабочие листы («Лист5»). Активировать

Давайте посмотрим на это визуально.

Шаг 1:

Мы разместили командную кнопку на листе «test1».

Шаг 2:

Дважды щелкните кнопку, чтобы открыть редактор VBA, и напишите эти строки кода в событии нажатия кнопки:

1

2

3

4

5

6

7

8

9 9 0003

‘Отображать имя активного листа перед методом активации

 

MsgBox «Имя активного листа = » & ActiveSheet. Name

 

Worksheets(«Sheet5»).Activate

 

‘Отобразить имя активного листа после метода Activate

 

MsgBox «Имя активного листа = » & ActiveSheet.Name

Сохраните код.

Помните , чтобы выбрать «Режим дизайна», чтобы открыть редактор.

Шаг 3:

Нажмите на кнопку, и должны появиться два окна сообщений. Во-первых, имя текущего активного листа, то есть «test1» в нашем образце листа.

Затем выполняется эта строка кода:

Рабочие листы («Лист5»). Активировать

И снова появляется окно сообщения, которое показывает следующее:

Пример переименования активного листа

Для переименования активный лист, просто используйте ActiveSheet.Name , то есть

ActiveSheet.Name = «Новое имя»

Чтобы продемонстрировать это, рассмотрим наш пример рабочей книги, показанный в первом примере, давайте изменим имя активного листа.

«Лист5» — наш активный лист, и мы хотим переименовать его в «Информация о продукте». Смотрите ниже как.

Шаг 1:

Поместите командную кнопку в Sheet5 и откройте редактор VBA, дважды щелкнув по кнопке.

Шаг 2:

Напишите этот код при нажатии кнопки:

1

2

3

4

5

6

7

8

9

   ‘Имя листа до

 

    MsgBox «Active Sheet Name = » & ActiveSheet.Name

 

    ActiveSheet.Name = «Информация о продукте»

 

    ‘Имя листа после

 

    MsgBox «Имя активного листа = » & ActiveSheet.Name

Сохраните код.

Шаг 3:

Нажмите кнопку, и имя Sheet5 изменится, как показано ниже:

Пример удаления активного листа

Удалить активный лист также просто. Просто используйте метод:

ActiveSheet.Delete

, и активный лист будет удален.

Например, мы записали эту строку кода в событие нажатия командной кнопки. Когда вы нажмете кнопку, Excel выдаст предупреждающее сообщение.

Нажатие «Удалить» удалит активный лист, в нашем случае лист «Информация о продукте», как показано ниже:

excel — Как создать и использовать новый лист в качестве «нового» ActiveSheet VBA

спросил

Изменено
1 год, 10 месяцев назад

Просмотрено
296 раз

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

 Если ActiveSheet.index = Рабочие Листы.Количество Тогда
    Листы.Добавить
Еще
    ActiveSheet.index = Рабочие листы.Количество
Конец, если
 

Спасибо!

  • Excel
  • ВБА

3

Просто запустите Sheets.Add .
Это создаст новый лист, и этот новый лист будет активным.

Worksheets.Add() возвращает ссылку на только что добавленный лист, поэтому нет необходимости полагаться на ActiveSheet здесь…

Вот так:

 Dim ws as worksheet
Dim wb как рабочая книга
установить ws = активный лист
Установите wb = activesheet.parent
если ws.Index = wb.worksheets.count, то
'добавляем новый лист и устанавливаем `ws` как ссылку на него
Установите ws = wb.worksheets.add (после: = wb.worksheets (wb.worksheets.count))
конец, если
'теперь работайте с `ws`.