Мои Конспекты
Главная | Обратная связь

...

Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Вживання циклу DO-LOOP





Помощь в ✍️ написании работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цей цикл є найбільш універсальним з логічних циклів. Існує 4 конфігурації цього циклу (з передумовою ; постумовою та перевіркою на істину; хибність):

1. Умова TRUE на початку

2. Умова TRUE в кінці

3. Умова FALSE на початку

4. Умова FALSE в кінці

1. DO WHILE умова БЛОК [EXIT DO] БЛОК LOOP 2. DO UNTIL умова БЛОК [EXIT DO] БЛОК LOOP
3. DO БЛОК [EXIT DO] БЛОК LOOP WHILE умова 4. DO БЛОК [EXIT DO] БЛОК LOOP UNTIL умова

Оператор EXIT DO – призначений для передчасного припинення циклу і зазвичай застосовується в структурі IF, яка перевіряє альтернативну умову переривання циклу.

При читанні даних з файлу можна використовувати функцію EOF() для перевірки чергової частини файлу і пошуку маркера кінця.

Приклад: Пошук першого позитивного елементу масиву.

Function Example2(Massive) As Single

DIM J As Integer, Value As Integer

J = LBOUND(Massive) – 1 ‘ визначення нижнього індексу набору Massive

DO ‘ початок циклу

J = J +1 ‘ нарощення індексу

IF J>UBOUND(Massive) Then ‘ порівняння J з верхнім індексом набору Massive

Value = CVErr(xlErrValue) ‘ визначення коду помилки, якщо не ‘знайдеться ні одного позитивного елементу набору Massive

EXIT DO ‘ переривання циклу

END IF

Value = Massive(J) ‘ вибір значення елементу масиву за номером J

LOOP UNTIL Value > 0 ‘ перевірка значення елементу

Example2 = Value

End Function

2.2.Вживання циклів WHILE-WEND

Цикл WHILE-WEND – еквівалентний структурі DO WHILE - LOOP

Синтаксис:

WHILE умова

.

WEND

У структурі WHILE-WEND не застосовується оператор EXIT, що дозволяє переривати цикл до його виконання, а також відсутня можливість записати умову в кінці циклу.

 

Контрольні завдання по темі

1. Теоретичні питання

Тести

3. Практичні завдання


Вбудовані діалогові вікна

Існують різні способи організації введення і виведення даних — от діалогових вікон до дискових файлів.

Visual Basic надає можливість застосовувати діалогові вікна для здобуття даних від користувача і для передачі йому інформації. Окрім власних вбудованих діалогових вікон, Visual Basic може використовувати всі діалогові вікна Excel або Project. Додатково надається можливість використовувати діалогові вікна у творенні користувачем.

1. Вживання функції MsgBox()

Функція MsgBox() забезпечує створення діалогового вікна, подібного до простого вікна повідомлення. Якщо вікно повідомлення всього лише відображує повідомлення для користувача, то діалогове вікно вимагає від користувача і деяких дій з введення даних. Воно відображує рядок тексту, а потім чекає, поки користувач натискуватиме командну кнопку. У простому випадку діалогове вікно містить одну командну кнопку ОК, яку користувач повинен натискувати для підтвердження прийому повідомлення і закриття діалогового вікна. Можна розширити можливості такого вікна, додавши деяку кількість командних кнопок і надавши їм деяке повернене значення, вказуючи, яку командну кнопку натискував користувач.

1.1. Створення простого вікна повідомлення

Для створення простого вікна повідомлення застосовується оператор (зарезервоване слово) MsgBox, за ним слідує текст, який відображуватиме у вигляді повідомлення.

Синтаксис:

MsgBox “Текст”, vbOkOnly, “Заголовок”

де Текст – повідомлення у вікні повідомлення;

vbOkOnly – константа дозволяє відображувати одну кнопку <Ok> у вікні повідомлення, може бути пропущена по замовченню;

Заголовок – (третій аргумент) текст в рядку заголовка вікна повідомлення може бути відсутнім, тоді заголовок при застосуванні у Microsoft Excel, за умовчанням - «Microsoft Excel», інакше використовуйте title:= «текст заголовка».

Наприклад 1:

MsgBox “Позитивне значення не знайдено!”, vbOkOnly, “Результат пошуку ”

або

MsgBox “Позитивне значення не знайдено!”, , “Результат пошуку ”

Якщо у вікні повідомлень потрібно відображати числа, використовуються функції Str() або Format(), що дозволяють перетворити число в символьну форму. MsgBox використовується для відображення результатів обчислення:

Наприклад 2:

MsgBox “Сума: ” & Str(Summa) , vbOkOnly, “Результат ”

або

MsgBox “Сума: ” & Str(Summa) , , “Результат ”

Наприклад 3:

MsgBox “Сума: ” & Format(Summa,”0.00”) , vbOkOnly, “Результат ”

або

MsgBox “Сума: ” & Format(Summa,”0.00”) , , “Результат ”

Функція Str() використовується для перетворення числа (середнього) в символьну виставу. Результат перетворення об'єднується з текстом і відображується MsgBox у вигляді вікна повідомлення.

1.2. Додавання командних кнопок у вікно повідомлення для створення діалогового вікна

У вікно повідомлення можна додати декілька командних кнопок, що дозволить розширити його можливості і перетворити його в діалогове вікно. Можна додати командні кнопки, використавши необов'язкові аргументи функції MsgBox(). Ці додаткові кнопки дозволяють користувачеві вибрати напрям дій або варіант відповіді на просте питання.

