Создание проекта, модуля, процедуры, функции.

Перед созданием программ, необходимо удалить лишние модули и подпрограммы. Для этого необходимо открыть окно VBA. Перейти в окно проекта. Выделить удаляемый модуль или процедуру, вызвать контекстное меню (щелкнуть правую кнопку мыши) нажать строчку удалить модуль. На запрос о сохранении удаляемого модуля, выбрать НЕТ.

Создание модуля осуществляется из меню Вставка/ Модуль.

Задание 2. Создайте модуль с именем VBAМод1. Опишите в конспекте каким образом присваивается имя модуля. Каким образом можно изменить имя модуля.

Конец задания 2.

Средства ввода- вывода данных.

Модули содержат процедуры и функции. Создание процедуры осуществляется из меню Вставка/ процедура. В диалоговом окне задается имя процедуры, тип.

Задание 3.Используя команду Вставка / Процедура Создайте процедуру ВводВывод:

Public Sub ВводВывод()

Dim strИмя As String

strИмя = InputBox("Введите Ваше имя", "Окно ввода", "Неизвестный")

MsgBox Prompt:=strИмя & " ! У Вас получилось! "

End Sub

Функция InputBoxимеет параметры:

InputBox(“сообщение пользователю”, заголовок окна, значение по умолчанию)

Сообщение в окне диалога MsgBox представляет собой строку, включающую последовательность строковых констант в кавычках соединенных знаком & c именами переменных. Например, при использовании операторов

b = 10

MsgBox(“Значение переменной b = ” & b)

будет выведено - Значение переменной b = 10.

Свяжите созданную процедуру с кнопкой на панели инструментов. Для вывода кнопки запуска программы на созданную панель необходимо в окне Настройка перейти на вкладку Команды, выбрать в поле Категории Макросы, в поле Команды выбрать кнопку соответствующую программе, захватить кнопку мышкой перетащить на панель и бросить. Используя меню Изменить выделенный объект выбрать Основной стиль для кнопки или изменить значок.

Перейдите в окно текстового документа. Запустите в работу программу. Опишите в конспекте назначение операторов программы.

Конец задания 3.

Задание 4.Создайте подпрограммы :

1. расчета скорости по известным расстоянию и времени.

2. расчета длины окружности и ее площади по значению радиуса.

3. расчета объема цилиндра по известным высоте и радиуса.

Свяжите созданные процедуры с кнопками на панели инструментов.

Конец задания 4.

8.8. Решение задач при помощи стандартных средств VBA

В таблице 1 показано соответствия основных алгоритмических и программных структур.

