Опубликован: 13.09.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Тверской государственный университет
Лекция 8:

Операторы

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Аннотация: Операторы и строки. Оператор комментария.Присваивание. Оператор Let. Оператор RSet. Оператор Set. Управляющие операторы. Условный оператор If Then Else End If. Оператор выбора Select Case. Цикл For Next Цикл Do...Loop. Цикл While...Wend. Цикл For Each...Next. Работа с каталогами, папками и файлами. Изменение текущего диска: оператор ChDrive. Изменение текущего каталога (папки): оператор ChDir. Создание каталога (папки): оператор MkDir. Переименование каталогов (папок) и файлов: оператор Name. Удаление каталога (папки): оператор RmDir. Установка атрибутов файла: оператор SetAttr. Копирование файлов: оператор FileCopy. Удаление файлов: оператор Kill. Прочие операторы. Операции с одним объектом. Оператор With. Звуковой сигнал: оператор Beep. Установка системной даты: оператор Date. Установка системного времени: оператор Time. Моделирование ввода с клавиатуры: оператор SendKeys.

Программный код большинства примеров данной лекции можно найти в проектах, доступных для просмотра: DocOne7, DocTwo7.

Операторы

Большая часть материала этой и последующих лекций носит справочный характер. Для программистов, хорошо знакомых с VBA по предыдущим версиям, вполне достаточно беглого просмотра их содержания. Они будут обращаться к этим лекциям по мере необходимости. Конечно, для тех, кто впервые знакомится с этим языком, чтение этой и последующих лекций не только полезно, но и может предшествовать чтению предыдущих лекций, предполагающих хорошее знание основ языка VBA.

VBA - операторный язык. Это значит, что его программы (модули) представляют последовательности операторов. Набор операторов VBA весьма обширен и не уступает в этом "большим" языкам вроде Паскаля и С. Группу декларативных операторов VBA, служащих для описания объектов, с которыми работает программа (типов, переменных, констант, объектов приложений и др.), мы уже рассмотрели. Операторы другой группы обеспечивают присвоение и изменение значений этих объектов, операторы третьей группы управляют ходом вычислений, четвертой - работой с каталогами и файлами и т.д. Часть операторов досталась VBA в наследство от предыдущих версий Бейсика и без них вполне можно обойтись при написании новых программ.

Операторы и строки

При записи текста программ для упрощения чтения, отладки и модификации программы удобней каждый оператор располагать в отдельной строке текста. Следуйте правилу: "Один оператор - одна строка". Но, разрешается размещать на строке и несколько операторов, в отличие от общепринятого символа разделения операторов "точки с запятой", в VBA символом разделения двух операторов в одной строке служит двоеточие. Заметьте, некоторые операторы, например оператор If, могут стоять лишь на первом месте в строке. И по этой причине каждый оператор, как правило, следует начинать с новой строки, лишь иногда, разумно, группу операторов присваивания размещать в одной строке. Чаще возникает другая ситуация, - оператор слишком длинный и его текст не виден полностью на экране дисплея, что затрудняет чтение и понимание программы. В этом случае оператор следует продолжить в одной или нескольких строках. Чтобы продолжить (перенести) оператор на следующую строку, используется пара символов пробел-подчеркивание " _ ". Например,

MyAddress = "дом: " & Number & "улица: " & Street _
		& "город: " & City

Перед оператором в строке может стоять метка - последовательность символов, начинающаяся с буквы и кончающаяся двоеточием " :". Метки можно размещать и в отдельных строках перед теми операторами, которые они должны помечать. Они нужны для операторов перехода типа GoTo, использование которых считается "дурным тоном" в структурном программировании. Но иногда без меток и переходов на них обойтись трудно - в частности, для указания входов в обработчики ошибок в некоторых процедурах.

Оператор комментария

Комментарии на исполнение программы не влияют, но необходимы как признак "хорошего стиля". Офисные программы используются многократно и не раз модернизируются в процессе своей жизни. Вы можете сэкономить на комментариях и написать и отладить небольшой модуль без них. Но уже через неделю никто, в том числе и автор, не сможет понять его действие и модифицировать нужным образом. Затраченные на это усилия и время намного превзойдут "экономию". Любая строка текста программы может заканчиваться комментарием. Комментарий в VBA начинается апострофом (') и включает любой текст, расположенный правее в строке. Обычно в комментариях описывают задачи, решаемые модулями, функции, выполняемые процедурами, смысл основных переменных (если он неясен из имен), алгоритмы работы процедур. Полезно также комментировать операторы вызовов внешних для данного модуля процедур, объясняя их действия.

Другое применение комментарии находят при отладке программ. Если требуется исключить из программы некоторые операторы (например, вызовы еще не реализованных или сомнительных процедур), достаточно перед ними поместить апостроф. Например, при выполнении последовательности операторов

x=x+z
'z=fun(z,x)
y=y*x

функция fun для вычисления нового значения z во второй строке не вызывается и не мешает проверить правильность значения y.

В VBA имеется еще один способ выделения комментариев с помощью ключевого слова Rem. Такой комментарий (в отличие от комментария, начинающегося апострофом) должен отделяться от предыдущего оператора в строке двоеточием:

weight= weight+z: 	Rem Увеличение веса
value=weight*price 		'Новая стоимость

При отладке VBA программ часто приходится временно комментировать целые участки текста, иногда страницы текста. В этом случае закомментировать или снять комментарии довольно утомительное дело. В этих случаях следует пользоваться двумя полезными командами меню Edit: "Comment Block" и "UnComment Block". Они позволяют автоматически закомментировать или снять комментарий с выделенного блока. Я всегда использую настройку (Customize) и выношу на панель редактора VBE кнопки, выполняющие эти команды.

Присваивание

Операторы присваивания - основное средство изменения состояния программы (значений переменных и свойств объектов). Мы уже многократно использовали их в примерах из предыдущих лекций. В VBA несколько видов операторов присваивания.

Оператор Let

С помощью этого оператора происходит "обычное" присвоение значения выражения переменной или свойству.

Синтаксис:

[Let] переменная = выражение

Ключевое слово Let, как правило, опускается. Переменная является именем переменной или свойства; выражение задает значение, присваиваемое переменной. Его тип должен соответствовать типу переменной. Нарушение этого условия, например, при попытке присвоить числовой переменной строковое значение, приводит к тому, что при компиляции появится сообщение об ошибке. Переменным типа Variant можно присваивать значения разных типов, например, строковых или числовых выражений. Строковой переменной можно присваивать любое значение типа Variant, кроме Null. Числовой же переменной значение типа Variant можно присвоить, только если оно может быть преобразовано к числу.

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

Примеры:

Public Sub Assign1()
	Dim MyStr As String, MyInt As Integer
		
	Let MyStr = "Здравствуй, зайчик!"	' С ключевым словом Let
	MyInt = 5					' Без него. Обычный вариант.
	Debug.Print MyStr, MyInt

End Sub
< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
полина есенкова
полина есенкова
Дмитрий Вологжин
Дмитрий Вологжин
Добрый день, прошел тесты с 1 по 9, 10 не сдал, стал читать лекцию и всё пройденные тесты с 1 по 9 сбросились, когда захотел пересдать 10 тест.
Людмила Слесарева
Людмила Слесарева
Россия
Александр Орлов
Александр Орлов
Россия