Коди цих командних кнопок передаються, як другий аргумент функції (першим аргументом є текст, що відображується в діалоговому вікні), або як пойменований аргумент buttons. Список коду та імені констант, допустимих в Visual Basic, приведений в таблиці 1. Додаткові коди дозволяють задати командну кнопку за умовчанням, вказати піктограму і оголосити діалогове вікно модальним.

Синтаксис:

ім'я_змінної = MsgBox( Prompt, buttons , title)

де Prompt – текст, повідомлення у вікні повідомлення; buttons – константа дозволяє відображати кнопки в діалоговому вікні + задати командну кнопку за умовчанням+ вказати піктограму +оголосити тип діалогового вікна; titleЗаголовок, текст в рядку заголовка вікна діалогу.

Таблиця 1. Коди завдання командних кнопок і піктограм у функції MsgBox()

Код Константа Опис
Коди командних кнопок
vbOKOnly OK
vbOKCancel OK і Cancel
vbAbortRetryIgnore Abort, Retry і Ignore
vbYesNoCancel Yes, No і Cancel
vbYesNo Yes і No
vb Retry Cancel Retry і Cancel
Коди активності за умовчанням  
vbDefaultButton1 Активна перша
vbDefaultButton2 Активна друга
vbDefaultButton3 Активна третя
Коди піктограм  
vbCritical Важливе повідомлення
vbQuestion Попереджувальний запит
vbExclamation Попереджувальне повідомлення
vbІnformation Інформаційне повідомлення
Коди модальності вікна  
vbApplicationModal Програмне модальне
vbSystemModal Системне модальне
       

Аби використовувати коди, приведені в таблиці 1:

1. спочатку виберіть командну кнопку або кнопки, які необхідно відображати. Потім, якщо вибрано більш за одну командну кнопку, слід визначити, яка з них буде активною за умовчанням. Командна кнопка, активна за умовчанням, вважається та, що при натисканні користувачем після відображення діалогового вікна клавіши Enter повинна виконатися. Коди, приведені в частини "Коди активності за умовчанням" таблиці 1 дозволяють вказати, яка з командних кнопок (перша, друга або третя) буде активною за умовчанням. Командні кнопки поміщаються в діалогове вікно в тому ж порядку, в якому вони вказані в частині "Коди командних кнопок" таблиці 1;

2. якщо хочете додати в діалогове вікно піктограму, вкажіть відповідний код з частини "Коди піктограм" таблиці 1;

3. можна вирішити, чи буде діалогове вікно модальним. Якщо діалогове вікно не модальне, то користувач може перемкнутися на інше вікно, продовживши таким чином роботу з програмою без закриття діалогового вікна. Якщо ж діалогове вікно задане як модальне, то користувач повинен закрити його (завершити з ним роботу), перш ніж продовжувати роботу з даною програмою. Існують два типи модальних діалогових вікон — програмні модальні і системні модальні.

Користувач повинен закрити програмне модальне діалогове вікно, перш ніж продовжити роботу з програмою, що відображує це вікно; хоча в цьому випадку дозволяється перемкнутися на іншу програму, не закривши дане діалогове вікно. Системне модальне діалогове вікно вимагає, аби користувач закрив його, перш ніж робити що-небудь ще.

4. і нарешті, складаються всі коди разом (для всіх командних кнопок і опцій), а потім використовуємо цю суму як аргумент функції MsgBox() для створення діалогового вікна.

Приклад. Створимо діалогове вікно, що включає командні кнопки ДА і НЕТ (друга буде активною за умовчанням), включити в діалогове вікно піктограму «Увага» і зробити це вікно програмним модальним, то для створення коду необхідно використовувати наступний набір вбудованих констант:

Code = vbYesNo + vbDefaultButton2 + vbExclamation + vbAppliсationModal

який відповідає 4+ 256 + 48 + 0 = 308

Проте, аби зробити код очевиднішим, слід використовувати пойменовані константи, а не числа.

Можна використовувати, наприклад, будь-який з наступних операторів MsgBox():

MsgBох( prompt:="Bы дійсно хочете це зробити?", buttons:=Code)

або

MsgBох( "Ви, дійсно хочете це зробити?", Code)

1.3. Набуття значень від функції MsgBox()

Діалогове вікно не містить варіантів вибору, не дуже зручно використовувати якщо не визначити, яку командну кнопку натиснув користувач, потрібно використовувати функціональну форму MsgBox() і перевірити повернене функцією значення. Можливі значення, повернені функцією, і відповідні їм константи Visual Basic приведені в таблиці 2.

Таблиця 2. Значення, повернене функцією MsgBox()

Код Константа Командна кнопка
1. vbOK OK
2. vbCancel Cancel
3. vbAbort Abort
4. vbRetry Retry
5. vbIgnore Ignore
6. vbYes Yes
7. vbNo No

Так, щоб використовувати в процедурі діалогове вікно, описане в попередньому попередньому, можна створити наступну процедуру:

Sub Example_Dialog()

Dim Code As Integer, Code_Button AsInteger

Code = vbYesNo + vbDefaultButton2+vbExclamation+vbAppliсationModal

Code_Button = MsgBox(prompt:=”Ви, дійсно хочете це зробити?”, Buttons:=Code)

Select Case Code_Button

Case vbYes

'Блок для відповіді Да (Yes)

Debug.Print «Да»

Case vbNo

'Блок для відповіді Нет (No)

Debug.Print “Нет”

End Select

End Sub

Рисунок 7. Вікно діалогу процедури Example_Dialog1

