Файл: regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2019
Просмотров: 3191
Скачиваний: 1
Изм
Лист
№
докум
.
Подп
.
Дата
Разраб
.
Литера
Лист
Листов
Пров
.
Н
.
контр
.
Утв
.
Рис
. 9.1
7 10 23 15 10
15 17 18
120
5
ccOsn
ccRazd
ccList
ccListov
ccGrupa
Body
ccGrupa
–
указывает
место
,
куда
вводится
номер
группы
;
Body
–
указывает
место
,
куда
по
завершению
макроса
будет
поме
-
щена
точка
вставки
.
Именно
здесь
должен
вводится
текст
отчета
.
Установить
на
месте
всех
закладок
выравнивание
по
центру
,
размер
шрифта
на
месте
закладки
ccOsn
– 20,
а
для
всех
остальных
закладок
– 10.
На
этом
разработка
шаблона
завершена
.
Для
сохранения
разработанного
шаблона
выберите
из
меню
Файл
команду
Сохранить
как
.
В
поле
Имя
файла
введите
имя
шаблона
,
ФИО
_
Лист
1
а
в
раскрывающемся
списке
Тип
файла
установите
Шаблон
документа
.
Щелкните
на
кнопке
ОК
,
чтобы
завершить
команду
.
В
резуль
-
тате
шаблон
будет
сохранен
в
файле
с
именем
ФИО
_
Лист
1.dot.
7.2.
Разработка
пользовательского
интерфейса
Для
ввода
текста
в
штамп
удобно
воспользоваться
специальной
пользовательской
формой
.
Среда
проектирования
VBA
предлагает
вам
очень
удобный
способ
разработки
собственных
диалоговых
окон
,
которые
позволяют
ввести
текст
в
документ
сразу
в
необходимом
формате
.
Это
да
-
ет
возможность
пользователю
не
заботиться
о
правильном
положении
тек
-
ста
в
документе
или
,
использовать
переменные
документа
для
сохранения
текста
.
Используя
различные
списки
,
переключатели
,
кнопки
и
другие
управляющие
элементы
пользовательских
форм
,
можно
оказывать
некото
-
рую
информационную
помощь
пользователю
.
Можно
написать
свою
программу
так
,
что
прежде
чем
допустить
пользователя
к
следующему
этапу
работы
,
будет
проверяться
,
например
,
правильность
введенных
данных
и
использованных
параметров
.
Благодаря
наличию
хорошо
разработанных
пользовательских
форм
,
ввод
данных
бу
-
дет
происходить
гораздо
быстрее
.
Однако
прежде
чем
приступать
к
разработке
форм
,
необходимо
про
-
думать
саму
форму
,
например
,
рассмотреть
все
виды
информации
,
которые
вам
нужно
получить
от
пользователя
.
Также
необходимо
определить
,
ка
-
кие
элементы
управления
процессом
создания
документа
можно
предоста
-
вить
пользователю
.
Разработать
пользовательскую
форму
MemoForm1
(
Рис
. 9.2)
для
за
-
полнения
штампа
,
задав
следующие
значения
свойству
Name
для
тексто
-
вых
полей
:
txtOsn
,
txtListov
,
txtGrupa
,
а
для
комбинированного
поля
– txtRazd
.
Рис
. 9.2
7.3.
Написание
VBA-
программы
После
разработки
шаблона
и
формы
приступают
к
написанию
VBA-
программы
.
Необходимо
создать
несколько
процедур
VBA,
которые
ото
-
бражают
и
проверяют
форму
:
–
Макрос
для
отображения
формы
.
В
нашем
шаблоне
это
будет
про
-
цедура
,
которая
запускается
при
создании
нового
документа
.
–
Процедура
отмены
формы
.
Это
обычная
процедура
для
одной
из
командных
кнопок
формы
.
–
Процедуры
,
которые
будут
обрабатывать
события
,
происходящие
при
работе
с
формой
.
Эти
процедуры
состоят
из
команд
инициализации
формы
,
введения
и
проверки
данных
,
обработки
щелчков
и
т
.
д
.
Каждый
проект
содержит
модуль
документа
с
именем
ThisDocu-
ment
,
для
открытия
которого
необходимо
,
дважды
щелкнуть
на
его
знач
-
ке
.
Для
каждого
документа
обязательно
задаются
три
процедуры
.
Document_New
выполняется
каждый
раз
при
создании
нового
до
-
кумента
с
заданным
шаблоном
.
Document_0pen
выполняется
каждый
раз
,
когда
открывается
до
-
кумент
с
заданным
шаблоном
.
Document_Close
выполняется
перед
тем
,
как
документ
с
задан
-
ным
шаблоном
будет
закрыт
.
Создайте
процедуру
в
модуле
документа
ThisDocument
,
которая
будет
выполняться
при
создании
нового
документа
на
основе
шаблона
Лист
1.dot.
Private Sub Document_New()
'
Отображение
формы
на
экране
MemoForm1.Show
'
Выбор
закладки
ccOsn
ActiveDocument.Bookmarks("ccOsn").Select
'
Перенос
данных
из
соответствующего
окна
'
пользовательской
формы
в
документ
Selection.TypeText Text:=MemoForm1.txtOsn.Text
ActiveDocument.Bookmarks("ccGrupa").Select
Selection.TypeText Text:=MemoForm1.txtGrupa.Text
ActiveDocument.Bookmarks("ccRazd").Select
Selection.TypeText Text:=MemoForm1.CboRazd.Text
ActiveDocument.Bookmarks("ccListov").Select
Selection.TypeText Text:=MemoForm1.txtListov.Text
'
Выбор
закладки
ccList
и
вставка
поля
PAGE
ActiveDocument.Bookmarks("ccList").Select
Selection.Fields.Add Range:=Selection.Range, Type:= _
wdFieldEmpty, Text:= "PAGE \* Arabic ",
_
PreserveFormatting:=True
'
Переход
на
закладку
для
начала
ввода
информации
ActiveDocument.Bookmarks("Body").Select
End Sub
Для
ячейки
таблицы
«
Лист
»
удобно
использовать
поле
MS Word
Page
,
которое
вставляет
номер
текущей
страницы
.
Для
переключения
ме
-
жду
отображением
результата
кодов
полей
и
отображением
самих
кодов
нажмите
комбинацию
Alt+F9
,
чтобы
включить
отображение
кодов
полей
нажмите
Alt+F9
еще
раз
.
Все
время
,
пока
форма
находится
на
экране
,
должна
работать
опре
-
деленная
VBA-
процедура
,
чтобы
выполнять
действия
по
обработке
проис
-
ходящих
в
форме
событий
.
Процедуры
,
обрабатывающие
данные
события
,
генерируются
в
VBA
автоматически
во
время
создания
формы
и
ее
управ
-
ляющих
элементов
.
И
тогда
все
,
что
вам
остается
сделать
, –
это
написать
код
для
всех
действий
,
которые
вы
хотите
связать
с
определенными
собы
-
тиями
.
Процедура
Activate
выполняется
каждый
раз
при
загрузке
формы
.
Этой
процедурой
обычно
пользуются
для
выполнения
любых
предвари
-
тельных
действий
,
которые
должны
произойти
перед
тем
,
как
допустить
пользователя
к
работе
с
формой
.
Метод
AddItem
поля
со
списком
вызы
-
вается
три
раза
для
описания
данных
из
раскрывающегося
списка
«
Вид
схемы
».
Свойство
Text
для
текстовых
полей
устанавливает
начальное
,
пустое
значение
.
Private Sub UserForm_Activate()
Me.CboRazd.Clear
Me.CboRazd.AddItem "
Схема
структурная
", 0
Me.CboRazd.AddItem "
Схема
электрическая
функциональная
",1
Me.CboRazd.AddItem "
Схема
электрическая
принципиальная
",2
Me.txtOsn.Text = ""
Me.txtListov.Text = ""
Me.txtGrupa.Text = ""
End Sub
Написать
в
модуле
формы
следующий
программный
код
,
который
выполняется
при
нажатии
на
клавишу
Выход
,
расположенную
в
форме
.
Private Sub cmdExit_Click()
Dim cmdExit As Integer
cmdExit = True
If Len(Me.txtOsn.Text)=0 Then cmdExit = False
If Len(Me.CboRazd.Text)=0 Then cmdExit = False
If Len(Me.txtListov.Text)=0 Then cmdExit = False
If Len(Me.txtGrupa.Text)=0 Then cmdExit = False
If cmdExit = True Then
Me.Hide
Else
MsgBox "
Введите
информацию
во
все
поля
формы
",_
48, "
Ошибка
ввода
данных
"
End If
End Sub
Процедура
начинается
с
объявления
целочисленной
переменной
cmdExit
с
начальным
значением
True
.
Далее
функция
Len
проверяет
длину
введенных
строк
в
полях
формы
.
Если
хотя
бы
одно
из
полей
будет
пустым
,
то
на
экран
выводится
сообщение
,
предупреждающее
пользовате
-
ля
,
что
необходимо
заполнить
форму
до
конца
.
На
этом
процесс
создания
шаблона
завершен
.
Сохраните
изменен
-
ный
шаблон
Лист
1.dot
.
Выйдите
из
MS Word.
Загрузив
снова
MS Word,
создайте
новый
документ
на
основе
своего
шаблона
Лист
1.dot
и
про
-
верьте
его
работу
.
Лист
1.dot
а
в
раскрывающемся
списке
Тип
файла
установите
Шаблон
документа
.
Щелкните
на
кнопке
ОК
,
чтобы
завершить
команду
.