Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ивличев П.С. Практикум по информационным технологиям. Ч. 10 Автоматизация работы

.pdf
Скачиваний:
17
Добавлен:
07.01.2021
Размер:
874.47 Кб
Скачать

Часть 4

31

7. Свойству поля ControlTipText, которое устанавливает текст, отображаемый в виде всплывающей подсказки при наведении на объект указателя мыши, придайте значение И.О. Фамилия

Элемент управления поле со списком ComboBox служит для ввода данных пользователем с клавиатуры или выбора их из раскрывающегося

списка. Он размещается на форме с помощью кнопки панели элементов управления.

8. Разместите на форме поле со списком. Для того, чтобы пользователь не мог вводить в поле данные с клавиатуры, а только выбирал их из списка, установите значение свойства Style в 2-fmStyleDropDownList.

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

ton. Для добавления переключателя используется кнопка панели элементов управления. Текст переключателя задается свойством Caption, шрифт свойством – Font.

9. Разместите на форме два переключателя для выбора пользователем курсивного начертания шрифта фамилии подписывающего документ лица. Для одного выполните надпись Да, для второго – Нет. Для шрифта надписей установите полужирное начертание и размер 10 пт. Значение свойства Value переключателя Нет установите в True – так он будет по умолчанию выбран при запуске проекта.

Одним из обязательных элементом на форме является кнопка CommandButton. На панели элементов управления она представлена пиктограм-

мой . Надпись на кнопке задается свойством Caption. Нажатие левой клавиши мыши на кнопку позволяет выполнить процедуру обработки события Click. Как правило, именно при наступлении этого события происходит отправка данных для их программной обработки.

10.Разместите на форме управляющую кнопку, как показано на рисунке 15. Выполните на кнопке надпись Ввод данных.

11.Свойство TabIndex определяет положение элемента управления

впорядке табуляции, принимает значение от нуля до количества элементов управления на форме. Установите значения этого свойства в 0, 1 и 2 для объ-

ектов TextBox, ComboBox и CommandButton соответственно.

12.Свойство TabStop элемента управления указывает, может ли элемент быть выбран клавишей Tab. Если значение этого свойства равно False, то выбрать элемент можно, только щелкнув на нем мышью. Установите для всех меток и переключателей значение свойства TabStop в False, а для остальные элементов – в True.

Часть 4

32

13.Свойство Default объекта CommandButton определяет заданную по умолчанию кнопку. Когда пользователь нажимает в процессе диалога клавишу Enter, эта кнопка ведет себя так, как если бы по ней щелкнули мышью. Установите для кнопки CommandButton1 значение этого свойства в True.

14.Изменив значения свойств Height и Width формы, установите, соответственно, высоту и ширину, достаточные для отображения всех элементов формы.

15.Поместите курсор в текст процедуры Private Sub Document_Open(). Запустите проект на выполнение, нажав на кнопку Run Sub панели инструментов. Убедитесь в правильном отображении всех элементов формы. Заметим, что элементы пока не интерактивны. Проверьте, в какой последовательности происходит получение элементами фокуса при нажатии клавиши Tab. Закройте окно формы. Вернитесь в окно редактора

VBA.

Задание 19. Программное изменение свойств элементов формы Для программного заполнения выпадающего списка значениями слу-

жит метод AddItem объекта ComboBox. Синтаксис операции имеет вид

имя_объекта.AddItem "значение"

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

1.Двойным щелчком на форме в окне конструктора форм перейдите в окно кода формы UserForm. В правом списке выберите событие Initialize – будет создана процедура Private Sub UserForm_Initialize(). Введите код процедуры, позволяющий заполнить список ComboBox1 значениями специальных званий от младшего лейтенанта полиции до полковника полиции по образцу, приведенному ниже.

ComboBox1.AddItem "младший лейтенант полиции”

2.Добавьте в программный код строку

TextBox1.SetFocus

вызова метода SetFocus объекта TextBox1 для того, чтобы при отображении формы фокус ввода получало текстовое поле.

3. Запустите проект на выполнение. Убедитесь в правильном отображении списка. Попытайтесь ввести произвольный текст в поле ввода списка (при правильной установке значений его свойств этого не должно получиться). Закройте окно формы. Вернитесь в окно редактора VBA.

Задание 20. Организация диалога с пользователем в VBA После ввода значений в текстовое поле, поле со списком и установки

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

Часть 4

33

лы и фамилия подписывающего лица должны быть выделены курсивом. Следовательно, нужно написать программу для кнопки CommandButton1, обрабатывающую событие Click.

Значения всех размещенных на форме интерактивных элементов можно получить из их свойства Value.

1. Двойным щелчком на кнопке в окне конструктора форм перейдите в окно кода кнопки CommandButton1. Убедитесь, что созданная процедура обрабатывает событие Click. Введите код процедуры, позволяющий внедрить введенные пользователем в диалоговое окно данные в соответствующие места таблицы для подписи.