Таблица соответствия алгоритмических и программных структур Таблица 1
№ п/п Задача Алгоритм Программа на VBA
Начало процесса, заголовок. начало; Public Sub ImProgram()
Описание структуры данных. Список переменных: a, b, c – вещ; d, k – цел; mas(5, 5) – цел; mas1(5,5) – вещ; Dim a, b, c As Single Dim d, k As Integer Dim mas(1 to 5, 1 to 5) As Integer Dim mas( 5, 5) As Single
Ввод исходных значений. Ввод(a, b, d, k); a = InputBox( “Ввод a”) b = InputBox( “Ввод b”) d = InputBox( “Ввод d”) k = InputBox( “Ввод k”)
Проверка исходных данных. Вывод(a, b, d, k); MsgBox “Вывод a” & a MsgBox “Вывод b” & b MsgBox “Вывод d” & d MsgBox “Вывод k” & k
Линейные операции ( действия ). c = 2a + √b c := 2 * a + Sqr(b); c = 2 * a + Sqr(b) (см. ниже ссылку 1)
Выбор альтернативного пути в зависимости от значения условия. Если с > 10 то с := с – 3*а; иначе с := с + 2*b; конец- если; If c > 10 Then с = с – 3*а Else с = с + 2*b End If
Выбор одного из нескольких альтернативных путей. Еслиperformance=1то Bonus = salary * 0.1 Иначе Если performance=2или3 то Bonus = salary * 0.09 Иначе Если performance>=4 и performance<=6 то Bonus = salary * 0.07 Иначе Если performance>8 то Bonus = 100 Иначе Bonus = 0,   где performance – переменная выбора, Bonus, salary – переменные. Select Case performance Case 1 Bonus = salary * 0.1 Case 2, 3 Bonus = salary * 0.09 Case 4 To 6 Bonus = salary * 0.07 Case Is > 8 Bonus = 100 Case Else Bonus = 0 End Select
Выполнение последовательности одних и тех же действий заданное количество раз. Цикл по i = 1 до 10 шаг 2; a := 34/b; c := √a + 2*c; b := b + 1; Вывод ( с ); Конец цикла по i; For i = 1 To 10 Step 2 a := 34/b; c := √a + 2*c; b := b + 1; MsgBox “Вывод с” & с Next i
Выполнение последовательности одних и тех же действий с предварительной проверкой условия окончания действий. Последовательное приближение к результату, итерационный процесс. Цикл – пока myNum > 10; myNum = myNum – 1; counter = counter + 1; Конец цикла; Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop
Выполнение последовательности одних и тех же действий с проверкой условия окончания операций в конце последовательности операций. Последовательное приближение к результату, итерационный процесс. Цикл – До myNum > 10; myNum = myNum – 1; counter = counter + 1; Конец цикла; Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10
Завершение операций. конец; End Sub

1. Справка по функциям и операторам VBA вызывается в окне Visual Basic по схеме: «? / Содержание и предметный указатель / содержание / Справочное руководство поVisual Basic / Функции или Обзор Visual Basic для приложений».

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

8.9. Программа поиска наибольшего элемента массива

Public Sub Massiv() 'Начало

'Список данных

Dim a, b, c, d As Integer'в ОЗУ отводится место для переменных

Dim mas(4, 4) As Integer 'в ОЗУ отводится место для массива

'Конец списка

'Ввод значений элементов массива размером 4 на 4

For i = 1 To 4 'начинаем цикл по переменной i, изменение первого индекса

Forj = 1 To 4 'изменение второго индекса

'в следующем операторе используется функция InputBox для ввода данных

'при выполнении функции выводится окно диалога InputBox

mas(i, j) = InputBox("Ввод значения элемента mas( " & i & ", " & j & " )", , 10)

Next j 'конец цикла по j

Next i 'конец цикла по i

'определение наибольшего элемента массива

b = mas(1, 1) 'переменной b присваивается значение элемента mas(1,1)

For i = 1 To 4

For j = 1 To 4

If mas(i, j) > b Then'если очередной элемент массива больше

b = mas(i, j) 'записать его значение в переменную b

c = i 'в переменную с записать значение первого индекса

d = j 'в переменную с записать значение второго индекса

End If

Next j

Next i

'вывод значения наибольшего элемента массива в окно диалога MsgBox

MsgBox"Наибольший элемент массива mas( " & c & " , " & d & " )" & " , равен " & b

End Sub 'Конец

8.10. Линейные алгоритмы и ветвления

Ход занятия. Используя стандартные средства VBA разработать программы, для решения задач, связать их с кнопками на панелях инструментов. Программы разрабатывать в документе Word.Предлагаемый перечень задач:

ЗАДАЧА 1

Составить алгоритм на VBA для вычисления и печати значений функции Y, заданной формулой:

Создание проекта, модуля, процедуры, функции. - student2.ru ;    

в алгоритме предусмотреть ввод аргумента x и вывод на печать введенной информации и результатов решения.

ЗАДАЧА 2

Известно, что система уравнений

Создание проекта, модуля, процедуры, функции. - student2.ru имеет решение:

Составить алгоритм на VBA для вычисления и печати значений x и y по известным численным значениям коэффициентам A1, B1, C1, A2, B2, C2, являющихся исходными данными для алгоритма.

