Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LabVBA-Системный анализ.doc
Скачиваний:
15
Добавлен:
07.02.2016
Размер:
804.35 Кб
Скачать

5.4 Створення інтерфейсу користувача

Задача 5.2 Створити форму для реєстрації абітурієнтів.

Рисунок 5.2 – Приклад роботи форми

Розмістимо на формі список ListBox1, перемикачі OptionButton1 та OptionButton2, текстове поле TextBox1, потрібні написи та дві ко­мандні кнопки CommandButton1 та CommandButton2.

Заповнення списку будемо здійснювати будь-яким з наведених раніше способів. Для перемикача OptionButton1 встановимо значення властивості Value = True, він буде вибраний за замовчанням на формі, а перемикач OptionButton2 прийме значення False.

Для командних кнопок задамо властивості Caption Записати та Відмінити відповідно і створимо програмні коди.

Програмний код для кнопки CommandButton1 (подія Click)

Private Sub CommandButton1_Click( )

кнопка Записати

Dim f As String , fam As String , forma As String

Dim i As Integer

f = ListBox1.Value ‘ факультет

fam = TextBox1.Value ‘ прізвище

If OptionButton1.Value = True Then

forma = "бюджет"

Else

forma = "контракт"

End If

Worksheets("Список") . Activate

Range("A2") . Select

i = 2

Пошук вільного рядка

Do While Cells( i , 1) . Value > ""

i = i + 1

Loop

Запис даних з форми на Лист

Cells(i, 1) . Value = f

Cells(i, 2) . Value = fam

Cells(i, 3) . Value = forma

End Sub

Програмний код для кнопки CommandButton2 (подія Click)

Private Sub CommandButton2_Click()

' кнопка Відмінити

UserForm1 . Hide

End Sub

Рисунок 5.3 – Виведення на Лист Excel

5.5 Контрольні питання

  1. Елемент керування текстове поле, його властивості.

  2. Елемент керування командна кнопка, його властивості і події.

  3. Елементи керування список і список, що розкривається, їхнє призначення, властивості і події, що з ними зв'язані.

  4. Елемент керування перемикач, його властивості і події, що з ним зв'язані. Об'єднання перемикачів у групу.

5.6 Завдання

1) Створіть форми для введення, виведення даних та розв’язування тих трьох задач, що Ви виконували в лабораторній роботі.№1 з VBA. При створенні форм використовуйте елементи керування текстове поле та командна кнопка.

2) Створіть форму для введення нових даних до списку, який Ви створили за індивідуальним завданням у лабораторній роботі №1 з Excel.

Форма повинна викликатися натисканням на кнопку, вбудовану на робочий Лист поруч зі списком, або розміщену на панелі інстру­ментів. У формі повинні використовуватись такі елементи управління: текстові поля, список, що розкривається, перемикачі та командні кнопки. Програма, призначена на кнопку, повинна знаходити перший вільний рядок наприкінці списку на Листі і заносити в нього дані з елементів управління форми. Величини, які розраховувалися на Листі Excel за формулами, повинні бути обчислені в програмі за допомогою функцій і виведені на Лист Excel.

6 Лабораторна робота №6

Тема: Робота з масивами.

Мета роботи: навчитися створювати програми, які використо­вують масиви, вводити масиви та виводити їх на формі.

6.1 Введення та виведення масивів

Масив – це множина послідовних пронумерованих об’єктів од­накового типу, що мають одне і те саме базове ім’я. Кожен окремий об’єкт, що належить до масиву, позначається як змінна з індексом. Для доступу до цієї змінної застосовується її номер (індекс).

Кожен масив, який використовується у програмі, повинен мати свій опис за допомогою оператору Dim. Інколи при об’явленні масиву його розмір невідомий. Тоді треба об’являти динамічний масив без зазначення розміру. Під час виконання програми його розмір зміню­ють за допомогою оператора ReDim, після якого вказується ім’я та реальний розмір масиву. Наприклад,

Dim n As Integer

Dim x( ) As Single , y ( ) As Single

n = InputBox(“Введіть розмірність масиву”)

ReDim x(n) As Single , y (n , n) As Single

Введення, виведення та обробка масивів виконується в циклі, який організується за зміною індексу. Для обробки елементів двови­мірного масиву (матриці) необхідно написати два вкладених цикли, які зміню­ють перший та другий індекси матриці.

Задача 6.1 Ввести з клавіатури двовимірний масив чисел роз­міру N*N та вивести його на формі.

Створимо форму та розмістимо на ній потрібні елементи управ­ління (див. рис. 6.1).

Label 1 ––––→ ←–––– txtN

cmdRun ––––––––→

Label 2 –→

←– CmdExit

txtX –––––––––––––→

Рисунок 6.1 – Форма для виведення елементів масиву

Щоб забезпечити виведення елементів масиву у вигляді прямо­кутної таблиці, для текстового поля txtХ , в якому записуються зна­чення елементів масиву, встановимо на етапі проектування форми властивості

