Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1888.DOC
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
5.52 Mб
Скачать

6.3.3. Коллекция Sheets

Данная коллекция представляет собой коллекцию листов (Sheets) в книге (WorkBook). Определить количество листов в книге можно с помощью следующего макроса:

Sub Test()

MsgBox (Str(Application.Workbooks("Test.xls").Sheets.Count))

End Sub

Свойство Name позволяет получить имя листа:

Sub Test()

With Application.Workbooks("Test.xls")

For x = 1 To .Sheets.Count

MsgBox (Sheets(x).Name)

Next x

End With

End Sub

Под объектом Sheet понимается не только рабочий лист, но и диаграмма, расположенная на отдельном листе. Так же как и лист для расчетов, диаграмма будет включена в подсчет листов. Отличить их поможет свойство Type:

Sub Test()

With Application.Workbooks ("Test.xls")

For x = 1 To .Sheets.Count

MsgBox (Sheets(x).Type)

If Sheets(x).Type = 3 Then

MsgBox Sheets(x).Name

Next x

End With

End Sub

Метод Select позволяет выделять листы:

Sub Test()

Sheets("Лист2").Select

End Sub

К коллекции листов есть возможность добавлять свои листы. Для этого существует метод Add. Этот метод требует четыре аргумента: Before, After, Count, Type. Они все необязательные. Первые два отвечают за место вставки листа. Дальше количество вставляемых листов Count и тип листа. Типы могут быть, например, такие: xlWorkSheet для расчетного листа, xlChart для диаграммы. Если местоположение не указывать, то лист будет вставляться относительно текущего листа:

Sub Test()

With Application.Workbooks.Item("Test.xls")

Sheets.Add

End With

End Sub

Метод Parent позволяет узнать, какой книге принадлежит текущий лист:

Sub Test()

With Application.Workbooks(1)

MsgBox (Sheets.Parent.Name)

End With

End Sub

Свойство Visible позволяет скрыть или отобразить лист. В первом случае свойству нужно присвоить значение True, а во втором – False:

Sub Test()

Sheets("Лист1").Visible = False

End Sub

Один из полезных методов – это метод Copy. Он позволяет создавать новый лист на основе существующего, т. е. использовать лист как шаблон для других листов. Аргумент after – это лист, после которого произойдет вставка:

Sub Test()

Sheets("Лист1").Copy after:=Sheets("Лист2")

End Sub

У метода Copy есть особенность. Если не указывать аргументы, то будет создана новая книга с копируемым листом:

Sub Test()

Sheets("Лист1").Copy

End Sub

При необходимости передвинуть лист есть метод Move:

Sub Test()

Sheets("Лист1").Move after:=Sheets("Лист2")

End Sub

Метод Delete позволяет удалить лист:

Sub Test()

' Удаляет рабочий лист sSheetName,

' если дата dDelDate уже наступила

Dim sSheetName As String

Dim dDelDate As Date

On Error GoTo errHandle

sSheetName = "Лист3"

dDelDate = #4/20/2006#

' Проверка даты

If dDelDate <= Date Then

' Не выводить подтверждение на удаление

Application.DisplayAlerts = False

Sheets(sSheetName).Delete

Application.DisplayAlerts = True

End If

Exit Sub

errHandle:

MsgBox Err.Description, vbCritical, "Ошибка №" & Err.Number

End Sub

Следующая функция проверяет наличие листа с заданным именем:

Function IsSheetExist(ByVal shName As String) As Boolean

' Проверяет, имеется ли в активной рабочей книге лист с именем

' shName. ' В случае успеха возвращает True, иначе – False

Dim c As Object

On Error GoTo errНandle:

Set c = sheets(shName)

' Альтернативный вариант : Sheets(shName).Select

IsSheetExist = True

Exit Function

errНandle:

IsSheetExist = False

End Function

Sub Test()

Dim sh1, sh100 As String

sh1 = "Лист1"

sh100 = "Лист100"

MsgBox ("Наличие листа " & sh1 & " - " & IsSheetExist(sh1))

MsgBox ("Наличие листа " & sh100 & " - " & IsSheetExist(sh100))

End Sub