- •Министерство образования российской федерации
- •М инистерство образования российской федерации
- •Аннотация
- •Содержание
- •Тема 1. Основы программирования
- •Создание, редактирование и запуск программ
- •Переменные, константы и типы данных
- •Управляющие конструкции
- •Управляющая конструкция If…Then позволяет выполнять один или несколько операторов, если условие истинно. Можно использовать однострочный и блочный синтаксис. Например:
- •Тема 2. Введение в модели объектов
- •2.1. Обзор моделей объектов
- •2.2. Автоматизация операций с использованием объектов
- •2.3. Программирование объектов другого приложения
- •Тема 3. Объекты Microsoft Office
- •3.1. Объекты Microsoft Access
- •3.2. Объекты Microsoft Excel
- •3.3. Объекты Microsoft Power Point
- •3.4. Объекты Microsoft Word
- •Тема 4. Меню и панели инструментов
- •4.1. Средства настройки пользовательского интерфейса
- •4.2. Выбор подходящих элементов пользовательского интерфейса
- •4.3. Система меню
- •4.4. Модификация системы меню на этапе разработки
- •4.5. Модификация системы меню в период выполнения
- •4.6. Панели инструментов
- •4.7. Модификация панелей инструментов на этапе разработки
- •4.8. Модификация панелей инструментов в период выполнения
- •Тема 5. Элементы управления на базе ActiveX и диалоговые окна
- •5.1. Разработка нестандартных диалоговых окон
- •5.2. Использование нестандартных диалоговых окон
- •5.3. Работа с элементами управления в документе, листе или на слайде
- •Тема 6. Оптимизация кода
- •6.1. Основные принципы оптимизации кода
- •6.2. Оптимизация кода для Microsoft Excel
- •6.3. Оптимизация кода для Microsoft Word
- •Тема 7. Отладка и обработка ошибок
- •7.1. Создание обработчика ошибок
- •7.2. Иерархия обработчиков ошибок
- •7.3. Тестирование обработчика за счет эмуляции ошибок
- •7.4. Строчная обработка ошибок
- •7.5. Отключение обработки ошибок
- •7.6. Общие принципы отладки
- •7.7. Режимы конструктора, выполнения и прерывания
- •7.8. Окна отладки
- •7.9. Просмотр стека вызовов
- •Тема 8. Разработка приложений для Интернета и Word Wide Web
- •8.1. Термины и концепции, связанные с Интернетом
- •8.2. Работа с гиперссылками
- •8.3. Сохранение документов и объектов в формате html
- •8.4. Элемент средства просмотра Web Microsoft
- •8.5. Элемент управления Internet Transfer
- •Указывать допустимый сервер-заместитель в свойстве AccessType элемента управления Internet Transfer (таблица 8.4);
- •Элемент управления Internet Transfer автоматически настраивается на нужный протокол, заданный в первой части url. Поэтому применение метода OpenUrl или Execute не требует установки свойства Protocol.
- •8.6. Элемент управления WinSock
- •8.7. Создание персонального Web-сервера
- •Тестовые задания для закрепления материала учебного пособия
- •Рекомендуемая литература
- •Б) дополнительная литература
5.2. Использование нестандартных диалоговых окон
Чтобы обмениваться с пользователем информацией через нестандартное диалоговое окно, программа должна выводить его на экран, реагировать на действия пользователя в этом окне и при его закрытии получать введенную информацию.
Для тестирования нестандартного диалогового окна необходимо выбрать в меню Run (Запуск) в редакторе Visual Basic команду Run Sub/UserForm (Запуск подпрограммы/UserForm). Чтобы вывести диалоговое окно на экран при выполнении программы, следует использовать метод Show. Например:
UserForm1.Show
5.2.1. Получение и установка значений свойств в период выполнения
Чтобы установить начальное значение, или значение по умолчанию (default value), которое будет у элемента управления при каждом открытии содержащего его диалогового окна, необходимо добавить нужный код в процедуру обработки события Initialize формы UserForm, включающей этот элемент. При отображении диалогового окна возникнет событие Initialize, и будет вызвана процедура его обработки – а значит, и код, указывающий значение для элемента управления. Например, если создана новая UserForm (форма), переименованная в свойстве Name как frmPhoneOrders с добавленными в нее элементами управления TextBox (поле – txtCustomerName), ListBox (список – lstRegions) и CheckBox (флажок – chkSendExpress), то для установки начальных значений данных элементов управления необходимо добавить в процедуру UserForm_Initialize следующий код:
Private Sub UserForm_Initialize()
With frmPhoneOrders
‘текст по умолчанию
.txtCustomerName.Text = “Grant Clarridge”
.chkSendExpress.Value = True ‘флажок изначально активен
With .lstRegions
.AddItem “North” ‘эти строки заполняют список
.AddItem “South”
.AddItem “West”
.AddItem “East”
.ListIndex = 3 ‘выбираем четвертый элемент списка
End With
End With
End Sub
Элементы наборов в иерархии объектов Microsoft Excel, Word и PowerPoint нумеруются с 1, а элементы массивов и наборов, связанных с формами, - с 0. Именно поэтому для выбора четвертого элемента из списка в предыдущем примере свойству ListIndex присвоено значение 3.
В предыдущем примере вместо кодового имени формы UserForm можно подставить ключевое слово Me, и тем самым заменить оператор With frmPhoneOrders на With Me. Ключевое слово Me, используемое в коде для UserForm или элементов управления на форме, представляет саму UserForm. Это позволяет присваивать элементам управления длинные имена и в то же время поддерживать компактность строк кода.
Если при каждом выводе диалогового окна нужны разные начальные значения элемента управления, то это можно сделать программно перед отображением окна.
Можно изменять свойства элементов управления и UserForm и применять их методы даже в тот момент, когда диалоговое окно отрыто. Пример, значение свойства Text поля TextBox1 меняется на «Hello»:
TextBox1.Text = “Hello”
Устанавливая свойства элементов и применяя их методы при открытом диалоговом окне, можно модифицировать его в ответ на действия пользователя. Например, чтобы элемент управления был доступен только при выборе определенного флажка, следует написать код, включающий этот элемент при активизации флажка и отключающий при его сбросе.
Свойство Enabled позволяет включать элемент управления при выполнении указанных условий. Эту возможность часто используют в процедурах обработки событий для полей, чтобы включать кнопку Ok, только когда будет введено значение, соответствующее стандартному шаблону, или когда набор (Frame) переключателей (OptionButton) должен быть доступен лишь при активизации определенного флажка (CheckBox):
Private Sub CheckBox1_Change()
With Me
If .CheckBox1.Value = True Then
.OptionButton1.Enabled = False
.OptionButton2.Enabled = False
Else
.OptionButton1.Enabled = True
.OptionButton2.Enabled = True
End If
End With
End Sub
Элемент управления TabStrip (Набор вкладок) позволяет отображать разные наборы данных с помощью одного и того же набора элементов управления диалогового окна. Например, чтобы в области диалогового окна показывать адреса группы людей, можно создать элемент управления TabStrip и добавить элементы, которые будут содержать имя и адрес каждого лица в группе. Затем добавить «ярлычок» по каждому члену группы в элемент управления TabStrip и написать код, который при щелчке ярлычка отображает сопоставленные с ним данные. В следующем примере значение элемента TextBox1 изменяется в зависимости от того, какой ярлычок элемента TabStrip1 активен. Индекс выбранного ярлычка передается в процедуру обработки события:
Private Sub TabStrip1_Click(ByVal Index As Long)
If Index = 0 Then
Me.TextBox1.Text = “7710 Betty Jane Lane”
ElseIf Index = 1 Then
Me.TextBox1.Text = “9523 15th Ave NE”
End If
End Sub
Для проверки данных перед закрытием диалогового окна необходимо включить соответствующий код в процедуру выгрузки диалогового окна. Если элемент управления содержит некорректные данные, используется оператор Exit Sub для выхода из процедуры до выполнения оператора Unload.
Данные, введенные пользователем в диалоговое окно, теряются при закрытии окна. Взяв значения элементов управления в UserForm после выгрузки формы, присваиваются начальные данные, а не те, что введены пользователем. Если необходимо сохранить данных, необходимо записать их в переменные уровня модуля в тот период, когда диалоговое окно еще открыто. Пример:
‘код в модуле, который объявляет общие данные
Public strRegion As String
Public intSalesPersonID As Integer
Public blnCancelled As Boolean
‘код в форме
Private Sub cmdCancel_Click()
Module1.blnCancelled = True
Unload Me
End Sub
Private Sub cmdOk_Click()
‘сохраняем данные
intSalesPersonID = txtSalesPersonID.Text
strRegion = lstRegions.List(lstRegions.ListIndex)
Module1.blnCancelled = False
Unload Me
End Sub
Private Sub UserForm_Initialize()
Module1.blnCancelled = True
End Sub
‘код в модуле для вывода диалогового окна
Sub LaunchSalesPersonForm()
frmSalesPeople.Show
If blnCancelled = True Then
MsgBox “Operation cancelled!”, vbExclamation
Else
MsgBox “The Salesperson’s ID is:” & _
intSalesPersonID & _
“The Region is:” & strRegion
End If
End Sub
5.2.2. Закрытие нестандартного диалогового окна
Нестандартные диалоговые окна всегда открываются как модальные, т.е. перед возвратом в документ пользователь должен закрыть окно. Для этого в диалоговом окне обычно предусматривают соответствующую кнопку. Чтобы выгрузить UserForm, используется оператор Unload.
Private Sub cmdOK_Click()
ActiveDocument.InsertAfter txtUserName.Text
Unload UserForm1
End Sub