ЗАДАЧА 3

Составить алгоритм на VBA в случае (а), обеспечивающий присваивание переменной A значение “1” при выполнении следующего условия:

а). переменная X принадлежит отрезку ]0;1[

ЗАДАЧА 4

Составить алгоритм на VBA для вычисления и печати значений функции Y, заданной формулой:

Создание проекта, модуля, процедуры, функции. - student2.ru В алгоритме предусмотреть ввод аргументов X и Z на вывод на печать введенной информации и результатов расчета.

ЗАДАЧА 5

Разработать алгоритм для вычисления и печати значения переменной X равному квадрату наименьшего одного из двух чисел A и B.

8.11. Циклические алгоритмы

Теоретические сведения.

Типы циклов

· Do...Loop: повторяет набор инструкций, пока условие имеет значение True или пока оно не примет значение True

Sub ChkFirstWhile()

counter = 0

myNum = 20

Do While myNum > 10

myNum = myNum - 1

counter = counter + 1

Loop

MsgBox "Выполнено " & counter & " итераций цикла."

End Sub

· For...Next: использует счетчик. Повторяет набор инструкций указанное число раз.

· For Each...Next: повторяет набор инструкций для каждого объекта семейства

Sub TwosTotal()

For j = 2 To10 Step 2

total = total + j

Next j

MsgBox "Сумма равна " & total

End Sub

В приведенном ниже примере для формирования приветствия в ответ на ввод имени пользователя используется конструкция цикла с параметром. Этот оператор позволяет организовать ввод пяти имен пользователей.

Public Sub ВводВывод()

Dim strImya As String

Dim i, a As Integer

For a = 1 To 5 Step 1

strImya = InputBox("Введите ваше имя - ")

MsgBox (strImya & "! У Вас получилось вывести приветствие! Ура!")

Next a

End Sub

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

Public Sub ВводВывод()

Dim strImya As String

Dim i, a As Integer

a = 5

Do While a >= 1 'Выполняется пока условие истинно

a = a - 1

strImya = InputBox("Введите ваше имя - ")

MsgBox (strImya & "! У Вас получилось вывести приветствие! Ура!")

Loop

End Sub

Существует второй вариант использования условия:

Public Sub ВводВывод()

Dim strImya As String

Dim i, a As Integer

a = 5

Do

a = a - 1

strImya = InputBox("Введите ваше имя - ")

MsgBox (strImya & "! У Вас получилось вывести приветствие! Ура!")

Loop While a >= 1 'Выполняется пока условие истинно

End Sub

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

Решение задач

ЗАДАЧА 6

Составить алгоритм на VBA, обеспечивающий выполнение следующих действий:

а). Переменной С присвоить значение суммы элементов массива:

Создание проекта, модуля, процедуры, функции. - student2.ru

ЗАДАЧА 7

Составить алгоритм, обеспечивающий вычисление и печать значений функции Y=f(x) в точках X1, X2,...,Xn:

а). Создание проекта, модуля, процедуры, функции. - student2.ru

ЗАДАЧА 8

Переменная Х меняет свое значение от Хн до Хк с шагом Создание проекта, модуля, процедуры, функции. - student2.ru Х. Разработать алгоритм, обеспечивающий вычисление и печать значений аргумента Х и функции Y=f(x) при каждом значении Х. Значения Хн, Хк и Создание проекта, модуля, процедуры, функции. - student2.ru Х являются исходными и подлежат вводу.

а) Создание проекта, модуля, процедуры, функции. - student2.ru Хн=-2, Хк=8, DХ=2.

ЗАДАЧА 9

Разработать алгоритм, обеспечивающий для заданного одномерного массива из n элементов {Ai}, i=1,2,.....,n выполнение следующих преобразований:

д) найти номер и величину наименьшего элемента Аi

8.12. Создание пользовательских форм с элементами управления