Private Sub CommandButton1_Click() Dim k As Integer

k = ActiveDocument.Tables.Count ‘определение номера последней таблицы в документе

ActiveDocument.Tables(k).Cell(1, 1).Range.InsertAfter (ComboBox1.Value)

ActiveDocument.Tables(k).Cell(1, 2).Range.Text = TextBox1.Value If OptionButton1.Value = True Then

ActiveDocument.Tables(k).Cell(1, 2).Range.Font.Italic = True

Else

ActiveDocument.Tables(k).Cell(1, 2).Range.Font.Italic = False End If

ActiveDocument.Tables(k).Cell(1, 2).Range.ParagraphFormat.Alignment = wdAlignParagraphRight

ActiveDocument.Tables(k).Cell(1, 2).VerticalAlignment = wdCellAlignVerticalBottom

End Sub

2.Удалите из документа Рапорт.docm специальное звание подписывающего лица. Сохраните изменения в документе.

3.Запустите проект на выполнение. Заполните интерактивные элементы диалогового окна данными. Убедитесь в правильной работе макроса.

4.Добавьте в текст процедуры CommandButton1_Click() строку UserForm1.Hide, позволяющую скрыть форму после щелчка на кнопке.

Проконтролируйте изменения в работе макроса.

Задание 21. Назначение написанному макросу кнопки панели быстрого доступа

Созданный в предыдущем задании макрос запускается при открытии документа. Привяжем его запуск к кнопке панели быстрого доступа.

1. В окне редактора VBA поставьте апостроф перед командой UserForm1.Show процедуры открытия документа – эта строка станет комментарием и выполняться интерпретатором не будет.

Часть 4

34

2.С помощью кнопок вкладки Разработчик начните запись макроса рекордером. Макрос назовите Макрос5 и сделайте его доступным только для документа Рапорт.docm, назначьте макросу кнопку панели быстрого доступа, доступную также только в этом документе.

3.Завершите запись макроса, не выполняющего, по сути, никаких

действий.

4.Откройте созданный пустой макрос Макрос5 в редакторе VBA. Вставьте в тело макроса строку UserForm1.Show.

5.Сохраните изменения в документе, закройте и вновь откройте его

форма при этом не должна отобразиться. Запустите макрос Макрос5 нажатием на кнопку панели быстрого доступа, проконтролируйте правильность его работы. Продемонстрируйте работающий макрос преподавателю.

Задание 22. Оптимизация программного кода (дополнительное задание)

1. После выполнения предыдущего задания специальное звание вставляется в документ без удаления ранее введенного (со вставкой подписи такой проблемы не возникает). Измените код макроса так, чтобы при вставке нового специального звания удалялось содержимое последнего абзаца первой ячейки таблицы с подписью.

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

Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection. Метод Range – это функция, возвращающая как результат объект Range; метод Select – это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Объект Range имеет метод Select, превращающий область объекта Range в выделенную. Тем самым метод Select определяет новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объект Range, соответствующий выделенной области.

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range:

ActiveDocument.Range.Sections(1).Range.Paragraphs(l).Range.Sentences(1). Words(1).Characters(1)

Объекты Range и Selection позволяют выполнять основные операции над текстом: «выделить», «добавить», «заменить», «удалить». У данных объектов большой набор методов, позволяющих реализовать эти операции. Все рассматриваемые здесь методы принадлежат обоим объектам, если не сделана специальная оговорка.

Выделить некоторую часть текста по существу означает определить объект Range или Selection. Объекты задают некоторую область в тексте документа, а их свойства Start и End позволяют установить начало и конец этой области. Меняя значения свойства, можно задать нужную область выделения.

Часть 4

35

Move является основным методом перемещения точки вставки. Остальные методы этой группы – в той или иной степени его модификации. Метод Move(Unit, Count) сжимает область в точку, стягивая ее в начало или конец, а затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, a Count – количество этих единиц (по умолчанию 1). Знак переменной Count задает направление стягивания и перемещения. Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные – стягивание в начало и перемещение назад. Чистое стягивание без перемещения точки вставки задается как перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit

принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.

Например, метод Selection.Move Unit:=wdParagraph, Count:=2 перемещает

точку вставки на два абзаца вправо.

Методы перемещения на сам текст не влияют – лишь изменяют область, заданную объектами Range и Selection. Поэтому эти методы применимы только к переменным типа Range, но не к фиксированным областям. Например, запись

ActiveDocument.Paragraphs(l).Range.Move

не имеет эффекта, поскольку область первого абзаца – вещь неизменяемая. Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно тем самым расширяя область.

Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection. Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count.

Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы

InsertBefore(Text) и InsertAfter(Text). Параметр text типа string задает текст,

вставляемый до или после области, заданной объектами range или selection. После вставки текста область автоматически расширяется, включая в себя добавляемый текст.

Свойство Text позволяет заменять текст в выделенной области, поэто-

