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

regeda_v_v_regeda_o_n_osnovy_programmirovaniya_na_vba

.pdf
Скачиваний:
11
Добавлен:
06.02.2016
Размер:
1.26 Mб
Скачать

Для написания этой процедуры необходимо выполнить двойной щелчок по кнопке «Выход», в результате откроется окно редактора кода, в котором будет помещена заготовка для процедуры обработки события

Click объекта CmdExit.

Private Sub CmdExite_Click() End Sub

Внутри процедуры необходимо с клавиатуры добавить всего одну команду End. В результате получим полный код процедуры

Private Sub CmdExite_Click() End

End Sub

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

или кнопку , или выбрать команду RunRun Sub. При этом в текстовом редакторе Word загрузится приложение Калькулятор. Если щелкнуть мышью по кнопке «Выход», то в случае правильной работы процедуры, форма приложения Калькулятор будет закрыта, а Visual Basic вернется обратно в режим разработки (design). В случае ошибки Visual Basic создаст окно с предупреждение об ошибке, и будет предложено ее исправить.

2) Процедура сложения реализует сложение двух чисел. Эта процедура должна изменить свойство Text объекта TextBox3 так, чтобы оно явилось суммой числовых значений свойства Text объектов TextBox1 и TextBox2. Эта процедура должна вызываться, если пользователь щелкнет по кнопке с надписью «+». Для ее написания необходимо выполнить двойной щелчок по кнопке «, в результате откроется окно редактора кода, в котором будет помещена заготовка для процедуры обработки события Click объекта CmdPlus.

Private Sub CmdPlus_Click() End Sub

Внутри процедуры необходимо с клавиатуры добавить команду

TextBox3.Text=Val(TextBox1.Text)+Val(TextBox2.Text)

Функция Val используется в процедуре для преобразования строковых значений, вводимых в текстовые поля, в десятичное число.

3) Процедура вычитания реализует вычитание двух чисел. Эта процедура должна изменить свойство Text объекта TextBox3 так, чтобы оно явилось разностью числовых значений свойства Text объектов TextBox1 и TextBox2. Эта процедура должна вызываться, если пользователь щелкнет по кнопке с надписью «-». Для написания этой процедуры выполнить двойной щелчок по кнопке «-», в результате откроется окно редактора кода, в котором будет помещена заготовка для процедуры обработки события Click объекта CmdMinus.

Private Sub CmdMinus _Click() End Sub

Внутри процедуры необходимо с клавиатуры добавить команду

TextBox3.Text=Val(TextBox1.Text)-Val(TextBox2.Text)

4) Создайте аналогично процедуры умножения и деления. На этом создание приложения Калькулятор завершено. Посмотрите в Окне проектов Project структуру созданного Вами проекта и включите ее в отчет о выполнении лабораторной работы. Сохраните свой проект полностью.

5)Сохраните свой проект с помощью команды File→Export File

всвоей папке под именем Калькулятор.frm. Посмотрите, какие файлы при этом появятся.

6)Вернитесь в Word и завершите работу приложения, сохранив файл под своей фамилией. Если при выходе появится диалоговое окно за-

просом «Общий шаблон Normal был изменен. Сохранить его?» – в от-

вет необходимо нажать клавишу Да для сохранения в созданной формы и проекта в шаблоне Normal.

7)Запустите файл Калькулятор.frm из Проводника – он должен открыться в среде Visual Basic как новый проект Project1.exe. Проверьте его работу.

8)По окончании тестирования и отладки проекта создать исполняемый файл в своей папке с расширением .exe используя команду

File→Make Project1.exe. Это позволит использовать приложение в системе Windows без поддержки Visual Basic. Запустите этот файл из программы Проводник и проверьте его работу.

9) Добавить в созданное приложение новые управляющие элементы по указанию преподавателя.

8.ДОПОЛНИТЕЛЬНАЯ РАБОТА НАД ПРОЕКТОМ

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