Ця процедура обчислює код командних кнопок і піктограм діалогового вікна, відображає це діалогове вікно і зберігає повернене значення в змінній Code_Button. Потім застосовується структура Select Case, що вибирає блок коду, яка відповідає поверненому значенню. Запустите цю процедуру, на панелі Immediate, вікна Debug — і вона надрукує «Да» чи «Нет» залежно від того, яку командну кнопку натиснемо для закриття діалогового вікна.

2. Вживання функції InputBox()

Функція InputBox() створює вбудоване діалогове вікно для введення, редагування тексту та містить командніу кнопки ОК і Cancel. Коли ви застосовуєте цю функцію, будь-який текст, записаний в текстове вікно діалогового вікна, буде повернений функцією після того, як користувач натисне командну кнопку ОК. Якщо ж користувач натискуватиме командну кнопку Cancel, то буде повернений порожній рядок ("").

Синтаксис:

змінна= InputBox(prompt[, title] [,] [, xpos] [, ypos] [, helpfile, context])

де аргументи розташовані в квадратних дужках є не обов’язковими, Prompt – текст, коментар для поля вводу; titleЗаголовок, текст в рядку заголовка вікна діалогу; default – текст, що передається зміній по замовченню; xpos та ypos – цілі числа, що надають координати розташування вікна діалогу; helpfile – текс, назва файлу-справки, context – ціле число, індекс файлу-справки.

Значення, повернене функцією є рядком тексту. Якщо ви передбачаєте, що функція поверне число, то ваша процедура повинна використовувати функцію Val() для перетворення в число, поверненого функцією InputBox() (з символьного представлення в двійкову, придатну для використання в програмі):

змінна= Val(InputBox(prompt[, title] [,] [, xpos] [, ypos] [, helpfile, context]))

Інколи користувачі записують в діалогове вікно помилкові дані тому слід, контролювати правильність даних, що вводяться. В даному випадку процедура намагається використовувати значення, повернені з діалогового вікна, тому потрібно контролювати ці значення з точки зору їх обґрунтованості, правильності типа (рядок або число). Чи є значення обґрунтованим, залежить від того, що ви намагаєтеся отримати від користувача, тобто зробити перевірку. Для цього слід застосовувати логічні функції ( що наведені в темі 5, та починаються на IS)

3. Вживання діалогових вікон інших типів

У Visual Basic існують ще два типи вбудованих діалогових вікон: GetOpenFilename і GetSaveAsFilename. Ці вікна не відкривають файл і не зберігають його. Вони лише дозволяють вказати його ім'я і дорогу. Команди, що створюють такі діалогові вікна, є не операторами Visual Basic, а методами об'єкту Application.

Оператори, що створюють ці два типи діалогових вікон, мають наступний синтаксис:

theFilename = Application.GetOpenFilename(файловий_фільтр, індекс_фільтру, заголовок)