Цель практического занятия- приобретение и закрепление умений в использовании пользовательской формы для ввода вывода данных.

Алгоритм выполнения действий студентами при использовании формы для ввода вывода данных:

а) Открыть текстовый документ Word.

б) Сохранить текстовый документ под именем Пзi Фамилия, где i- номер занятия, Фамилия- фамилии студентов.

в) Используя команду Вид/ Панели инструментов/ Настройка создать панель VBAПрограммы, смотри рис.1.

В конце занятия результаты работы предъявить преподавателю.

Создание проекта, модуля, процедуры, функции. - student2.ru Создание проекта, модуля, процедуры, функции. - student2.ru

Создание проекта, модуля, процедуры, функции. - student2.ru Рис. 1.

г) Командой Сервис/ Макрос/ Редактор VBA запустить редактор VBA.

Привести редактор VBA к стандартному виду (панель Стандарт, слева закреплены окна проекта и свойств, справа окно модуля).

Командой Вставка/ UserForm вставить модуль формы.

Разработать в конспекте эскиз формы (смотри Рис. 2.).

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

Создание проекта, модуля, процедуры, функции. - student2.ru Создание проекта, модуля, процедуры, функции. - student2.ru

Рис. 2.

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

Задача:Составить блок- схему алгоритма и программу на VBA для вычисления и печати функции Создание проекта, модуля, процедуры, функции. - student2.ru .

е) Перейти в текстовый процессор Word.

В текстовом документе, используя Автофигуры, для конкретной задачи составить ГСА и написать текст процедур (смотри Рис. 3.).

Ниже приведен алгоритм решения задачи:

Создание проекта, модуля, процедуры, функции. - student2.ru Рис. 3. Создание проекта, модуля, процедуры, функции. - student2.ru

ж) Скопировать тексты программ и перенести их в соответствующие модули, находящиеся в окне VBA.

Связать одну из процедур (имеющую атрибут Public) с кнопкой на панели VBAПрограммы (смотри Рис.4.)

Перейти в редактор VBA, запустить и отладить программы.

Создание проекта, модуля, процедуры, функции. - student2.ru

Создание проекта, модуля, процедуры, функции. - student2.ru

Создание проекта, модуля, процедуры, функции. - student2.ru

Рис. 4.

В результате работы программы в окне Word появляется форма:

Создание проекта, модуля, процедуры, функции. - student2.ru

Ход занятия.В папке VBA 33i (i- номер группы) создать файл "Пз4Фамилия", в файле создать панель Настраиваемая1, на панели поместить кнопку запуска программы с формой.

Создание проекта, модуля, процедуры, функции. - student2.ru

Создание проекта, модуля, процедуры, функции. - student2.ru

Примерный вид формы:

Создание проекта, модуля, процедуры, функции. - student2.ru

Текст процедур, обеспечивающих работу формы:

Private Sub Document_Open()

Load UserForm1

UserForm1.Show

'установка курсора на позицию 5

UserForm1.TextBox1.SelStart = 5

'передача фокуса текстовому полю

UserForm1.TextBox1.SetFocus

End Sub

Public Sub пр1()

Call Document_Open

End Sub

Private Sub CommandButton1_Click()

UserForm1.Hide

End Sub

Private Sub CommandButton2_Click()

'курсор в начало текстового поля

TextBox1.SelStart = 0

'курсор в начало текст. поля с выделением

TextBox1.SelLength= Len(TextBox1.Text)

'фокус в текстовое поле

TextBox1.SetFocus

End Sub

Private Sub CommandButton3_Click()

'получение результата расчета

'перезапись текста из окна в окно при нажатии кнопки

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

End Sub

Ход занятия.В папке VBA 33i (i- номер группы) создать файл "Пз6Фамилия", в файле создать панель Настраиваемая1, на панели поместить кнопку запуска программы. Открыть окно VBA. В модуле ThisDocument написать процедуру, при помощи которой запускается форма:

Public Sub Форма()

UserForm2.Show

End Sub

связать процедуру с кнопкой на панели. Внимание! Панель инструментов и кнопку создавать в текстовом документе Word, а не в окне VBA.

Задание 1Создать пользовательскую форму. Ниже приведен фрагмент программы. Попробуйте определить для чего он необходим. Используя сведения, полученные на лекции № 10 ответьте на вопросы: Что такое Value ? Что такое Caption ? Что такое ScrollBar1 ? Что обозначает надпись Label1.Caption ? Создайте на форме необходимые элементы управления. Реализуйте текст программы в элементе формы. Запустите форму в работу. Опишите что вы наблюдаете.

Dim Var1 As Integer

Private Sub ScrollBar1_Change()

' Программа присваивания надписи значения, определяемого полосой прокрутки

Label1.Caption = Trim$(Str$(ScrollBar1.Value))

Var1 = ScrollBar1.Value

Label2.Caption = Trim$(Str$(Var1 * 8))

End Sub

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

Создание проекта, модуля, процедуры, функции. - student2.ru Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then

Label1.Visible = True

Else

Label1.Visible = False

End If

End Sub

Private Sub SpinButton1_Change()

CheckBox1.Caption = "Вывод результата"

Label1.Font.Size = 26

SpinButton1.Min = 3

SpinButton1.Max = 60

TextBox1.Font.Bold = True

TextBox1.Font.Size = 26

TextBox1.AutoSize = True

TextBox1.Value = SpinButton1.Value

Label1.Caption = SpinButton1.Value * 100

End Sub

Создайте форму, введите в модуле формы программы, опишите что происходит с элементами управления на форме. Ответьте письменно на вопросы:

1. Какие объекты обозначают имена- CheckBox1, Label1, TextBox1, SpinButton1?

2. Каким оператором задается размер текста на надписи, равный 26 пунктам?

3. Для чего необходим оператор SpinButton1.Max = 60?

4. Какая процедура позволяет включать и выключать надпись?

5. Каким способом можно задать автоматическое изменение размеров текстового поля? (Size- обозначает размер)

6. Какой оператор присваивает надписи значение счетчика умноженное на число?

7. Запишите оператор при помощи которого можно задать автоматическое изменение размеров надписи в соответствии с длинной помещаемого в ней текста или числа?

8.13. Создание программы подготовки открыток

Ход занятия.В папке VBA 33i (i- номер группы) создать файл "Пз8Фамилия", в файле создать панель Настраиваемая1. Открыть окно VBA. В модуле ThisDocument написать процедуру, при помощи которой запускается программа:

Public Sub Поздравление()

( сюда поместить оператор запуска формы )

End Sub

связать процедуру с кнопкой на панели. Внимание! Панель инструментов и кнопку создавать в текстовом документе Word, а не в окне VBA.

Задание.В документе Пз8Фамилия создать проект, позволяющий формировать поздравления ваших знакомых, с использованием объекта Word Art. Рекомендуется соблюдать последовательность:

1.Создать форму, содержащую два текстовых поля, две надписи и две кнопки.

2.В первое текстовое поле вводится имя поздравляемого во второе текстовое поле вводится текст поздравления.

3.Назначение полей отразить при помощи надписей.

4.Создать две кнопки, предназначенные: первая - для управления выводом поздравления в виде объекта Word Art в документ; вторая - для закрытия формы.

5.Записать при помощи макрорекордера процедуру, позволяющую выводить в документ текст поздравления в виде объекта Word Art и связать ее с соответствующей кнопкой на форме. После записи внести в процедуру изменения, например, указать источник текста в соответствующей строке процедуры (…AddTextEffect(msoTextEffect16, UserForm1.TextBox2.Text, "Arial",…).

Объект Word Art вызывается нажатием кнопки с изображением синей наклонной буквы А на панели РИСОВАНИЕ.


Наши рекомендации