VBA для «чайников» - [21]

Шрифт
Интервал

Исправление ошибок при вводе программного кода

Фигурально выражаясь, всегда, когда вы печатаете программный код, за вашей спиной стоит компилятор VBA. Если компилятор обнаруживает очевидную ошибку, вы немедленно получаете соответствующее сообщение с информацией об ошибке, по крайней мере в общих словах. Предположим, например, что после оператора Unload Me вы напечатали какой-нибудь лишний символ. Компилятор VBA знает, что Unload Me вполне завершенный оператор и за ним в строке больше ничего не должно следовать.

Как только вы переместите точку ввода в следующую строку, компилятор перепишет весь неправильный оператор красным цветом и выделит посторонний символ. Вы получите также сообщение Compile error. Expected: end of statement (Ошибка компиляции. Ожидался конец оператора).

Компилятор может обнаружить далеко не все ошибки, допущенные вами при печатании программного кола. Когда вы запустите программу, компилятор обнаружит и другие ошибки, но о них мы поговорим немного позже.

Вторая процедура, которая должна отображать на экране сообщение, чуть сложнее первой. Эта процедура должна вызываться при появлении формы на экране. В окне программного кода, которое должно у вас остаться активным, выполните следующие шаги.

1. В текстовом поле слева вверху окна программного кода, в котором до сих пор было написано OKButton, щелкните на стрелке в правом конце поля.

После этого откроется список объектов, имеющих отношение к форме (рис. 3.16).


Рис. 3.16. В открывающемся списке объектов перечислены объекты, имеющие отношение к форме, которой принадлежит это окно программного кода

2. Из раскрывающегося списка выберите UserForm.

VBA создаст новую процедуру для события Click (щелчок). Эта процедура будет вызвана, если пользователь вашей программы щелкнет кнопкой мыши в любом месте фермы, где нет элементов управления. Нашей с вами программе такая процедура не нужна, поэтому пока оставьте ее.

3. Теперь щелкните на стрелке в конце текстового поля, находящегося справа, чтобы открыть список процедур, в котором будут перечислены все события, которые VBA распознает для объекта UserForm.

Этот список достаточно велик, что дает вам возможность сделать свою программу чуткой практически настолько, насколько захотите (рис. 3.17).


Рис. 3.17. В списке процедур представлены события, которые будут для активного в данный момент объекта

4. Выберите Activate - самый первый пункт в списке. Чтобы увидеть этот пункт, вам придется пролистать список.

VBA добросовестно создаст заготовку процедуры UserForm_Activate, которая вызывается при загрузке формы в память.

5. Если вас раздражает пустая процедура UserForm_Click, удалите ее, выделив весь ее текст и нажав клавишу Del.

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

Поскольку заготовка процедуры и в этом случае, как всегда, создается автоматически, вы сразу можете сосредоточиться на ее наполнении. Между строками, которые любезно предложены вам VBA, напечатайте еще три строки кода. Результат должен выглядеть следующим образом:

Private UserForm_Activate()

Dim Quote As String Quote = Не повторяется такое никогда:

lblNow.Caption = Quote Format(Now, dddddd, hh ч. mm мин.)

End Sub

Первая из напечатанных вами строк

Dim Quote As String

создает переменную с именем Quote и определяет ее как строковую, что означает последовательность текстовых символов.

Следующая строка

Quote = Не повторяется такое никогда:

сохраняет текст Не повторяется такое никогда: в только что созданной переменной Quote. Точно так же, как на уроках алгебры в школе, вы здесь используете знак равенства, чтобы приписать определенное значение переменной. Обратите внимание на то, что VBA перед закрывающими кавычками добавлен пробел, чтобы отделить текст сообщения от следующего за ним текста.

Наконец, строка

lblNow.Caption = Quote Format(Now, dddddd, hh ч. mm мин.)

содержит программный код, который непосредственно отображает нужное сообщение в форме. Эта строка начинается с идентификации элемента управления с именем lblNow как объекта, с которым идет работа. После имени стоит точка, означающая, что далее идет свойство объекта lblNow - в данном случае это свойство Caption. Вообще любое свойство подобно переменной, и его можно изменить во время выполнения программы. Поэтому, чтобы изменить установки свойства, в программном коде используется знак равенства. Оставшаяся часть строки определяет сообщение, которое должно появиться на экране в виде надписи.

Первой частью сообщения является переменная Quote. Следующий затем знак плюс дает указание VBA добавить то, что следует дальше, к тексту, хранящемуся в переменной Quote. В скобках функция Now говорит VBA, что нужно сбегать и узнать текущие показания часов компьютера, которые постоянно отсчитывают дату и время. Затем функция Format берет эту сырую информацию и представляет ее в виде, который сможете прочитать вы. Странный набор букв в кавычках как раз и определяет вил даты и времени на экране, но здесь я не собираюсь вдаваться в детальные объяснения по этому поводу - подробную информацию вы найдете в главе 11.


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.