1) Открыть файл под своей фамилией, созданный в предыдущем разделе, зайти в IDE VBA. Добавить в проект новую пользовательскую форму и задать для нее значения свойства Name – Form2, а свойства Caption – Калькулятор 1. Щелкнуть в окне проектов Form1 и, выделив с помощью мыши все элементы управления, размещенные в ней, скопировать их в буфер обмена. А затем щелкнуть в окне проектов Form2, вставить в нее элементы управления из буфера обмена и снять выделение.

2) Расширить форму Form2 и добавить на нее с панели Toolbox следующие элементы управления: Image (Рисунок), ListBox (Спи-

сок), ComboBox (Комбинированное поле), TextBox4 (текстовое поле), две кнопки CommandButton, присвоив для них значения свойства

Name – CmdData и CommandButton1, соответственно, а свойства

Caption – Вариант и Среднее, соответственно. Разместить элементы в форме в соответствии с Рис. 8.1.

Рис. 8.1

3) Скопировать программный код, относящийся к форме Form1 в буфер обмена. Щелкнуть в окне проектов по форме Form2 и, выбрав в контекстном меню команду ViewCode, открыть окно кода, относящееся к Form2. Это окно содержит всего одну инструкцию

' Опции VBA

Option Explicit

Вставить в окно кода для Form2 из буфера обмена следующие пять процедур, которые уже использовались в Form1:

' Процедура суммирования

Private Sub CmdPlus_Click() TextBox3.Text=Val(TextBox1.Text)+Val(TextBox2.Text)

End Sub

' Процедура вычитания

Private Sub

CmdMinus_Click()

TextBox3.Text=Val(TextBox1.Text)-Val(TextBox2.Text)

End Sub

 

' Процедура

умножения

Private Sub

CmdUmn_Click()

TextBox3.Text=Val(TextBox1.Text)*Val(TextBox2.Text)

End Sub

 

' Процедура

деления

Private Sub

CmdDelen_Click()

TextBox3.Text=Val(TextBox1.Text)/Val(TextBox2.Text)

End Sub

 

' Процедура

выхода

Private Sub

CmdExit_Click()

End

 

End Sub

 

4) Для корректной работы программы необходимо в разделе описания переменных модуля объявить переменные, используемых в них:

'Переменные уровня модуля

Dim bytA As Byte Dim strA1 As String Dim strA2 As String

Private i As Integer

Private j As Integer Private Среднее As Double Dim v As Integer

5) Два элемента управления ListBox (Список) и ComboBox (Комбинированное поле) будут использоваться в программе для формирования возможных вариантов исходных данных для работы калькулятора.

Первый из них применяется для хранения списка значений, из которых пользователь может выбрать одно или несколько значений. Второй сочетает в себе функциональные возможности списка ListBox и поля ввода TextBox. В отличие от ListBox ComboBox отражает только один элемент списка, не позволяет одновременно выделять несколько элементов списка. Дополнительно он может вводить значение через поле ввода, как это делает элемент управления TextBox.

Для того чтобы значения в поле вводились автоматически при вызове программы Form2, включим в программу процедуру активизации фор-

мы Private Sub UserForm_Activate(), внутри которой поэле-

ментно в цикле добавляются элементы в список с помощью метода AddItem.

'Процедура активизации формы

Private Sub UserForm_Activate()

'Заполнение комбинированного списка, формирующего ‘номера вариантов

ComboBox1.Clear For i=1 To 3 ComboBox1.AddItem i Next i

'Заполнения списка, формирующего список данных

For i=1 To 6 ListBox1.AddItem i Next i

End Sub

6) Процедура Private Sub CmdData_Click() активизиру-

ется при нажатии на клавишу Вариант и в зависимости от варианта, выбранного в списке или введенного в поле ввода элемента управления ComboBox, заполняет поля ввода TextBox1 и TextBox2 значениями из соответствующих полей Списка.

' Процедура присвоения данных из списка в зависимости от варианта

