Тверской государственный университет
Опубликован: 13.09.2006 | Доступ: свободный | Студентов: 3491 / 369 | Оценка: 4.65 / 4.29 | Длительность: 30:37:00
Специальности: Программист, Менеджер
Лекция 8:

Операторы

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

Прочие операторы

И еще несколько полезных операторов VBA, не попавших ни в одну из предыдущих групп.

Операции с одним объектом. Оператор With

Если в одном блоке программы предстоит выполнить несколько операций с одним объектом, то, чтобы не повторять многократно имя этого объекта, можно ввести оператор With.

Синтаксис:

With объект
[операторы]
End
With

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

Допустим, пользовательский тип Person и переменная MyFriend определены так.

Type Person
	Name As String
	Age As Integer
	Height As Single
End Type

Dim MyFriend As Person

Тогда присвоение значений свойствам переменной MyFriend можно произвести с помощью оператора With:

With MyFriend
	Name = "Сергей"
	Age= 35
	.Height = 178.5
End With

Подчеркнем, что в каждом блоке имя лишь одного объекта задается по умолчанию. При вложенности операторов With:

With объект1
	операторы1
	With объект2
		операторы2
	End With

End With

в блоке операторы2 имя объекта1 нужно указывать полностью. Если же объект2 - элемент (подобъект) объекта1, то, использовав оператор With объект2, можно получить во внутреннем блоке сокращенный доступ к свойствам объекта " объект1. объект2 ".

Например, если к типу Person добавить данные о встрече:

Type Meeting
	Place As String
	Date As Date
End Type

Type Person
	Name As String
	Age As Integer
	Height As Single
	LastMeeting As Meeting
End Type

Dim NewAcquaintance As Person

то задавать данные о новом знакомом NewAcquaintance можно, используя вложенные операторы With.

With NewAcquaintance
	.Name = "Елена"
	.Age= 40
	.Height = 168
	With.LastMeeting
		.Place= "библиотека"	
		'этот оператор эквивалентен:
		'NewAcquaintance. LastMeeting.Place="библиотека"
		.Date= #08/03/99#
	End With
End With
Звуковой сигнал: оператор Beep

Подает звуковой сигнал через динамик компьютера.

Синтаксис:

Beep

Частота и сила звука зависят от оборудования и могут меняться от компьютера к компьютеру. Обычно звуковой сигнал используется как реакция на какие-либо ошибки или исключительные ситуации, возникающие при выполнении программы.

Установка системной даты: оператор Date

Синтаксис:

Date = дата

Пример:

Date = #April 29, 1999#	' Изменение системной даты.
Установка системного времени: оператор Time

Синтаксис оператора Time:

Time = время

Пример:

Time = #8:15:47 PM#	' Установка системного времени
Моделирование ввода с клавиатуры: оператор SendKeys

Посылает один или несколько кодов символов в текущее активное окно, как если бы соответствующие клавиши были нажаты.

Синтаксис:

SendKeys строка[, режим-ожидания]

Параметр строка - строковое выражение, задающее последовательность посылаемых символов. Необязательный параметр режим-ожидания - выражение с булевым значением. Если оно False (по умолчанию), управление возвращается в процедуру сразу же после посылки кодов; True - посланная последовательность кодов должна быть обработана, прежде чем управление возвратится в процедуру.

Большинство символов, набираемых на клавиатуре, входят в строку непосредственно. Например, чтобы послать последовательность из трех символов Y, E и S, возьмите в качестве строки " YES ". Символы: +, ^, %, ~, скобки и некоторые другие следует помещать в фигурные скобки. Например, чтобы послать +, в параметр строка нужно поместить {+}. Для посылки кодов клавиш, не отображаемых на экране, имеются специальные коды. Некоторые представлены в таблице, остальные можно найти с помощью подсказки:

Таблица 7.2. Коды клавиш, не отображаемых на экране
Клавиша Код
BACKSPACE {BS}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER} или ~
ESC {ESC}
HOME {HOME}
INS {INS}
LEFT ARROW {LEFT}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
RIGHT ARROW {RIGHT}
TAB {TAB}
UP ARROW {UP}
Fn {Fn} (n=1,…, 12)

Чтобы послать комбинацию клавиш, для Shift, Ctrl и Alt используются следующие коды (В примере используется документ DocTwo7:

Shift - +
Ctrl 	 ^
Alt 	 %

Пример:

В качестве примера рассмотрим открытие документа, требующего пароль при его открытии:

Public Sub OpenDocWithPassword()
	'Открытие документа с паролем
	SendKeys "+^"	'Переключение раскладки клавиатуры
	SendKeys "don" & "{'}" & "t know", False		'пароль "don't know"
	Documents.Open "e:\O2000\CD2000\Ch7\DocTwo7.doc"
	Documents("DocTwo7.doc").Activate
	
End Sub

Обратите внимание на два момента:

  • Прежде, чем послать сам пароль, происходит переключение клавиатуры на другую раскладку, для чего используется комбинация символов "Shift + Ctrl".
  • Символы клавиатуры посылаются в буфер ввода еще до того, как они потребуются. Если бы оператор Open предшествовал оператору SendKeys, то окно ввода пароля появилось бы до выполнения этого оператора. В данном же случае при открытии документа пароль автоматически появится в окне ввода, так что останется только щелкнуть по кнопке OK.
< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
полина есенкова
полина есенкова
Дмитрий Вологжин
Дмитрий Вологжин
Добрый день, прошел тесты с 1 по 9, 10 не сдал, стал читать лекцию и всё пройденные тесты с 1 по 9 сбросились, когда захотел пересдать 10 тест.