му нет нужды вызывать метод Insert(Text). Методы InsertBefore и InsertAfter

безопасны, так как текст добавляется, не изменяя содержимого области. Совсем иное дело – методы вставки, которые далеко не безопасны. При вставке внутрь области, например при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области.

Приложение 1

36

Приложение 1. Некоторые свойства, методы и события, объекта

UserForm

Таблица 3 – Основные свойства объекта UserForm

Свойство

Описание

ActiveControl

Возвращает объектную ссылку на элемент управления,

 

находящийся в фокусе в данный момент. Только для

 

чтения

BackColor

Целое типа Long определяет цвет формы

Caption

Текст, выводимый в качестве заголовка формы

Controls

Возвращает коллекцию всех элементов управления

 

формы

Enabled

Содержит значение типа Boolean, указывающее, до-

 

ступна ли данная форма. Если его значение равно False,

 

ни один из элементов управления формы не доступен

Font

Возвращает ссылку на объект Font, посредством кото-

 

рого можно выбрать параметры шрифта формы или

 

элемента управления

ForeColor

То же самое, что и свойство BackColor, но устанавлива-

 

ет цвет, используемый для переднего плана (обычно

 

это цвет текста) объекта формы

Таблица 4 – Основные методы объекта UserForm

 

 

Метод

Описание

Copy

Копирует выделенный в элементе управления текст в

 

буфер обмена Windows

Сut

Вырезает выделенный в элементе управления текст и

 

помещает его в буфер обмена Windows

Hide

Скрывает форму, не выгружая ее из памяти, сохраняя

 

значения элементов управления формы и всех пере-

 

менных, объявленных в модуле класса формы

Paste

Вставляет содержимое буфера обмена Windows в те-

 

кущий элемент управления

Show

Выводит форму на экран. Если форма еще не загружена

 

в память, то данный метод сначала ее загружает

Таблица 5 – Основные события объекта UserForm

 

 

Событие

Описание

Activate

Инициируется всякий раз, когда окно формы становит-

 

ся активным. Используйте это событие для обновления

 

содержимого диалоговых элементов управления, чтобы

 

отобразить любые изменения, которые произошли, по-

 

ка окно формы было неактивным

Приложение 1

37

 

 

Событие

Описание

Click

Инициируется всякий раз, когда по форме (любой ее

 

части, не занятой элементами управления) щелкают

 

мышью

DblClick

Инициируется всякий раз, когда по форме (любой ее

 

части, не занятой элементами управления) дважды

 

щелкают мышью

Deactivate

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

 

активной

Initialize

Инициируется всякий раз, когда форма впервые загру-

 

жается в память посредством выполнения оператора

 

Load или с помощью метода Show. Используйте это со-

 

бытие для инициализации элементов управления фор-

 

мы при ее появлении на экране

Resize

Инициируется при изменении размеров формы

Terminate

Инициируется всякий раз, когда форма выгружается из

 

памяти. Используйте это событие для осуществления

 

любых специальных служебных задач, которые необ-

 

ходимо выполнить прежде, чем элементы формы будут

 

выгружены

Приложение 2

38

Приложение 2. Возможный вариант программного кода для задания 22

Private Sub CommandButton1_Click()

Dim k As Integer, n As Integer, m As Integer k = ActiveDocument.Tables.Count

n = ActiveDocument.Tables(k).Cell(1, 1).Range.Paragraphs.Count

m = ActiveDocument.Tables(k).Cell(1, 1).Range.Paragraphs(n).Range._ Characters.Count

ActiveDocument.Tables(k).Cell(1, 1).Range.Paragraphs(1).Range.Select Selection.Move Unit:=wdParagraph, Count:=n - 1

Selection.MoveEnd Unit:=wdCharacter, Count:=m - 1 Selection.Text = ComboBox1.Value ActiveDocument.Tables(k).Cell(1, 2).Range.Text = TextBox1.Value If OptionButton1.Value = True Then

ActiveDocument.Tables(3).Cell(1, 2).Range.Font.Italic = True

Else

ActiveDocument.Tables(3).Cell(1, 2).Range.Font.Italic = False

End If

ActiveDocument.Tables(k).Cell(1, 2).Range.ParagraphFormat.Alignment = wdAlignParagraphRight

ActiveDocument.Tables(k).Cell(1, 2).VerticalAlignment = wdCellAlignVerticalBot-

tom

UserForm1.Hide End Sub

ПРАКТИКУМ

ПО ИНФОРМАЦИОННЫМ ТЕХНОЛОГИЯМ

Часть 10

Автоматизация работы офисных приложений

Редактор Е. Г. Барбаш

Подписано в печать Формат 60 90

Бумага типографская № 1

 

Объем (п/л) – __

Тираж

______экз.

Заказ

№ ______

Участок оперативной полиграфии Рязанского филиала Московского университета МВД России

390043, г. Рязань, ул. Красная, 18.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]