Private Sub CmdData_Click() TextBox3.Value = " "

v = Val(ComboBox1.Text) If v=1 Then

TextBox1.Value = ListBox1.List(0)

TextBox2.Value = ListBox1.List(1) ElseIf v = 2 Then

TextBox1.Value = ListBox1.List(2)

TextBox2.Value = ListBox1.List(3)

Else

TextBox1.Value = ListBox1.List(4)

TextBox2.Value = ListBox1.List(5)

End If End Sub

7) Добавить в программный модуль процедуру Private Sub CommandButton1_Click() для обработки события по нажатию кнопки

«Среднее».

'Процедура вычисления среднего

Private Sub CommandButton1_Click() With ListBox1

Среднее = 0: j = 0 For i=0 To .ListCount-1

If .Selected(i) = True Then

Среднее=Среднее+.List(i) j=j+1

End If Next i

Среднее=Среднее/j TextBox4.Text=CStr(Среднее)

End With End Sub

Для того чтобы иметь возможность выбирать несколько значений из списка ListBox, необходимо задать для свойства MultiSelect этого элемента требуемое значение. Однако это свойство не может задаваться программно, а устанавливается лишь в окне Properties и имеет три допустимые значения:

0 (выбор только одного элемента);

1 (разрешен выбор нескольких элементов либо щелчком, либо кла-

вишей Пробел);

– 2 (разрешено использование клавиши Shift для выбора ряда последовательных элементов).

Свойство Select предоставляет возможность проверить, выбран ли элемент с указанным индексом.

8) В VBA также имеется встроенное окно ввода InputBox, которое позволяет ввести данные в программу через текстовое поле на диалоговой панели. Соответствующая функция имеет следующий синтаксис:

InputBox ( Приглашение$, Заголовок$, [ПоУмолчанию$] )

Впроцессе выполнения этой функции появляется диалоговая панель

стекстовым полем. В строке заголовка панели будет печататься значение второго аргумента Заголовок$, на самой панели печатается значение ар-

гумента Приглашение$, а в текстовом поле печатается значение аргумента ПоУмолчанию$ (если это значение отсутствует, то содержимое текстового окна также отсутствует). Введенная пользователем строка становится значением функции.

Добавить в начале процедуры Private Sub UserForm_Activate() следующие строки:

strA1 = InputBox("Введите первый операнд",_ "Присвоение значений операндам")

strA2 = InputBox("Введите второй операнд", _ "Присвоение значений операндам ")

TextBox1.Value = Val(strA1)

TextBox2.Value = Val(strA2)

В результате при запуске процедуры на экране последовательно появляются два диалоговых окна с текстовыми полями, куда можно ввести значения. При нажатии на клавишу ОК в первых двух текстовые окнах калькулятора появятся введенные значения, а при нажатии клавиши Cancel – по умолчанию введутся нулевые значения.

9) С помощью функции MsgBox можно добавлять в проект панели сообщений.

Впростейшем случае функция MsgBox работает в режиме оператора

ииспользуется для вывода сообщений не на форме, а на специальной панели сообщений. Синтаксис функции в режиме оператора:

MsgBox Сообщение$ [,ЧислоКод1+ЧислоКод2] [,Заголовок$]

В результате на экране появится панель сообщений со строкой Сообщение$, в строке заголовка будет выведено Заголовок$, а аргумент ЧислоКод1+ЧислоКод2 определяет внешний вид панели.

С помощью одного числа, являющегося суммой чисел ЧислоКод1 и ЧислоКод2, можно одновременно установить определенную пиктограмму и определенную комбинацию кнопок, размещенных на панели сообщений. Значения чисел ЧислоКод1 и ЧислоКод2 приведены в таблицах 8.1

и 8.2.

 

Таблица 8.1

 

 

Таблица 8.2.

ЧислоКод1

Пиктограмма

 

ЧислоКод2

Набор кнопок

 

 

 

