- •Таблица 1
- •Таблица 2
- •Таблица 3
- •Таблица 4
- •Таблица 6
- •Таблица 7
- •10.2. Задание для выполнения на компьютере
- •10.3. Контрольные вопросы
- •11.3. Контрольные вопросы
- •Рис. 12.2. Листы рабочей книги «Товары» и «Заказчики» со списками
- •Range(«a11:e11»).ClearContents
- •12.3. Контрольные вопросы
- •Рис. 13.1. Вид заполненного бланка приложения «Извещение»
- •При создании программы для командной кнопки «Должники» необходимо учитывать, что в ней будут обращения из текстового документа к объектам, принадлежащим табличным документам Excel.
- •Рис. 13.2. Интерфейс диалогового окна проекта «Извещение»
- •Dim tab1 As Worksheet
- •13.3. Контрольные вопросы
- •Анкета «Заказ товара» может быть обработана программой процедуры обработки события OnClick для командной кнопки «Информация о заказе» следующего вида:
- •Рис. 14.6. Окно сообщения с информацией о заказе
- •14.2. Задание для выполнения на компьютере
- •14.3. Контрольные вопросы
- •Рис. А2.1. Примерный интерфейс приложения «Калькулятор»
- •Next
3. Задать для заголовков командных кнопок массива Command1(i) значения, соответствующие их номеру i в массиве.
Label
CommandButton |
CommandButton |
|
|
Рис. А2.1. Примерный интерфейс приложения «Калькулятор»
4.Другие командные кнопки на форме создать отдельно как обычные командные кнопки с помощью панели инструментов и задать для их заголовков соответствующие их назначению надписи.
5.Перейти к программному коду и объявить с помощью оператора Dim в разделе общих объявлений General используемые в программном коде переменные:
•n1, n2 – для хранения вычисляемых в калькуляторе чисел, тип Double (вещественные числа, двойной точности);
•ready – флаговая переменная–переключатель, принимающая только два значения 0 и 1 и служащая для очистки окна вывода результатов, тип – Integer (целые числа).
6.Дважды щелкнуть по командной кнопке Command1(1) или любой другой из элементов массива командных кнопок и набрать для тела ее процедуры, выполняющейся по щелчку мыши, ниже приведенныйтекст процедуры вместе с заголовком, где аргумент у имени процедуры не пустой, а включает переменную Index целого типа Integer, которая генерируется редактором VB по умолчанию для хранения в памяти номера элемента массива командных кнопок Command1(Index), причем значение этой переменной будет совпадать с номером командной кнопки):
131
Private Sub Command1_Click(Index As Integer) If ready > 0 Then
Label1.Caption = Label1.Caption + Str$(Index) ready = 1
Else
Label1.Caption = Str$(Index) ready = 1
End if End Sub
Здесь в процедуре выполняются следующие действия:
•условный оператор If проверяет значение флаговой переменной ready и, если оно отлично от нуля, продолжает запись числа в окно вывода результатов Label1, иначе все содержимое окна Label1 стирается и набирается новая цифра;
•строка ready = 1 устанавливает флаговую переменную не больше нуля (равной 1), чтобы можно было продолжить набор цифр в числе для многоразрядных чисел.
7. Запустить программу и проверить, что набор чисел при нажатии левой клавиши мыши на соответствующей кнопке выполняется. Выйти из программы.
8. Создать программный код процедуры для командной кнопки «.» (десятичная точка), для чего использовать текст программного кода, приведенный выше, скопировав его через буфер обмена и заменив
внем переменную i на символ точки.
9. Cоздать программный код процедуры для функциональной кнопки «+», щелкнув по ней дважды мышью на форме и перейдя, таким образом, в окно просмотра кода:
n1 = Val(Label1.Caption)
n1 = n2 + n1
n2 = n1
Label1.Caption = Str$(n1) ready = 0
Здесь в тексте процедуры выполняются следующие операции соответственно по строкам:
• присваивается значение переменной n1 как числа, преобразованного функцией Val из строки символов в окне вывода результатов;
132
•n1 складывается с числом, хранящимся в памяти до этой операции в переменной n2 (т.е. первым числом);
•в переменную n2 заносится полученный результат для хранения на случай выполнения следующей операции на калькуляторе (в результате первое число будет храниться в переменной n2, а новое – второе в ходе выполнения операции – число после его набора в окне Label1 попадает в переменную n1);
•обновляется содержание окна вывода результатов;
•флаговая переменная ready приравнивается 0 для готовности к вводу нового числа в окне Label1.
10. Запустить приложение и проверить работу операции сложения двух чисел. При этом необходимо учитывать, что калькулятор работает в режиме т.н. «польской» логики – для выполнения операции над двумя числами, необходимо:
а) набрать первое число и занести его в память, нажав функциональную клавишу «+»;
б) набрать второе число и нажать клавишу необходимой операции, после чего появится искомый результат, который автоматически заносится в память и становится первым числом при продолжении вычислений.
11. Для создания программного кода процедур других функциональных клавиш можно скопировать набранный текст через буфер обмена, аналогично пункту 8, вставить его в соответствующие процедуры для других функциональных клавиш и отредактировать текст, соответственно заменив в нем вторую строку следующим образом:
•для кнопки вычитания на n1 = n2 – n1
•для кнопки умножения на n1 = n2*n1
•для кнопки деления на
If n1 <> 0 Then n1 = n2/n1 Else MsgBox «Деление на нуль»
11. Для командной кнопки «Сброс» в программном коде ее процедуры необходимо:
•присвоить значению заголовка пустые кавычки, что эквивалентно очистке окна Label1;
•обнулить значения используемых переменных n1, n2, ready. 12. Запустить приложение и проверить его работу для всех опе-
раций.
13. Отформатировать внешний вид калькулятора, задав для всех его объектов (включая и саму форму) подходящие значения для
133
свойств: Font (шрифт), BackColor (фоновый цвет), ForeColor (цвет переднего плана), Icon (значок для окна программы).
14. Сохранить проект приложения и его exe-файл в своем ката-
логе.
15. Запустить ехе-файл разработанного приложения из Проводника и проверить его работу.
А2.3. Контрольные вопросы
1.Что является массивом элементов управления?
2.Как создать массив командных кнопок?
3.Как выбрать отдельный элемент из массива элементов управ-
ления?
4.Назначение аргумента в заголовке процедуры обработки события Click для массива командных кнопок
5.Как работает процедура по набору числа из отдельных цифр?
6.Как происходит переход к набору нового числа?
7.Какую роль выполняет в программном коде функция Str$ ?
8.Какую роль выполняет в программном коде функция Val?
9.Как вернуть “Калькулятор” в исходное состояние?
134
А3. Простые и комбинированные списки А3.1. Общие сведения
На языке VB существуют два элемента управления, предназначенных для хранения и обработки одномерных массивов некоторой информации – это два вида списков (см. рис.A3.1):
•простые списки ListBox
•комбинированные списки ComboBox
Строго говоря, списки нельзя полностью отождествить с массивами, определенными выше, т. к. в списке может содержаться разнородная информация (например, и текстовая, и числовая). Списки можно частично очищать от элементов и т.п. Массивы данных, хранящиеся в списках, не требуют специального объявления – достаточно создать на форме соответствующие элементы управления, после чего обращение к массиву производится через значение свойства Name для объекта на форме, соответствующего списку. Фактически списки являются объектами, в которых могут храниться динамические одномерные массивы числовых или текстовых данных, т.к. количество элементов в списке заранее не определяется, а, как правило, определяется в ходе выполнения программы.
Комбинированные списки в отличие от простых содержат, кроме собственно списка, еще и текстовое поле, через которое можно записывать и вводить данные в список, добавляя последовательно к существующим новые элементы массива. Кроме того, комбинированные списки могут иметь три формы, определяемые значением свойства Style:
0– раскрывающийся комбинированный список;
1– простой (нераскрывающийся) комбинированный список;
2– раскрывающийся список без поля ввода.
Основными свойствами для списков являются следующие (подробнее см. приложение А):
List(i) – i-й элемент в списке;
ListIndex – номер выбранного (активизированного щелчком мыши, подсвеченного) элемента в списке;
ListCount – количество элементов в списке.
Например, чтобы обратиться к 5-му элементу в списке List1, необходимо записать
135
List1.List(4)
(здесь учитывается, что нумерация элементов в списке начинается с 0), а определить номер выбранного элемента в списке List2 можно, записав
List2.ListIndex
Основными методами обработки списков являются следующие: AddItem – добавить элемент в список;
RemoveItem – удалить указанный элемент из списка; Clear – удалить весь массив из списка.
Например, чтобы добавить элемент Sin(5) в список List1, необходимо записать (и затем выполнить) строку кода
List1.AddItem sin(5)
чтобы очистить весь список, например List2, необходимо записать
List2.Clear
а чтобы удалить из комбинированного списка Combo1 3–й элемент, необходимо записать
Combo2.RemoveItem 2
По умолчанию данным, хранимым в списках, присваивается тип string, поэтому при обработке числовых данных из списков рекомендуется использовать функцию преобразования к числовому типу Val. Например, в арифметических операциях типа
y=Sin(5)*Val(List1.List(2))
использование функции Val обезопасит от неоднозначности при интерпретации информации, взятой из списка (напомним, что VB во многих случаях интерпретирует типы обрабатываемых данных по «логике» преобразований, однако это может привести в некоторых случаях к неправильным результатам).
Основными событиями для выполнения программного кода в процедурах для списков являются:
Click – щелчок мышью;
KeyPress – нажатие на соответствующую клавишу.
Событие KeyPress используется в основном в комбинированных списках для перевода информации из текстового поля в список. При этом процедура, обрабатываемая таким событием, всегда имеет аргумент, соответствующий скэн-коду (порядковому номеру на клавиатуре) обрабатываемой клавиши. Например, для того, чтобы в комбинирован-
136
ном списке combo1 после нажатия на клавишу ввода Enter (номер скэнкода равен 13) произошел перевод информации из текстового поля в список, необходимо записать строку кода
If n = 13 Then Combo1.AddItem.Combo1.Text
где n – аргумент процедуры обработки события нажатия на клавишу
KeyPress.
ComboBox
Label
Рис. A3.1. Примерный интерфейс приложения «Накладная»
А3.2. Задание для выполнения на компьютере
1. Создать на форме пользовательский интерфейс, соответствующий представленному на рис. A3.1, и ввести свое название фирмы, номер накладной и дату. Для комбинированных списков задать в свойстве Style значение Simple Combo (простой комбинированный список) и протяжкой мышью растянуть его на соответствующую длину.
137
2.Перейти в режим набора программного кода View Code и выбрать в списке объектов Object первый список Сombo1, а в списке событий обрабатываемых соответствующими процедурами Proc выбрать KeyPress – процедуру обработки нажатия клавиши.
3.Записать текст программного кода процедуры для первого комбинированного списка Сombo1 (ниже приводится текст программного кода вместе с заголовком процедуры, в котором в качестве аргумента имени процедуры определяется переменная KeyAscii целого типа, значения которой соответствуют скэн-коду нажимаемой клавиши):
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Combo1.AddItem.Combo1.Text
Combo1.Text = «»
KeyAscii = 0
Combo2.SetFocus
End If
End Sub
Здесь проверяется, если скэн-код клавиши соответствует клавише ввода Enter, т.е. равен 13, то последовательно выполняются следующие 4 операции:
•в список добавляется новый элемент с содержанием, соответствующим содержанию поля ввода Combo1.Text;
•содержание строки ввода в списке очищается;
•переменой KeyAscii, хранящей значение кода нажимаемой клавиши, присваивается нулевое значение;
•курсор перемещается в текстовое поле следующего списка.
4.Запустить приложение на выполнение из редактора VB и проверить, как заполняется первый список, установив мышью текстовый курсор в окне ввода комбинированного списка и вводя в него последовательно название.
5.Создать аналогичный текст для двух других списков Сombo2 и Сombo3, использовав процедуру копирования через буфер обмена и заменив затем в них название объекта Сombo1 на соответственно Сombo2
138
и Сombo3, а для строки c оператором SetFocus – на соответственно
Сombo3 и Сombo1.
6.Снова проверить работу уже трех списков, заполняя в них строки последовательно для каждого вида товара.
7.Написать для командной кнопки Command1 текст программного кода для процедуры вычисления суммы уплаты за товары (выбрать стандартное событие для обработки командной кнопки Click):
Dim i As Integer, sum As Single Do While i < Combo2.ListCount
sum = sum + Val(Combo2.List(i))*Val(Combo3.List(i)) i = i + 1
Loop
Label4.Caption = Str$(sum) + «руб.»
Здесь в первой строке объявляются локальные переменные i и sum, далее в цикле пока не будет достигнут конец второго списка, хранящемся в значении Combo2.ListCount, вычисляется сумма произведений цены товара за 1кг во втором списке на вес его в третьем списке и, наконец, значению переменной i добавляется 1 за один проход цикла. В последней строке в заголовок объекта Label4 выводится результат вычисления и к нему дописываются символы «руб.»
8.Запустить приложение, набрать несколько строк в накладной для выбранных товаров и проверить работу кнопки «Всего уплатить».
9.Создать для второй командной кнопки Command2 процедуру вычисления средней цены за 1 кг товара, используя текст предыдущей процедуры и внося в нее следующие изменения:
•строку, где вычисляется сумма, заменить на вычисление общей цены за 1 кг товара в этом списке:
sum = sum + Val(Combo2.List(i))
•строку, которая выводит результат, заменить на
Label5.Caption = Str$(sum/Combo2.ListCount) + «руб.»
где в скобках вычисляется среднее арифметическое значение цен за 1 кг. 10. Создать для третьей командной кнопки Command3 процедуру вычисления общего веса товара, также используя текст первой процеду-
ры со следующими изменениями:
139
•строку, где вычисляется сумма, заменить на вычисление общего веса товара в этом списке:
sum = sum + Val(Combo3.List(i))
•строку, которая выводит результат, заменить на
Label6.Caption = Str$(sum) + «кг»
11. Запустить программу на выполнение и проверить работу всего
приложения в целом, набрав в текстовом окне накладной получателя товара, затем несколько строк наименований товара и его количество и проведя все предусмотренные вычисления.
12.Подобрать для объектов на форме подходящие шрифты, цвета, размеры окон и выбрать значок для формы (свойство Icon), а для текстового окна, если адрес получателя не помещается в отведенном для него окне на форме полностью, ввести новые значения его свойств:
Multilines = True Scrollbars = 1
для появления в текстовом окне горизонтальной линии прокрутки.
13.Запустить приложение, заполните полностью накладную на 15 наименований товара и провести все предусмотренные в приложении вычисления.
14.Сохранить разработанное приложение в своем каталоге.
15.Создать откомпилированный вариант приложения «Накладная», запустить исполнимый exe–файл приложения из Проводника среды Windows и проверить его работу.
А3.3. Контрольные вопросы
1.Какие типы списков используются в языке VB?
2.Чем отличаются списки от одномерных массивов?
3.Какие различные формы представления имеют комбиниро– ванные списки?
4.Как в программе добавить элемент в список и удалить его?
6.Какими основными событиями обрабатывается програмный код для списков?
7.Что называется скэн–кодом клавиши на клавиатуре?
8.Как подсчитать сумму числовых элементов в списке?
9.Как подсчитать среднее значение числовых элементов в списке?
140
А4. Построение графиков функций, диаграмм и гистограмм А4.1. Общие сведения
Для построения графиков функций обычно используется метод Pset – прорисовка точки. При этом одной из координат точки является значение аргумента функции, а второй – значение самой функции
Pset (x, f(x))
Для того чтобы получить некоторую линию, отражающую функциональную зависимость, необходимо погрузить эту строку в цикл For...Next со счетчиком, равным значению аргумента х и задать в цикле достаточно малый шаг изменения аргумента (обычно достаточно 0.01), чтобы точки значений функции сливались в сплошную линию. Например,
For x = –10 To 10 Step 0.01
Pset (x, f(x))
Next x
При этом необходимо позаботиться, чтобы объект, на котором должен появиться график функции, был правильно отмасштабирован методом Scale как по оси х, так и по оси у. Трудность здесь заключается в подборе правильного масштаба по оси ординат, вдоль которой откладываются значения функции, а предельные значения для сложной незнакомой функции, как правило, не известны заранее и масштаб по оси ординат приходится подбирать экспериментальным путем. Например, для прорисовки графика функции Sin(x) в окне Picture1 в пределах изменения ее аргумента от –10 до 10 радиан приемлемым будет следующий масштаб:
Picture1.Scale (–12, 2) – (12, –2)
График функции обычно сопровождается линиями осей координат, поэтому в целом программа прорисовки графика функции Sin(x) в графическом окне Picture1 может выглядеть следующим образом:
Dim x As Single
Picture1.Scale (–12,2) – (12, –2)
Picture1.Line (–12, 0) – (12, 0)
Picture1.Line (0, 2) – (0, –2)
For x = –10 To 10 Step 0.01
Picture1.Pset (x, Sin(x))
Next x
141
Для того чтобы можно было нанести масштаб на оси координат, необходимо воспользоваться следующим свойством: оператор Print
производит вывод значений правее и ниже той позиции, где останавливается графический курсор после выполнения предшествующего по программе графического метода. Поэтому, если в приведенную выше программу добавить программный код
For i = -11 To -1
Picture1.Line (i, 0.05)-(i, -0.05)
Picture1.Print i
Next i
For i = 1 To 11
Picture1.Line (i, 0.05)-(i, -0.05)
Picture1.Print i
Next i
For j = 1.5 To -1.5 Step -0.5
Picture1.Line (-0.1, j)-(0.1, j)
Picture1.Print j
Next j
то мы получим в графическом окне на форме график функции Sin(x) в виде, представленном на рис. А4.1.
Рис. А4.1. График функции c масштабными делениями по осям координат
При этом в приведенном выше программном коде учтено, что при выводе масштабных делений в соответствующих циклах на пересечении осей координат цифра 0 должна появиться только один раз,
142
поэтому один из циклов – по горизонтальной оси – пришлось разбить на две части с исключением значения, равного нулю.
Для построения столбчатых гистограмм, отражающих в графическом виде числовые значения из таблиц, списков или массивов некоторых дискретных величин (зарплата сотрудников, экспериментальные данные и т.п.), обычно используется метод Line в режиме вычерчивания прямоугольника. При этом координаты левого верхнего угла прямоугольника задаются как (i, m(i)), где m(i) – значение i-го элемента некоторого массива, а противоположного по диагонали угла – как (i + d, 0), где d – ширина прямоугольника, основание которого лежит на оси абсцисс. Например, для некоторого массива m(i) из 10 чисел со значениями от 30 до 100 можно построить гистограмму, используя следующий программный код:
Scale (–2, 110)–(12, –10)
Line (0, 0)–(0, 100)
Line (0, 0)–(10, 0)
For i = 0 to 9
Line (i, m(i)) – (i + 0.5, 0), ,B
Next i
Здесь столбцы гистограммы будут представлять собой прямоугольники с высотой, соответствующей числовому значению элемента массива m(i) и шириной столбца, равной 0.5.
Пример А4.1. Программа для построения закрашенной столбчатой гистограммы по количеству товаров в их списке (рис. А4.2).
Picture1.Scale (-1, 100)-(Combo2.ListCount + 1, -10)
Picture1.Line (0, 0)-(Combo2.ListCount + 1, 0)
Picture1.Line (0, 0)-(0, 100)
For i = 1 To Combo2.ListCount
Picture1.Line (i, Val(Combo2.List(i - 1)))-(i + 0.5, 0), QBColor(i), BF
Picture1.PSet (i, -2), QBColor(15)
Picture1.Print Combo1.List(i - 1)
Next i
В программе выбирается соответствующий масштаб графического окна в соответствии с количеством записей в списке (см. раздел А3 в прил. А) и максимальным значением количества товаров (это значение можно определить по отдельной программе, тогда гистограмма будет подстраиваться под тот список, значения которого она
143
должна отображать графически). Затем прорисовываются оси координат. В цикле для установки графического курсора в нужное место при выводе подписи используется оператор Pset с белым цветом точки, что соответствует значению 15 индекса у функции определения цвета QBColor. Наконец, подписи под столбцами гистограммы выводятся из первого списка Combo1.
Рис. А4.2. Столбчатая гистограмма для количества товаров в списке
Для построения круговых диаграмм естественно использовать метод Circle в режиме, когда вычерчиваются дуги с отрицательными значениями начального и конечного углов в радианах.
Перед построением диаграммы следует вычислить сумму sum всех элементов массива m(i) и затем представить дугу каждого сектора в диаграмме как долю дуги всей окружности 6.28 в радианах:
6.28*m(i)/sum.
Масштаб в окне круговой диаграммы может быть произвольным, поскольку здесь при построении используются относительные величины.
Пример А4.2. Программа построения для числового массива m(i) из 10 вещественных чисел круговой незакрашенной диаграммы:
Dim m(10) As Single
Dim a As Single, b As Single, sum As Single, i As Integer For i = 0 to 9
m(i) = Val(InputBox(«Ввести m(i)»)) sum = sum + m(i)
next i
144
Scale (–10,10)–(10,–10) For i = 0 To 9
b = b + 6.28*m(i)/sum Circle (0,0),8, ,–a,–b a = b
Next i
Здесь использованы переменные a и b для хранения значений соответственно начального и конечного углов каждого из секторов круговой диаграммы.
Пример А4.3. Программа для построения круговой закрашенной соответствующим цветом диаграммы для количества товаров в их списке (рис. А4.3).
Dim a As Single, b As Single, s As Single, i As Integer Picture1.Scale (-10, 10)-(10, -10)
For i = 0 To Combo2.ListCount - 1 s = s + Val(Combo2.List(i))
Next i
a = 0.001 Picture1.FillStyle = 0
For i = 0 To Combo2.ListCount - 1
b = b + 6.28 * Val(Combo2.List(i)) / s
Picture1.FillColor = QBColor(i + 1) Picture1.Circle (0, 0), 8, QBColor(i), -a, -b a = b
Next i
В тексте программы учтено, что закрашивать в VB можно только замкнутую фигуру и при прорисовке первого сектора необходимо сохранить знак минус перед переменной а, придав ей близкое к нулю, но ненулевое значение (иначе –0 это просто 0 и сектор будет рисоваться без одной стороны).
145
Рис. А4.3. Круговая диаграмма по числовым значением в списке
А4.2. Задание для выполнения на компьютере
1.Создать на форме графическое окно и ниже три командные кнопки «График функции», «Гистограмма» и «Диаграмма» для вывода после события Click в графическое окно соответственно графиков функций, гистограмм и диаграмм.
2.Для кнопки «График функции» написать текст процедуры, выводящей в графическое окно график функции, соответствующий варианту из табл. А4 (если функция вычисляется по нескольким формулам, то выбрать одну). Предусмотреть в тексте процедуры предварительную очистку графического окна методом Cls.
3.Для кнопки «Гистограмма» написать текст процедуры, выводящей в графическое окно гистограмму значений элементов массива. Массив взять из табл. 5 в соответствии со своим вариантом.
4.Для кнопки «Диаграмма» написать текст процедуры, выводящей в графическое окно круговую диаграмму значений элементов массива из табл.5 в соответствии со своим вариантом.
5.Задать различные цвета для выводимых в графическое окно графиков, гистограмм и диаграмм.
6.Построить столбчатую гистограмму с непримыкающими друг
кдругу прямоугольниками.
7.Используя функции FillStyle, FillColor, DrawStyle и DrawWidth, задать различные закраски столбиков гистограммы и секторов диаграммы.
146
8. Сохранить разработанное приложение и проверить его работу как отдельной Windows-программы, выйдя из среды VB.
А4.3. Контрольные вопросы
1.Какие графические методы можно использовать для построения графиков функций?
2.Как выбирается масштаб при построении графиков функций?
3.Как вычерчиваются оси координат при построении графика?
4.Как задаются координаты прямоугольников при построении гистограммы?
5.Какой графический метод используется при построении круговых диаграмм?
6.Как определяется длина дуги сектора при построении круговых диаграмм?
7.Как задать закраску для диаграмм и гистограмм?
147
А5. Списки и формы в приложениях Excel А5.1. Общие сведения
VBA, как и VB, предполагает использование стандартных элементов управления, служащих для хранения и обработки одномерных массивов некоторой информации – это два вида списков: простые списки ListBox и комбинированные списки ComboBox (см. раздел А3).
Пример А5.1. Пусть имеется список группы, в котором содержатся сведения об оценках, полученных студентами во время сессии (рис. А5.1). Требуется посчитать средний балл для конкретного студента, выбранного из списка.
Рис. А5.1. Рабочий лист Excel со списком группы
На рабочем листе с помощью панели Элементы управления создана кнопка с надписью «Средний балл». Надпись сделана в свойстве Caption, которое появляется на экране после нажатия кнопки Свойства
на панели Элементы управления.
Для выбора фамилии студента разработана форма, представленная на рис. А5.2. На этой форме с именем UserForm1 создан комбинированный список ComboBox1 с надписью «Раскройте список, выберите фамилию, нажмите кнопку» в элементе управления Label1. Командная кнопка с заголовком «Расчет среднего балла» запускает программу расчета. В поле TextBox1 выводится полученный результат, перед этим полем в метке Label2 сделана надпись «Средний балл».
148