Объект PageSetup и как вывести в колонтитул



Имя книги, рабочего листа и текущую дату

Объет PageSetup, возвращаемый свойством PageSetup объекта Worksheet, позволяет контролировать установки документа перед его печатью. В частности, с помощью него можно установить и колонтитулы страницы. Здесь пригодятся свойства LeftHeader, RightHeader и CenterHeader. Следующий код (листинг 5.34) из модуля ЭтаКнига демонстрирует, как можно вывести в колонтитул имя книги и рабочего листа и текущую дату.

Sub FormatHeader()

Dim i As Integer

With ThisWorkbook

For i = 1 To .Worksheets.Count - 1

.Worksheets(i).PageSetup.LeftHeader = .FullName

.Worksheets(i).PageSetup.RightHeader = Now()

.Worksheets(i).PageSetup.CenterHeader = Worksheets(i).Name

Next

End With

End Sub

Private Sub Workbook_Open()

FormatHeader

End Sub

События объекта Worksheet

Объект Worksheet поддерживает множество событий, позволяющих отслеживать различные действия пользователя от активизации листа до перехода по гиперссылке. В табл. 5.13 перечислены события, связанные с объектом Worksheet.

Таблица 5.13. События объекта Worksheet

Событие Генерируется
Activate При активизации листа
BeforeDoubleClick Перед двойным щелчком до того, как будет выполнено действие, ассоциированное по умолчанию с соответствующим объектом
BeforeRightClick Перед щелчком правой кнопкой мыши до того, как будет выполнено действие, ассоциированное по умолчанию с соответствующим объектом
Calculate При пересчете данных
Change При изменениях данных
Deactivate При деактивизации листа
FollowHyperlink При переходе по гиперссылке
PivotTableUpdate При обновлении сводной таблицы
SelectionChange При смене выделения

Блокировка действий, связанных с событием

По умолчанию

С теми или иными действиями пользователя связаны по умолчанию некоторые системные действия. Например, при нажатии правой кнопки мыши на рабочем листе отображается стандартное контекстное меню. Естественно, возникает вопрос, как блокировать эти действия, если они не совпадают с бизнес-логикой вашего проекта. Да очень просто. В процедурах обработки событий, часто присутствует параметр Cancel, который если принимает значение True, как раз и блокирует эти действия, по умолчанию предлагаемые системой пользователю. Например, в коде листинга 5.35 блокируется отображение контекстного меню, появляющегося при нажатии правой кнопки мыши. Вместо него в месте на рабочем листе, где был произведен щелчок, добавляется надпись с порядковым номером этого щелчка.

Листинг 5.35. Блокировка действий, связанных с событием по умолчанию.

Модуль рабочего листа

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _

Cancel As Boolean)

Cancel = True

Static i As Integer

Dim x As Integer

Dim у As Integer

x = Target.Left

у = Target.Top

ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _

x, y, 30, 20).TextFrame.Characters.Text = i

i = i + 1

End Sub

Добавление к графическому объекту обработчика события Click

К любому графическому или вложенному объекту можно добавить обработчик события Click с помощью установки в качестве значения свойства OnAction ссылки на этот обработчик. При этом обработчик может иметь параметры. Как это делается, показано в следующем примере, в котором предполагается, что на рабочем листе имеется, по крайней мере, один графический объект (листинг 5.36). Нажатие на него приведет к отображению диалогового окна со стандартным приветствием "Hello, World!", передаваемым в качестве значения параметра обработчика события Click (рис. 5.2). Кстати при создании этого графического объекта пришлось немного повозиться. Сначала была создана автофигура в виде звезды с градиентной заливкой, у которой была смоделирована тень. В автофигуре как в контейнере разместилась надпись с прозрачным фоном, отсутствием границы и отформатированным текстом. Затем надпись и автофигура были сгруппированы. В результате получилась вполне привлекательная картинка.

Рис . 5.2. Рисунок в виде кнопки

Sub SetButton()

Dim msg As String

msg = "Hello, World!"

Sheets(1).Shapes(1).OnAction = ..& "Shape_Click """ & msg & """"

End Sub

Sub Shape_Click(msg As String)

MsgBox msg

End Sub


Дата добавления: 2019-02-12; просмотров: 231; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!