16

Х

 

 

 

 

0

ОК

 

 

 

 

 

1

ОК, Отмена

32

?

 

 

2

Стоп, Повтор, Пропустить

48

 

 

 

 

!

 

3

Да, Нет, Отмена

 

 

 

 

 

4

Да, нет

64

i

 

5

Повтор, Отмена

 

 

 

 

 

 

 

Например число 36 можно рассматривать как сумму чисел 4 (код комбинации кнопок Да, Нет) и 32 (код пиктограммы «Вопрос»).

Для вывода на панели сообщений с заголовком "MsgBox в режиме оператора" сообщения "Ввод закончен" достаточно добавить в процедуру Private Sub UserForm_Activate()строку:

MsgBox "Ввод закончен",48,"MsgBox в режиме оператора"

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

MsgBox (Сообщение$ [, ЧислоКод1+ЧислоКод2 ] [, Заголовок$ ] )

10) Добавить в форму элемент управления Image (Рисунок), который используется для отображения графических файлов в формате BMP, CUR, GIF, ICO,JPG и WMF в форме.

Включить в процедуру Private Sub UserForm_Activate() строки

bytA = MsgBox("Будете работать с калькулятором?", _ 36, "Калькулятор")

If bytA = 6 Then

Image1.Picture = LoadPicture("Полное имя файла") Else

TextBox1.Value = " "

TextBox2.Value = " " End If

Врезультате на экране появится сообщение "Будете работать

скалькулятором?" и, в случае нажатия на клавишу Да значение функции, равное 6, присваивается целочисленной переменной bytA, а в форму загрузится рисунок и в первых двух текстовые окнах калькулятора останутся введенные значения, при нажатии на клавишу Нет рисунок не загрузится, а в текстовые окна очистятся.

Добавить рисунок в форму можно и в окне Properties элемента управления Image (Рисунок), Значение False свойства AutoSize, устанавливаемое в окне Properties, позволяет вписать рисунок в выбранное окно, значение True выводит ту часть рисунка, которая помещается в окне.

11) Для доступа к созданному проекту из среды Microsoft Word удобно поместить соответствующую кнопку на требуемой панели инструментов. Для этого необходимо создать пустой макрос Макрос1() и назначить ему кнопку на требуемой панели инструментов. Добавьте в макросе всего одну строку, отображающую форму Form1 на экране

Sub Макрос1()

Form1.Show

End Sub

12)Для создания нового раздела меню выбрать из меню Сервис команду Настройка. На вкладке Команда выбрать категорию Новое меню и перетащить появившуюся команду Новое меню в строку меню. Выбрать категорию Макросы и перетащить требуемый макрос в раздел меню Новое меню. Закрыть окно.

13)Проверить работу макроса с панели инструментов и из меню.

7.РАЗРАБОТКА АВТОМАТИЗИРОВАННОГО ПРИЛОЖЕНИЯ С ПОМОЩЬЮ VBA и WORD

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

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

7.1.Шаблоны

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

Разработать шаблон для первого листа текстовой технической документации (Рис. 9.1) в текстовом редакторе MS Word. Для этого установите на закладке Параметры страницы следующие значения полей: левое – 2 см, правое – 0,5 см, верхнее и нижние – минимально возможное. Затем с помощью таблицы создать в MS Word шаблон рамки со штампом заданных размеров и вписать в соответствующие ячейки общий неизменный текст.

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

Для создания закладки в шаблоне необходимо выполните следующие действия:

1)Указать место для закладки, переместив сюда точку вставки.

2)В меню Вставка выбрать команду Закладка.

3)Ввести имя закладки в поле Имя закладки и щелкнуть на кнопке

Добавить.

Добавить в шаблон следующие закладки:

сcOsn – указывает место, куда вводится основная надпись; ccRazd – указывает место, куда вводится название раздела; ccList – указывает место, куда вводится номер листа; ccListov – указывает место, куда вводится количество листов;

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