Применение квадратных скобок при симулировании



Операций на рабочем листе

Вместо метода Evaluate со строкой в качестве значения его параметра, можно использовать эту же строку, но заключенную в квадратные скобки. Запись оператора будет короче, а результат — тот же.

[al].Value = 25

[а2].Formula = "=А1^2"

MsgBox [a2].Value

или

Dim s As Double

s = [(l+3)/2+sin(2)]

MsgBox s

Назначение выполнения процедуры на определенное время

Метод onTime объекта Application назначает выполнение указанной процедуры на определенное время.

OnTime(EarliestTime, Procedure, LatestTime, Schedule) Здесь:

r EarliestTime — обязательный параметр типа Variant, задающий момент запуска процедуры;

r Procedure — обязательный параметр типа String, задающий имя процедуры;

r Latestrime — необязательный параметр типа Variant. Если на момент запуска процедуры MS Excel не может ее запустить в силу того, что он выполняет другое действие, то Latestrime определяет последнее время ее запуска. Если этот параметр опущен, то MS Excel будет ждать до тех пор, пока не сможет выполнить данную процедуру;

r Schedule — необязательный параметр типа Variant. Если его значение равно True, то указанная процедура установлена на выполнение в специфицированное время. Если же значение равно False, то задание снято с исполнения.

Электронные часы в ячейке рабочего листа

Метод onTime позволяет создать электронные часы (листинг 5.14). Для этого достаточно рекурсивно вызывать процедуру, которая считывает текущее время и выводит в ячейку рабочего листа, затем найденное время увеличивается на секунду, а уже для вычисленного нового времени устанавливается рекурсивный вызов процедуры самой себя при помощи метода OnTime.

Листинг 5.14. Электронные часы

Sub DemoClockO

DemoOnTime

End Sub

Sub DemoOnTime()

Dim newHour, newMinute, newSecond, newTime

Cells (1, 1).Value = Now

newHour = Hour(Now)

newMinute = Minute(Now)

newSecond = Second(Now)+ 1

newTime = TimeSerial(newHour, newMinute, newSecond)

Application.OnTime EarliestTime:=newTime, Procedure:="DemoOnTime"

End Sub

Электронный будильник

Метод OnTime обеспечивает простую реализацию будильника. Для этого в качестве значения первого его параметра достаточно указать момент времени, когда будильник должен прозвонить, а в качестве значения второго параметра — ссылку на процедуру, которая и реализует "звон". Например, приводимый ниже код обеспечивает отображение сообщения "Слишком поздно!!!" в 50 минут после полуночи.

Листинг 5.15. Электронный будильник

Sub DemoAlarmO

Application.OnTime EarliestTime:=TimeValue("00:50:00") , Procedure:="AlarmClock"

End Sub

Sub AlarmClock()

MsgBox "Слишком поздно!!!"

End Sub

Отмена задания у часов

Если значение параметра Schedule метода onTime установлено равным False, то установленное при помощи параметров EarliestTime и Procedure задание снимается с выполнения. Например, код листинга 5.16 для модуля рабочего листа отменяет выполнение процедуры, играющей роль будильника из предыдущего раздела, при двойном щелчке на ячейке рабочего листа.

Листинг 5.16. Отмена задания у часов. Модуль рабочего листа

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _

Cancel As Boolean)

On Error Resume Next

Application.OnTime EarliestTime:=TimeValue("00:50:00"), _

Procedure:="AlarmClock", Schedule:=False

End Sub

Закрытие приложения

Метод Quit объекта Application закрывает приложение. Например, код листинга 5.17 из модуля рабочего листа производит закрытие приложения при двойном щелчке на ячейке рабочего листа без предупреждения пользователя о необходимости сохранить обновленную версию рабочей книги.

Листинг 5.17. Закрытие книги без отображения предупреждающего сообщения. Модуль рабочего листа

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _

Cancel As Boolean)

Application.DisplayAlerts = False

Application.Quit

End Sub

Сохранение изменений во всех рабочих книгах

Метод Save объекта Application сохраняет на диск изменения указанной рабочей книги. Код листинга 5.18 из модуля рабочего листа, обрабатывающий событие BeforeRightClick объекта Worksheet, при щелчке правой кнопкой мыши на ячейке А1 обеспечивает сохранение всех рабочих книг, открытых в данном приложении с последующим его закрытием.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

If Target Is Range("Al") Then

Dim wb As Workbook

For Each wb In Application.Workbooks

wb.Save

Next

Application.Quit

End If

End Sub


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

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






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