Объект 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!