theFilename = Application.GetSaveAsfilename(початкове_ім'я_файлу, файловий_фільтр, індекс_фільтру, заголовок)

Обидва методи застосовуються до об'єкту Application і повертають ім'я файлу і шлях до їх розташування, вибрані користувачем. Діалогові вікна, аналогічні цим, відображуються, коли використовуються директиви любого додатку File/Open і File/Save As. У цих діалогових вікнах є командні кнопки Open або Save і Cancel. Якщо користувач натискуватиме командну кнопку Cancel, методи повернуть значення False.

Аргумент файловий_фільтр визначає, які файлові фільтри перераховуються у випадаючому списку File Type діалогового вікна. У списку файлів діалогового вікна з'являються лише ті файли, які збіглися з вибраним файловим фільтром (шаблоном файлу). Кожен елемент списку файлового фільтру складається з двох частин — тексту і фільтру (шаблону файлів). Текст відображується у випадаючому списку File Type, а фільтр використовується для вибору файлів із вибраної папки.

Як приклад розглянемо один елемент списку: Всі файли (*.*), *.*

Текст «Всі файли (*.*)» відображатиметься у випадаючому списку File Type, а *.* є дійсним фільтром, що дозволяє відображати усі файли поточної директорії.

Розглянемо інший приклад файлового фільтру:

файловий_фільтр = "Всі файли (*.*), *.*, Робочі книги Excel (*.xls), *.xls, Документи Word (*.doc), *.doc"

Цей фільтр відображує три елементи у випадаючому списку File Type: "Всі файли (*.*)", "Робочі книги Excel (*.XLS)" і "Документи Word (*.doc)".

Аргумент індекс_фільтру є цілим числом, що задає у випадаючому списку File Type файловий фільтр по умовчанню, який вказує на його номер в списку. Індекс фільтру за наданим вище файловим фільтром може набувати значення 1, 2 або 3, так як в випадаючому списку файлового фільтру три елемента списку.

Наприклад:

індекс_фільтру = 2, то по умовченю в вікні папки будуть відображатися файли за шаблоном - *.xls, що розташований другим у випадаючому списку

індекс_фільтру = 3, то по умовченю в вікні папки будуть відображатися файли за шаблоном - *.doc

індекс_фільтр у= 1, то по умовченю в вікні папки будуть відображатися усі файли за шаблоном - *.*

Аргумент заголовок аналогічний, що для функції InputBox().

Аргумент початкове_ім'я_файлу визначає початкове, задане за умовчанням ім'я файлу, яке розташовують у полі редагування тексту.

Наприклад, пригадайте, при збережені файлу у Excel пропонується ім’я по умовчанню Книга1, Книга2, …., а у Word пропонується ім’я по умовчанню Документ1, Документ2, … .

4. Виклик діалогових вікон додатка

Програми на Visual Basic можуть викликати всі діалогові вікна, що існують в Excel чи інших додатках. Проте ці діалогові вікна діють не так, як описані вище і повертаючі значення програмі на Visual Basic без змін якої-небудь таблиці або клітини. Якщо викликаємо діалогове вікно Excel, то воно не повертає значення програмі на Visual Basic, а здійснює свої нормальні функції.

Наприклад, якщо виконати дії, задані в діалоговому вікні Формат клітин (Format) обкладинка Число (Number), для деяких вибраних елементів таблиці, то ці дії будуть застосовані до цих клітин і не повернуть жодного значення програмі на Visual Basic.

Для виклику діалогового вікна додатка потрібно застосувати набір Dialogs - об'єкту Application.

Application.Dialogs(число-індекс).метод

Набір Dialogs отримує як аргумент число-індекс (константа), що вибирає діалогове вікно, для відображення. Всі індекси відповідають певним константам додатку, що іменують вибране діалогове вікно. Всі ці константи для Excel починаються з xlDialog, потім слідує ім'я діалогового вікна. Наприклад, константою для діалогового вікна Формат клітини обкладинка Число (Format Number) є xlDialogFormatNumber. Для пошуку доступних діало­гових вікон і констант скористайтеся Object Browser, вибравши об'єкт Constants бібліотеки додатку (потрібні константи для Excel починаються з xlDialog).

Наступна процедура відображує діалогове вікно Формат клітини обкладинка Шрифт:

' Перевірка діалогу

' Відображує діалогове вікно Format Font

Sub TestDialog ()

Application.Dialogs(xlDialogFormatFont).Show

End Sub

Аби виконати цю процедуру, запишіть її на сторінці модуля, перемкнетеся на таблицю, виберіть клітину, вкажіть директиву Tools/Macro, виберіть процедуру TestDialog, потім натискуйте командну кнопку Run. В результаті виконання цієї процедури відображатиметься діалогове вікно, приведене на рисунку 8. Якщо ви забудете вибрати елемент таблиці перед запуском процедури, спроба відображення діалогового вікна приведе до помилки.

Рисунок 1. Діалогове вікно Excel відображується за допомогою методу Show

Приклад: Створить програму, що дозволяє вибрати з папки вашої групи ім’я файлу, відобразити запит на збереження його в клітині С5 поточного листа, від форматувати шрифт змінюючи, начертання, колір, розмір шрифту. (Підсумок по темі)

Sub FileName_Format()

‘ опис зміної для отримання імені вибранного файлу

‘ опис зміної для задання файлового фільтру

Dim F_Name As String, F_Filter As String

‘ опис зміної для задання константи, що визначає аргумент Button для функції MsgBox()

‘ опис зміної (константи), що отримує код вибранної кнопки у вікні функції MsgBox()

Dim Code_Button As Integer, Code As Integer

‘ визначення списку файлового фільтру

F_Filter = "Всі файли (*.*), *.*, Робочі книги Excel (*.xls), *.xls, Документи Word (*.doc), *.doc"

‘ отримання імені файлу з вибраної папки у вікні «File name» (рис.9)

F_Name = Application.GetOpenFilename(F_Filter, 2, "File name")

If F_Name = False Then ‘ перевірка на виподок вибору кнопки ОТМЕНА

MsgBox "Вибрано кнопку ОТМЕНА !!!" ‘ вікно повідомлення (рис.10)

Else

‘ визначення константи Button у вікні функції MsgBox()

Code_Button = vbYesNo + vbDefaultButton2 + vbExclamation + vbAppliсationModal

Code = MsgBox("Зберегти знайдене ім'я файлу?", Code_Button) ‘ вікно запиту (рис.11)

Select Case Code ‘ перевірка на значення вибранної командної кнопки у вікні запиту

Case vbYes

'Блок для відповіді Да (Yes)

Range("C5").Value = F_Name ‘ запис вибраного імені файлу в клітину С5

Range("C5").Select ‘ вибір клітини С5

Application.Dialogs(xlDialogFormatFont).Show

‘ виклик вікна для форматування шрифту у вибраній клітині (рис.12)

Case vbNo

'Блок для відповіді Нет (No)

MsgBox "Вибрано файл з іменем " & F_Name

‘ надання вікна повідомлення з текстом назви виброного файлу (рис.13)

End Select

End If

End Sub

Результати роботи програми наведені на рисунках 9-13.

Рисунок 9.

Рисунок 10.   Рисунок 11.

Рисунок 12.

Рисунок 13.

Контрольні завдання по темі

1. Теоретичні питання

Тести

3. Практичні завдання


Створення діалогових вікон користувача

Хорошим інтерфейсом є таблиця, проте для створення призначеного для користувача програмного інтерфейсу в Visual Basic є можливість створення та застосовувати діалогові вікна користувача.

1. Відкриття нової сторінки діалогу

Можливості діалогових вікон, які були розглянуті раніше, до певної міри обмежені. Застосовувалися діалогові вікна для обміну одиничними елементами даних між програмою і користувачем. Часто потрібно передати більш за один елемент даних, особливо в тих випадках, коли програма приймає інформацію від користувача.

Відомо що зручний, зрозумілий інтерфейс для любої задачі є одною зголовних вимог створення програми. Для вирішення проблем такого роду застосовуються сторінки діалогу, що дозволяють створювати діалогові вікна користувача, або Форми VBА. Сторінка діалогу повністю відрізняється від всіх інших сторінок Excel. Вона є середовищем, що дозволяє змалювати діалогове вікно, розмістити в ньому командні кнопки, текст і поля редагування.

Для створення діалогового вікна спочатку відкрийте сторінку діалогу, використовуючи директиву контекстного меню листа Excel Добавить/Окно_диалога або директиву Сервіс ( Макрос/ Редактор VB → Вставка → User Forms. На рис. 1 зображена нова сторінка діалогу Excel.

 
 

Рисунок 1. Нова, чиста сторінка діалогу Excel

Новий, чистий бланк розташований в центрі екрану та піктографічне меню Forms початково розташоване зліва. Кожна піктограма піктографічного меню дає можливість змалювати на бланку різні об'єкти, що дозволяють створити діалогове вікно користувача. Функції кожного елементу піктографічного меню приведені в табл.1.


Таблиця 1. Елементи піктографічного меню Forms

№ п.п Піктограма Засіб Опис
1. Label (Мітка) Створює текстову мітку
2. EditBox (Вікно редагування) Створює текстове вікно з редагованим вмістом
3. GroupBox (Групове вікно) Візуально об'єднує в групу командні кнопки і визначає область для кнопок вибору
4. CreateButton(Командная кнопка) Создает командную кнопку
5. CheckBox (Контрольний індикатор) Створює контрольний індикатор із заголовком
6. OptionButton (Кнопка вибору) Створює кнопку вибору із заголовком для виключаю чого вибору
7. ListBox (Вікно списку) Створює вікно списку
8. Drop-Down (Випадне вікно) Створює випадаюче вікно списку
9. Combination ListEdit (Комбіноване вікно список-редагування) Створює комбіноване вікно список-редагування
10. Combination Drop-Down Edit (Комбіноване вікно випадний список-редагування) Створює комбіноване вікно з випадаючим список-редагування
11. ScrollBar (Лінійка прокрутки) Створює лінійку прокрутки
12. Spinner (Спіннер) Створює спинне (лічильник)
Піктограми запуску і редагування
13. ControlProperties (Властивості об'єкту) Відображує властивості вибраного об'єкту
14. EditCode (Редагування програми) Відображує код підключений до об'єкту
15. ToggleGrid (Перемикач координатної сітки) Включає і вимикає координатну сітку
16. Run Dialog (Запуск діалогу) Запускає діалогове вікно
           

2. Розташування об'єктів форми в бланк (вікно діалогу)

Аби створити діалогове вікно користувача, виберіть в піктографічному меню потрібний вам об'єкт, перемістите його в бланк, потім укладете в прямокутник (клацніть кнопкою миші і розтягніть прямокутник довкола об'єкту). Ви можете переміщати і видозмінювати об'єкт і після того, як помістите його в бланк. Аби перемістити об'єкт, виберіть його і перетягнете за край на потрібне місце. Аби видозмінити об'єкт, виберіть його, а потім скористайтеся маніпулятором редакти­рования. Маніпулятори редагування — це маленькі чорні прямокутники, що з'являються довкола вибраного об'єкту. Приклади всіх об'єктів, які можна підключити до бланка, наведені на рис. 2.

Рисунок 2. Вікно діалогу( бланк) з прикладами об'єктів, які можна в ньому застосовувати

Для побудови програми з використанням елементів форми треба для кожного елементу застосовувать наступний синтаксис:

Sheets("ім’я_листа").елемент("ім’я_ елементу").властивість [список параметрів]

Приклад:

Sheets("D1").Labels("Мітка1").Caption

2.1.Об'єкт "Командна кнопка"

Новий бланк, зображений на рис.1, початково має підключені командні кнопки ОК і Cancel. Для підключення інших командних кнопок, вибераємо піктограму Командная кнопка (CreateButton) піктографічного меню Форми (Forms). Можна змінити назву нової командної кнопки, вибравши її і записавши нову назву. Щоб командна кнопка ініціювала які-небудь дії, її необхідно підключити до процедури, для чого потрібно вибрати командну кнопку, а потім вказати директиву Сервіс/Назначить макрос. У вікні Назначить макрос, що з'явиться, треба вибрати процедуру, яку потрібно підключити до кнопки, або вибиріть командну кнопку Створить для створення заголовка нової процедури. Окрім ініціації підключених до них процедур, командні кнопки діалогового вікна володіють декількома спеціальними властивостями: Default, Cancel, Dismiss і Help, що визначають реакцію на натиснення цих командних кнопок. Властивість:

§ Default вказує на командну кнопку, яка автоматично вважається натиснутою, при виборі на клавіатурі клавіши Enter. Лише одна командна кнопка в бланку може мати встановлену властивість Default;

§ Cancel вказує на командну кнопку, яка автоматично вважається натиснутою, при виборі на клавіатурі клавіши Esc. Властивість Cancel може бути встановлена лише для однієї командної кнопки в бланку.

§ Dismiss діалогове вікно, що містить дану командну кнопку, гаситься після завершення підключеної до неї командної кнопки процедури (діалогове вікно можна також погасити методом Hide).

§ Help перетворює командну кнопку на кнопку допомоги. Користувач може натискувати кнопку допомоги для виклику програми Help.

Для змінити властивості об'єкту бланка, виберіть цей об'єкт, а потім вкажіть директиву Формат/Об'ект і виберіть обкладенку (корінець) Управління. Як альтернативний спосіб можна вибрати піктограму Властивості піктографічного меню Форми. Діалогове вікно, що з'явилося у відповідь на дії, відображатиме, лише ті властивості, які можна змінити в даний момент. Серед безлічі властивостей об'єктів бланка є властивості, що дозволяють змінити зовнішній вигляд об'єкту і його поведінку. Використовуйте інтерактивну підказку для здобуття повного списку властивостей і методів кожного об'єкту.

2.2. Об'єкт "Мітка"

Мітка — це рядок тексту, який не може редагуватися користувачем. Зазвичай мітка використовується для посилки повідомлення користувача або для додаткової інформації про інші елементи, кнопки і вікна бланка. Користувач не може редагувати мітку, проте це може зробити програма.

Для зміни тексту мітки програмним шляхом необхідно застосувати властивість мітки Caption. Синтаксис:

Sheets("ім’я_листа ").Labels("ім’я_елементу").Caption

Так, наступна процедура змінює текст мітки після того, як користувач натисне командну кнопку Button2:

' Button2_Click Macro

Sub Button2_Click()

Sheets("Dialog1").Labels("Label 4").Caption = "Добрий ранок, Країна!"

End Sub

2.3.Об'єкт "Вікно редагування'

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

Синтаксис:

Sheets("ім’я_листа "). EditBoxes ("ім’я_елементу"). Text

' Button3_Click Macro – макрос для командної кнопки 3

Sub Button3_Click()

Dim a as string

a = Sheets("Dialog1").EditBoxes("Ed1").Text

‘передаємо змінній а введене значення вікна редагування

MsgBox a ‘відображення значення змінної а у вікні повідомлення

End Sub

Крім того, вікно редагування володіє властивістю MultiLine. Якщо потрібно, аби в тексті вікна редагування використовувалися перенесення слів на новий рядок, або текст у вікні опускався на один рядок при натисненні клавіші Enter. Для цього цю властивість MultiLine необхідно встановити в True.

Sheets("Dialog1").EditBoxes("Ed1"). MultiLine= True

Вікно редагування володіє і іншими властивостями. Можна переглянути і встановити ці властивості у програмі, або за допомогою директиви Формат/Об'ект.

2.4.Об'єкт "Групове вікно"

Групове вікно візуально об'єднує в групу інші об'єкти бланка. Крім того, воно визначає групу кнопок вибору. Для створення групового вікна виберіть піктограму GroupBox, а потім замалюйте групове вікно на бланку. Групове вікно треба розташувати на бланку до того, як почнете розташовувать елементи (кнопки), які потрібно об'єднати в групу. Для завдання рядка тексту, розташованого у верхньої області кордону вікна, застосовується властивість Caption.

2.5.Об'єкт "Контрольний індикатор"

Контрольний індикатор дозволяє користувачю вибрати одну, або декілька опцій. Одночасно можна використовувати декілька контрольних індикаторів.

Коли контрольний індикатор включений, його властивість Value встановлена в True (1); інакше — в False (0).

Синтаксис:

Sheets("ім’я_листа "). CheckBoxes ("ім’я_елементу"). Value= True

Доступ до властивості Value можна отримати, використавши елемент CheckBoxes(), наприклад:

isChecked = Sheets("D1").CheckBoxes("Check4").Value

If isChecked= True Then

MsgBox “Контрольний індикатор включено!!”

Else

MsgBox “Контрольний індикатор вимкнено!!”

End If

Властивість контрольного індикатора Caption визначає рядок тексту, розташований праворуч від індикатора.

2.6.Об'єкт "Кнопка вибору"

Кнопка вибору дозволяє користувачеві вибрати одну опцію із списку взаємовиключаючих опцій. На відміну від контрольних індикаторів може бути вибрана лише одна з групи кнопок вибору, оскільки вибір однієї кнопки автоматично відключає вибір будь-якої іншої кнопки з цієї групи. Кнопки вибору відомі як "радіокнопки". Група кнопок вибору об'єднує всі кнопки вибору, розташовані в одному груповому вікні, або на всьому бланку (якщо вони не об'єднані груповим вікном). Для створення декількох груп на бланку використовуються групові вікна, об'єднуючі всі кнопки вибору однієї групи. При створенні групи кнопок вибору спочатку розташуйте на бланку групове вікно, а потім в цьому вікні будуємо необхідну кількість кнопок вибору.

Як і для контрольного індикатору, властивість Value кнопки вибору встановлюється, як в True, в результаті натиснення цієї кнопки користувачем. Доступ до цієї властивості забезпечується аналогічно описаному для контрольного індикатора, з тією відмінністю, що замість елементу CheckBoxes() використовується елемент OptionButtons(). Властивість Caption визначає текст, розташований праворуч від кнопки вибору.

Синтаксис:

Sheets("ім’я_листа ").OptionButtons("ім’я_елементу"). Value= True

2.7.Об'єкт "Вікно списку"

Вікно списку надає користувачеві список значень для вибору. Користувач не має можливості редагувати вміст вікна списку і може вибрати лише один елемент із списку. Вживання вікна списку дещо складніше ніж інших елементів, оскільки відсутня проста можливість додавання в список елементів. Додати елементи в список, що відображується у вікні списку, можна лише програмним шляхом.

Існує декілька способів додати елементи у вікно списку. Властивість списку ListFillRange містить посилання на область таблиці, у клітинах якої записані елементи списку. Встановивши цю властивість рівним рядку, що містить посилання на деякі клітини таблиці, помістимо вміст цих клітинок у список. Крім того, властивість ListFillRange можна встановити за допомогою директиви Формат/Об'ект.

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

Sheets("ім’я_листа").ListBoxes ("ім’я_елементу").List = Array("елемент1", " елемент2",…)

Ще одним загальним способом додавання елементів до списку є вживання методу AddItem. Цей метод використовує два аргументи — рядок тексту, що вставляється в список, і індекс, що визначає місце нового елементу в списку. Якщо індекс опущений, новий елемент буде доданий в кінець списку.

Sheets("ім’я_листа "). ListBoxes ("ім’я_елементу"). AddItem "новий_елемент", індекс

Для видалення елементів із списку застосовується метод RemoveItem, що використовує два аргументи — індекс і лічильник. Аргумент індекс визначає номер елементу списку, з якого починається видалення, а лічильник — кількість елементів, що підлягають видаленню. Якщо аргумент лічильник опущений, то за умовчанням він приймається рівним 1. Для видалення всіх елементів списку застосовується метод RemoveAllItems або RemoveItem з індексом, рівним 1, і лічильником, що перевищує кількість елементів списку.

Sheets("ім’я_листа "). ListBoxes ("ім’я_елементу"). RemoveItem індекс, лічильник

Для визначення номера елементу, вибраного із списку користувачем, застосовуються властивості ListIndex або Value вікна списку. Ці властивості містять номер елементу, вибраного із списку. Аби побачити сам елемент, виберіть його з властивості List за допомогою властивості ListIndex:

номер_ елементу= Sheets("ім’я_листа "). ListBoxes ("ім’я_елементу"). ListIndex

Приклади роботи із списком у вікні списку:

Sub prog() 'ініціалізація списку

'визначення списку

Sheets("Діалог1").ListBoxes("q1").List = Array("p-05", "p-04", "p-01")

Sheets("Діалог1").Show

End Sub

Sub add() 'додавання елементу в список

Sheets("Діалог1").ListBoxes("q1").AddItem "p-03", 3

End Sub

Sub del() 'видалення із списку вибраного елементу

Dim а As Integer

'визначення номера вибраного елементу

а = Sheets("Діалог1").ListBoxes("q1").ListIndex

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

Sheets("Діалог1").ListBoxes("q1").RemoveItem а, 1

End Sub

Sub www() 'визначення значення елементу списку

Dim s As Integer, d

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

s = Sheets("Діалог1").ListBoxes("q1").ListIndex

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

d = Sheets("Діалог1").ListBoxes("q1").List(s)

MsgBox d

End Sub

2.8.Об'єкт "Випадаюче вікно"

Випадаюче вікно практично аналогічне вікну списку, за винятком того, що вікно списку розміщує список в прокручуваному вікні, а випадаюче вікно створює випадаючий список. Доступ до випадаючого вікна відрізняється від доступу до вікна списку лише тим, що замість елементу ListBoxes() застосовується елемент DropDowns().

Приклади роботи із списком у вікні випадаючого списку:

Sub prog()'ініціалізація списку

'визначення списку

Sheets("Діалог1"). DropDowns("q2").List = Array("p-05", "p-04", "p-01")

Sheets("Діалог1").Show

End Sub

Sub add() 'додавання елементу в список

Sheets("Діалог1"). DropDowns("q2").AddItem "p-03", 3

End Sub

Sub del() 'видалення із списку вибраного елементу

Dim а As Integer

'визначення номера вибраного елементу

а = Sheets("Діалог1"). DropDowns("q2").ListIndex

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

Sheets("Діалог1"). DropDowns("q2").RemoveItem а, 1

End Sub

2.9.Комбінований об'єкт "Вікно список-редагування"

Комбіноване вікно список-редагування об'єднує вікно списку і вікно редагування. Ці два вікна зв'язуються таким чином, що якщо вибирати елемент у вікні списку, то він автоматично з'явиться у вікні редагування, де цей елемент можна змінити. У комбінованому вікні список-редагування вікно списку і вікно редагування є двома окремими вікнами з різними іменами і окремими властивостями. Доступ до властивостей кожного вікна здійснюється незалежно, за допомогою методів доступу до вікна списку і вікна редагування, описаних вище.

Приклади роботи з об’єктом «Вікно список-редагування»:

Sub prog()

'визначення списку

Sheets("Діалог1").ListBoxes("q4").List = Array("p-05", "p-04", "p-01")

Sheets("Діалог1").Show

End Sub

Sub add()

Dim txt As String

'введення елементу для додавання

txt = Sheets("Діалог1").EditBoxes("q3").text

'додавання елементу в список з поля введення

Sheets("Діалог1").ListBoxes("q4").AddItem txt, 3

End Sub

Sub del()

Dim а As Integer

'визначення номера вибраного елементу

а = Sheets("Діалог1").ListBoxes("q4").ListIndex

'видалення із списку вибраного

Sheets("Діалог1").ListBoxes("q4").RemoveItem а, 1

End Sub

2.10.Комбінований об'єкт "Вікно випадаючий список-редагування"

Комбіноване вікно випадаючий список-редагування є випадаючим списком з елементами, які можна редагувати. Хоча це вікно має ті ж можливості, що і комбіноване вікно список-редагування, воно не є об'єднанням двох окремих об'єктів. Це вікно є випадаючим списком, доступ до якого подібний до доступу інших випадаючих списків, з тією відмінністю, що дане вікно володіє властивістю Text, що дозволяє редагувати вміст елементів.

Якщо вибраний елемент із списку, то властивості списку Value і ListIndex містять індекс вибраного елементу, а конструкція .List(ListIndex) забезпечує доступ до тексту вибраного елементу. Якщо редагуєте елемент, або пишете в частину вікна редагування, то властивості Value і ListIndex дорівнюють 0, а властивість Text містить текст відредагованого елементу.

Приклади роботи з об’єктом «Вікно випадаючий список-редагування»:

Sub prog() 'ініціалізація списку

Sheets("Діалог1").DropDowns("q5").text = Array("p-05", "p-04", "p-01")

Sheets("Діалог1").Show

End Sub

Sub add()

Dim txt As String

txt = Sheets("Діалог1").DropDowns("q5").text

'введення елементу для додавання

Sheets("Діалог1").DropDowns("q5").AddItem txt, 3

'додавання елементу в список з поля введення

End Sub

Sub del()

Dim а As Integer

а = Sheets("Діалог1").DropDowns("q5").Value

'визначення номера вибраного елементу

Sheets("Діалог1").DropDowns("q5").RemoveItem а, 1

'видалення із списку вибраного

End Sub

2.11.Об'єкт "Лінійка прокрутки"

Піктограма Scroll Bar створює на бланку вертикальну або горизонтальну лінійку прокрутки. Лінійка прокрутки може розглядатися як індикатор прокрутки. Її властивість Value містить число, що визначає положення повзунка на лінійці прокрутки. Коли переміщаєте, повзунок лінійки прокрутки (тобто прокручуєте вікно), властивість лінійки Value пропорційно змінюється. Лінійку прокрутки можна також використовувати як індикатор виводу, оскільки при зміні значення властивості Value повзунок лінійки пропорційно переміщається Доступ до лінійок прокрутки можна отримати, використовуючи набір ScrollBars().

Синтаксис:

Sheets("ім’я_листа "). ScrollBars ("ім’я_елементу"). Value

Властивості Min і Мах, керівники діапазоном значень, що повертаються властивістю Value, доступні як з програми, так і за допомогою діалогового вікна Формат/Об'ект. Привласнені цим двом властивостям мінімальна і максимальна величини визначають діапазон значень, які може набувать лінійки прокрутки за властивістю Value. Властивості LargeChange і SmallChange містять величину зміни властивості Value при натисненні на тіло лінійки (прокрутка сторінки) або на кнопку із стрілкою (інкрементна прокрутка). Всі ці властивості зазвичай містять значення у вигляді цілих чисел, які при необхідності можуть бути перетворені в потрібний програмі тип.

Приклад

Sub prog() 'ініціалізація лінійки прокрутки

Sheets("Діалог1"). ScrollBars ("q6").Min = 1

Sheets("Діалог1"). ScrollBars ("q6").Max = 20

Sheets("Діалог1").Show

End Sub

Sub Value_Scroll () 'визначення значення (повзунка) вибраного на лінійці прокрутки

Dim а As Integer

а = Sheets("Діалог1"). ScrollBars ("q6").Value

MsgBox “Значення: ”& а

End Sub

2.12.Об'єкт "Спіннер"

Спіннер діє аналогічно лінійці прокрутки, але індикація положення повзунка у властивості Value і властивість LargeChange відсутні. Наявні властивості Min, Мах і SmallChange ідентичні аналогічним властивостям лінійки прокрутки. Властивість Value спиннера зазвичай пов'язана з властивістю Text вікна редагування, аби користувач міг змінити редаговане число за допомогою натиснення кнопок спиннера. Доступ до спиннерам здійснюється за допомогою набору елементу Spinners().

3. Підключення процедур до об'єктів діалогового вікна користувача

Більшість елементів управління бланка володіють властивістю OnAction. Властивість OnAction містить ім'я процедури, що виконується при зміні даного елементу управління. Процедура, ім'я якої вказане у властивості OnAction командної кнопки, виконується при натисненні на цю командну кнопку. Процедура, підключення, до списку або випадного списку виконується при виборі елементу списку. Процедура, підключена до текстового вікна, виконується, якщо вміст цього вікна був змінений будь-яким способом.

Аби в процесі проектування встановити значення властивості OnAction, виберіть елемент управління, вкажіть директиву Tools/Assign, Macro, а потім приберіть в діалоговому вікні Assign Macro процедуру, що підключається до даного об’єкту управління. Крім того, значення властивості OnAction можна встановити програмним шляхом, привласнивши властивості текстовий рядок, що містить ім'я процедури, яка підключається.

4. Відображення діалогового вікна користувача

Для відображення діалогового вікна користувача існують декілька способів залежних від ваших потреб. Для відображення бланка при активній сторінці діалогу вкажіть директиву Tools/Run/Dialog або виберіть піктограму Run Dialog піктографічного меню Forms. Цей метод застосовується в першу чергу для відладки діалогового вікна і перевірки його функціонування. Для відображення списку діалогових вікон користувача в Project виберіть директиву Tools/Customize/Forms. З цього списку виберіть вікно, яке потрібно відобразити.

Для активізації діалогового вікна користувача з програми на Visual Basic застосовується метод Show. Цей метод має наступний синтаксис:

об'єкт.Show

де об'єкт — сторінка діалогу.

Виконання методу Show аналогічно виклику процедури, причому управління не повертається до оператора, наступного за оператором, який містить метод Show, до тих пір, поки діалогове вікно не буде закрито. Аби закрити діалогове вікно, необхідно встановити в True властивість Dismiss одній з командних кнопок або викликати метод Hide сторінки діалогу. Метод Hide має той же синтаксис, що і метод Show.

Для відображення діалогового вікна користувача в Project застосовується оператор Form або CustomForms. Оператор Form має наступний синтаксис:

Form (имя_диалога)

де имя_диалога — рядок, що містить ім'я діалогового вікна для його відображення. Коли виконується оператор CustomForms без аргументу, то відображується таке ж вікно діалогу, як і при виконанні директиви Tools/Customize/Forms. Воно дозволяє вибрати вікно діалогу для відображенню.


Контрольні завдання по темі

1. Теоретичні питання

Тести

3. Практичні завдання

 

Доверь свою работу ✍️ кандидату наук!
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой



Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.