WordWrap = True та MultiLine = True

Надамо елементам управління властивості згідно таблиці 6.1.

Таблиця 6.1 – Значення властивостей елементів управління

Тип елемента управління

Ім’я елемента управління

Назва властивості

Значення властивості

Форма

UserForm1

Caption

Двовимірний масив

Напис

Label 1

Caption

Введіть розмірність масиву Х

Напис

Label 2

Caption

Масив Х

Командна кнопка

CmdRun

Caption

Введіть елементи масиву

Командна кнопка

CmdExit

Caption

Вихід

Текстове поле

txtX

MultiLine

True

WordWrap

True

При написанні коду для виведення елементів масиву у вигляді прямокутної таблиці використовуємо константу Visual Basic – vbCrLf, яка виконує функції комбінації кодів Chr(10) + Chr(13), тобто Кінець рядка та Перехід на новий рядок.

Програмний код для кнопки cmdRun (подія Click)

Private Sub cmdRun_Click()

' Кнопка Введіть елементи масиву

Dim n As Integer

Dim i As Integer, j As Integer

Dim x( ) As Single

txtX .Value = ""

n = CInt(txtN .Value)

ReDim x (n , n) As Single

For i = 1 To n

For j = 1 To n

x( i , j) = InputBox("Введіть x (" & CStr(i) & "," & CStr(j) & ")")

txtX .Value = txtX .Value & CStr(x(i , j)) & " "

Next j

txtX .Value = txtX .Value & vbCrLf

Next i

End Sub

Програмний код для кнопки CmdExit (подія Click)

Private Sub CmdExit_Click()

' Кнопка Вихід

UserForm1 . Hide

End Sub

Результати роботи програми зображені на рис. 6.2.

Рисунок 6.2 – Приклад виведення масиву

Задача 6.2 Переставити рядки двовимірного масиву цілих чисел, що має M рядків та N стовпців з максимальною та мінімальною сумою непарних елементів. Вважати, що ці суми єдині..

Для перевірки парності використаємо функцію mod, яка обчис­лює залишок від ділення двох чисел. Для непарних чисел: x mod 2=1

Позначення:

min – мінімальна сума непарних елементів по рядках,

k_min – номер рядка, який її містить;

max – максимальна сума непарних елементів по рядках,

k_max – номер рядка з цією сумою.

Для обміну значеннями елементів використаємо змінну t. Для підрахунку суми використаємо змінну S. Підрахунок max і min почне­мо зі значень 32000 та –32000, які не можуть дорівнювати результату.

Створимо форму як на рисунку 6.3.

Розмістимо на формі елемент управління напис – LblRez. На етапі проектува­ння встановимо його властивість LblRez.Caption = " " . В програмі напишемо код, який розміщує на його місці інформацію про те, які рядки поміняли місцями.

←–––– txtM

←–––– txtN

cmdRun–––––––→

txtA––––→

LblRez ––––––→

←––––––––––– CmdExit

Рисунок 6.3 – Приклад роботи форми

Програмний код для кнопки cmdRun (подія Click)

Private Sub cmdRun_Click()

' Кнопка Пуск

Dim m As Integer , n As Integer

Dim min As Integer , max As Integer

Dim i As Integer , j As Integer

Dim k_min As Integer , k_max As Integer

Dim t As Integer , s As Integer

Dim a( ) As Integer

txtA .Value = ""

txtRez .Value = ""

m = CInt(txtM .Value)

n = CInt(txtN .Value)

ReDim a(m , n) As Integer

For i = 1 To m

For j = 1 To n

' Введення елементів масиву

a(i, j) = InputBox("Введіть елемент a(" & CStr(i) & "," & CStr(j) & ")")

' Виведення елементів першого масиву

txtA .Value = txtA .Value & CStr(a(i , j)) & " "

Next j

txtA .Value = txtA .Value & vbCrLf

Next i

' Знаходження суми елементів в рядку,

' максимальної та мінімальної суми

min = 32000 : max = –32000

For i = 1 To m

s = 0

For j = 1 To n

If a(i , j) Mod 2 = 1 Then s = s + a(i , j)

Next j

If min > s Then

min = s : k_min = i

End If

If max < s Then

max = s : k_max = i

End If

Next i

For j = 1 To n

t = a(k_min , j)

a(k_min , j) = a(k_max , j)

a(k_max , j) = t

Next

' Виведення елементів перетвореного масиву

For i = 1 To m

For j = 1 To n

txtRez .Value = txtRez .Value & CStr(a(i , j)) & " "

Next j

txtRez .Value = txtRez .Value & vbCrLf

LblRez .Caption = "Міняємо місцями " & Str(k_min) & " та " & _

Str(k_max) & " рядки"

Next i

End Sub

Програмний код для кнопки CmdExit (подія Click)

Private Sub CmdExit_Click()

' Кнопка Вихід

UserForm1 . Hide

End Sub

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