
- •Лабораторный
- •ПрактиКум по информатике.
- •Основы алгоритмизации вычислительных процессов в среде ms excel на основе vba
- •Учебное пособие
- •Ухта 2010
- •Оглавление
- •Введение
- •Лабораторная работа № 1
- •Создание интерфейса пользователя. Основные понятия.
- •Создание интерфейса пользователя
- •2 Основные понятия
- •3 Редактор vba
- •4 Работа с переменными, массивами, константами и со свойствами объектов
- •5 Основные инструкции языка Visual Basic
- •5.1. Окно свойств
- •5.2 Меню Edit
- •5.3 Меню View
- •5.4 Меню Format
- •5.5 Меню Debug
- •6.2 События
- •6.3 Процедуры и методы
- •Лабораторная работа № 3
- •Варианты заданий
- •Задание №1
- •Свойства объектов управления
- •Лабораторная работа № 4
- •Содержание отчета
- •Событийная процедура кнопки «Вычислить».
- •Свойства объектов управления.
- •Лабораторная работа № 5
- •Варианты заданий (таблица 17)
- •Варианты заданий
- •Свойства объектов управления
- •Лабораторная работа № 6
- •Варианты заданий
- •Задача.
- •Лабораторная работа № 7
- •Лабораторная работа №9
- •Пример оформления отчета.
- •Перемещение на строку вниз
- •Перемещение на строку вверх.
- •Функция поиска первой свободной строки в таблице
- •Поиск информации
- •Варианты заданий
- •Библиографический список
- •Лабораторный практиКум по информатике Основы алгоритмизации
- •169300, Г. Ухта, ул. Первомайская, 13.
- •169300, Г. Ухта, ул. Октябрьская, 13.
Перемещение на строку вниз
Private Sub SpinButton1_SpinDown()
i = ActiveCell.Row + 1
If Worksheets(1).Rows(i).Cells(1).Value <> "" Then
Worksheets(1).Rows(ActiveCell.Row + 1).Select
UserForm1.TextBox1.Text = Worksheets(1).Rows(i).Cells(1).Value
UserForm1.TextBox2.Text = Worksheets(1).Rows(i).Cells(2).Value
UserForm1.TextBox3.Text = Worksheets(1).Rows(i).Cells(3).Value
UserForm1.TextBox4.Text = Worksheets(1).Rows(i).Cells(4).Value
UserForm1.TextBox5.Text = Worksheets(1).Rows(i).Cells(5).Value
UserForm1.TextBox6.Text = Worksheets(1).Rows(i).Cells(6).Value
End If
End Sub
Перемещение на строку вверх.
'Перемещение на строку вверх.
Private Sub SpinButton1_SpinUp()
i = ActiveCell.Row - 1
If i > 2 Then
Worksheets(1).Rows(ActiveCell.Row - 1).Select
UserForm1.TextBox1.Text = Worksheets(1).Rows(i).Cells(1).Value
UserForm1.TextBox2.Text = Worksheets(1).Rows(i).Cells(2).Value
UserForm1.TextBox3.Text = Worksheets(1).Rows(i).Cells(3).Value
UserForm1.TextBox4.Text = Worksheets(1).Rows(i).Cells(4).Value
UserForm1.TextBox5.Text = Worksheets(1).Rows(i).Cells(5).Value
UserForm1.TextBox6.Text = Worksheets(1).Rows(i).Cells(6).Value
End If
End Sub
Функция поиска первой свободной строки в таблице
Public Function EndFind()
Dim i As Byte
i = 2
While Worksheets(1).Rows(i).Cells(2).Formula > ""
I = i + 1
Wend
EndFind = i
End Function
Поиск информации
Чтобы осуществить поиск № поезда по заданному № поезда или станции назначения, нужно нажать кнопку Поиск. На экран выводится форма UserForm2 с заголовком Поиск.
Событийная процедура кнопки Поиск.
Private Sub CommandButton2_Click()
Load UserForm2 ‘Загрузить форму UserForm2
UserForm2.Show ‘Показать форму UserForm2
End Sub
Форма UserForm2
На диалоговой форме UserForm2 разместить: страницы Page1, Page2. На странице Page1 надпись Label1 с заголовком Введите № поезда, поле TextBox1, кнопку CommandButton1 с заголовком Найти. На странице Page2 надпись Label2 с заголовком Введите станцию назначения, поле TextBox2, кнопку CommandButton2 с заголовком Найти.
Выбрать страницу № поезда (Станцию назначения), ввести код (Станцию назначения) и нажать кнопку Найти. Если номер позда с таким № поезда найден, то соответствующая строка выделяется. В противном случае выводится сообщение “Не найдено”.
Поиск информации по № поезда.
Событийная процедура кнопки Найти.
Private Sub CommandButton1_Click()
Dim j As Integer
Dim finder As String
On Error GoTo label
i = 2
finder = UserForm2.TextBox1.Text
'Поиск строки с заданным номером поезда
While finder <> Worksheets(1).Rows(i).Cells(1).Formula
i = i + 1
Wend
'Выделение строки
Worksheets(1).Rows(i).Select
UserForm2.Hide 'Скрыть форму UserForm2
Exit Sub
label:
MsgBox "Не найдено"
End Sub
Поиск информации по станции назначения.
Private Sub CommandButton2_Click()
Dim j As Integer
Dim finder As String
On Error GoTo label
i = 2
finder = UCase(UserForm2.TextBox2.Text)
'Поиск строки с заданной станцией назначения
While finder <> UCase(Worksheets(1).Rows(i).Cells(3).Formula)
i = i + 1
Wend
'Выделение строки
Worksheets(1).Rows(i).Select
UserForm2.Hide
Exit Sub
label:
MsgBox "Не найдено"
End Sub
Задания для самостоятельной работы
VBA позволяет создавать три типа процедур Sub, Function и Property. При запуске процедуры Sub выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub.
Function (функция) также решает определенную задачу. Различие заключается в том, что функция возвращает единственное значение, поэтому обычно используется для выполнения вычислений.
Property используется для ссылки на свойство объекта. Применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры Sub подразделяются на процедуры, связанные с элементами управления (событийные) и процедуры общего назначения.
Пример выполнения работы.
Даны матрицы:
.
Найти максимальный элемент в каждой матрице. Использовать подпрограмму.
Блок– схема процедуры
Блок-схемы основной программы.
Рисунок 17– Результат работы приложения
Событийная процедура кнопки Вычислить.
Dim c(1 To 6, 1 To 6) As Single
Function maxum(k, L, n, m)
max = -10000
For i = 1 To n
For j = 1 To m
c(i, j) = Cells(i + k, j + L)
If c(i, j) > max Then max = c(i, j)
Next j
Next i
maxum = max
End Function.
Private Sub CommandButton1_Click()
Dim c(1 To 6, 1 To 6) As Single
Dim b(1 To 6, 1 To 6) As Single
Dim i, j, k, L, m, n As Byte
For i = 1 To 3
For j = 1 To 4
c(i, j) = Cells(i + 1, j)
Next j
Next i
n = 3
m = 4
k = 1
L = 0
maxa = maxum(k, L, n, m)
TextBox1.Text = Format(maxa, "0.00")
k = 6
L = 2
maxb = maxum(k, L, 5, 2)
TextBox2.Text = Format(maxb, "0.00")
End Sub.