Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Инф_11-12.docx
Скачиваний:
13
Добавлен:
25.12.2018
Размер:
6.65 Mб
Скачать

Пример работы с формой пользователя

Пусть имеется список группы, в котором содержатся сведения об оценках, полученных студентами во время сессии:

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

На рабочем листе с помощью панели Элементы управления создадим кнопку с надписью «Средний балл».

Для выбора фамилии студента создадим форму, на ней комбинированный список ComboBox1, метку с надписью «Раскройте список, выберите фамилию, нажмите кнопку» в элементе управления Label1, командную кнопку с заголовком «Расчет среднего балла», текстовое поле TextBox1, куда будем выводить полученный результат, перед этим полем в метке Label2 сделана надпись «Средний балл».

Для кнопки «Средний балл», которая находится на рабочем листе Лист1, процедура может иметь следующий вид:

Sub CommandButton1_Click()

I=4

Do Until Worksheets(“Лист1”).Cells(I,1)=””

I=I+1

Loop

J=I-1

UserForm1.ComboBox1.RowSource = "Лист1!b4:b” & J

UserForm1.Show

End Sub

Здесь ”” означает пустую ячейку. В переменной J определяется номер последней заполненной строки в таблице. Затем с помощью метода RowSource заполняется комбинированный список ComboBox1 информацией из ячеек b4:bJ. С помощью метода Show форма вызывается на экран.

Процедура для кнопки «Расчет среднего балла»:

Sub CommandButton1_Click()

n = UserForm1.ComboBox1.ListIndex + 1

s = 0

For i = 1 To 4

b = Worksheets("Лист1").Cells(n + 3, i + 2).Value

s = s + b

Next

a = s / 4

UserForm1.TextBox1.Text = a

End Sub

В этой программе определяется номер выбранного элемента списка посредством свойства ListIndex, а затем высчитывается средний балл. Полученный результат помещается в текстовое окно TextBox1 на форме.

Лекция №11 функции пользователя

До сих пор мы рассматривали только процедуры обработки событий. Такие процедуры в языке VBA всегда привязаны как к совершаемому событию, так и к объекту, над которым это событие совершается. Это отражается в том, что имя процедуры, которое в этом случае формируется средой VBA, складывается из имени объекта и названия события.

Однако программный код можно писать и без всякой связи с объектами и событиями, которые совершаются над ними для выполнения процедур.

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

Такие процедуры, не связанные с объектом и событием, называются в VBА еще пользовательскими процедурами или главными процедурами. Их можно использовать неоднократно в программном коде.

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

Можно различить два типа пользовательских процедур:

  1. процедуры типа Function (функция);

  2. процедуры типа Sub (подпрограмма).