
4.2. Объект Worksheet
Для добавления нового рабочего листа в книгу используется метод Add коллекции Worksheet: Worksheet.Add (Before, After, Count, Type). VBA присваивает новому рабочему листу очередной номер внутри рабочей книги. Все параметры являются необязательными. Если параметры Before и After опущены, то создается новый рабочий лист, который вставляется перед активным листом. Назначение параметров:
Before – задает лист, перед которым будет вставлен новый лист;
After – задает лист, после которого будет вставлен новый лист;
Count – задает количество новых листов, по умолчанию равен 1;
Type – задает тип создаваемого листа, по умолчанию xlWorksheet.
Пример 8. Добавление нового рабочего листа перед третьим листом в активной рабочей книге:
Sub Добавление_листа()
ActiveWorkbook.Worksheets.Add before:=Worksheets(3)
End Sub
Добавление нового рабочего листа после последнего листа в активной рабочей книге
Sub Добавление_листа()
ActiveWorkbook.Worksheets.Add
after:=Worksheets(Worksheets.Count)
End Sub
Добавление двух новых рабочих листов перед первым листом в активной рабочей книге:
Sub Добавление_листа()
ActiveWorkbook.Worksheets.Add count:=2
End Sub
Пример 9. Свойство Name объекта Worksheets позволяет программно изменять имя рабочего листа. Данный пример демонстрирует добавление нового листа в конец рабочей книги и его переименование:
Sub Добавление_листа()
Имя_последнего= Worksheets(Worksheets.Count).Name
Set Лист=Worksheets.Add(after:= Worksheets(Worksheets.Count))
Лист.Name= Имя_последнего & ”0”
MsgBox(“Был последний лист” & Имя_последнего & vbCr & “Стал лист” & Лист.Name)
End Sub
Задание 3.1.
Создайте макрос, который добавляет новый лист в конец рабочей книги и присваивает ему имя, роль которого играет текущее время в формате час.мин.сек. Подсказка: для получения текущего времени воспользуйтесь следующим фрагментом
Час= CSng(Hour(Time))
Мин= CSng(Minute(Time))
Сек= CSng(Second(Time))
Многократным запуском макроса убедитесь, что имена листов добавляются правильно.
Пример 10. Для удаления рабочего листа используется метод Delete объекта Worksheet. В данном примере производится удаление листа с именем «Лист 3». В ходе выполнения макроса у пользователя будет запрошено подтверждение на удаление листа.
Sub Удаление_листа()
ActiveWorkbook.Worksheets(“Лист 3”).Delete
End Sub
Пример 11. Для того, чтобы запрос не выводился, нужно пользоваться свойством DisplayAlerts:
Sub Макрос1()
Application.DisplayAlerts=False
ActiveWorkbook.Worksheets(“Лист54”).Delete
Application.DisplayAlerts=True
End Sub
Рабочие листы можно копировать и перемещать как в пределах одной рабочей книги, так и между ними. Метод Copy содержит два аргумента: Before и After, назначение которых такое же как и в методе Add. Если аргументы опущены рабочие листы копируются в новую книгу. Синтаксис метода Move не отличается от метода Copy.
Пример 12. Для копирования рабочего листа «Лист1» в позицию после листа «Лист3» метод Copy применяется следующим образом.
Sub Копирование_листа()
Worksheets(“Лист1”).Copy after:=Worksheets(“Лист3”)
End Sub
Пример 13. Перемещение Рабочего листа «Лист1» в новую рабочую книгу
Sub Перемещение_листа()
Worksheets(“Лист1”).Move
End Sub