Применение квадратных скобок при симулировании
Операций на рабочем листе
Вместо метода 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!