Програмування форм на vba - vba програмування (office)

Створення VBA програм

Розглянемо створення програм, які взаємодіють безпосередньо з створюваними формами.

Створити форму, в якій при введенні імені в текстове поле після натискання кнопки ОК видається вітальне повідомлення в мітку у вигляді: «Ім'я, привіт! Сьогодні - дата і час запуску програми ».

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

технологія виконання

Будь-яка розробка програми на VBA буде супроводжуватися розробкою форми, яка безпосередньо пов'язана із створюваною програмою. Тому на даному прикладі буде детально розглянуто порядок виконання роботи.

1-й крок. Проектування програми-прикладу

Програма-приклад повинна буде відкривати на екрані нове вікно з показаним в ньому привітанням, а також датою і часом (повідомленням). Вікно залишатиметься на екрані до тих пір, поки користувач не клацне на кнопці ОК.

Маючи докладний опис завдання, можна визначити ті елементи, з яких повинна складатися форма, що взаємодіє з розроблюваної програмою. За умовами прикладу програма має одне призначене для користувача діалогове вікно, тому необхідно створити одну форму (UserForm). Для форми будуть потрібні два елементи управління - напис для повідомлення і кнопка для команди ОК. Потрібно буде також створити програмний код для двох процедур: однієї - для напису, в яку потрібно помістити повідомлення, а інший - для виходу з програми, коли користувач клацне на кнопці ОК.

2-й крок. Реалізація проекту

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

Форма для прикладу в режимі конструктора

Додавання напису в форму

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

  • Переконайтеся, що форма активна, клацнувши по ній. Панель елементів управління видна тільки тоді, коли форма активна.
  • Клацніть на кнопку А (мітка) панелі елементів управління.
  • Помістіть покажчик миші в форму, де необхідно розташувати повідомлення.
  • У вікні властивостей (Properties - ліва нижня панель вікна) виділіть властивість Caption і наберіть рядок «Введіть ім'я», в другій мітці ця властивість має бути порожнім, щоб при запуску програми напис Label2 була невидима.
  • Змініть заголовок самої форми. Для цього клацніть на смузі заголовка вікна форми. У зміненому при цьому вікні властивостей знайдіть властивість Caption і змініть його на «Час». Цей новий заголовок з'явиться в смузі заголовка форми.

Додавання програмного коду

Для нашої програми потрібно створити дві процедури, і вони пов'язані з подіями, що виникають в процесі виконання програми. Перша процедура повинна при натисканні на кнопку Повідомлення відобразити потрібне повідомлення, а друга - завершити виконання програми, коли хто-небудь клацне на кнопці ОК.

  • Клацніть двічі по кнопці OK. У який з'явився при цьому вікні програмного коду з'явиться заготівля процедури. Першим рядком створеного програмного коду буде Private Sub CommandButton2_Click ().

У будь-який VBA процедурі перший рядок програмного коду визначає тип процедури (в даному випадку це процедура типу Sub, тобто підпрограма) і ім'я процедури. Private і Sub відносяться до ключових слів VBA, тобто до слів і символів, які є частиною мови VBA. В даному випадку VBA пропонує для процедури ім'я CommandButton2_Click, яке представляє собою комбінацію імені кнопки і типу події.

Останньою рядком автоматично генерується програмного коду буде End Sub.

Такий рядком повинні закінчуватися всі процедури типу Sub. Цей рядок повідомляє VBA про те, що виконання процедури завершено.

Для виконання першої процедури (закриття форми) необхідно прописати програмний код в цій заготівлі:

Оператор Unload прибирає вказаний об'єкт з пам'яті. Тут це об'єкт з ім'ям Me, які мають в VBA спеціальний сенс. В даному випадку воно означає форму і весь її програмний код.

  • Створіть обробник події для кнопки «Повідомлення», для чого двічі клацніть по створеної кнопці і пропишіть код:

Dim ima As String

Label2.Caption = ima ", Привіт! Сьогодні" Format (Now, «dddddd, hh ч. Mm хв.»)

Друга процедура, яка повинна відображати на екрані повідомлення, трохи складніше першої. Перша з надрукованих рядків

Dim ima As String

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

Другий рядок даної змінної привласнює строкове значення, введене в елемент TextBox1 (текстове вікно може «читати» тільки текстове значення). Третій рядок виводить повідомлення в розташовану на формі мітку Label2, для чого встановлює властивості Caption програмно-строкове значення. Функція Format видає дату і час.

3-й крок. тестування програми

  • Клацніть або у вікні форми, або в вікні програмного коду, щоб відповідне вікно стало активним.
  • Прокомпіліруйте програму: меню + debug + compile project.
  • Запустіть програму на виконання (F5).

Форма прикладу в робочому стані

Це важливо!

Якщо при запуску розробленої форми з'являються повідомлення про занадто великий захисту додатки від макросів, тобто втручання ззовні, необхідно виконати наступні дії:

Попередження про високу захисту додатків

Функція переходу в режим низької безпеки

Розглянемо найпростіші приклади роботи з формами

Використовуючи інструкцію case, створити програму, яка в залежності від введеного значення змінної а виробляє різні обчислення зі змінними b і c. Якщо значення змінної а не збігається з програмними, то видається повідомлення «Введено не те значення».

Всі змінні вводяться в текстові поля форми. При натисканні на кнопку «Результат» відбуваються вибір дії і висновок отриманого значення в спеціальну мітку форми.

технологія виконання

Dim a, b, c, d As Integer

Private Sub CommandButton1_Click ()

Label4.Caption = «Результат: d =» d

Label4.Caption = «Результат: d =» d

Label4.Caption = «Результат: d =» d

Label4.Caption = «Введено не те значення»

Форма прикладу в режимі конструктора

Для того щоб програма працювала коректно, необхідно перевести всі текстові значення, які вводяться в текстові поля, в числові. Для цього прописують в коді перетворення: a = Val (TextBox1.Text) і так далі Після чого програма вже працює з числовими значеннями.

Якщо програма в результаті видає значення одного типу (числове або строкове), то рядок виведення результату можна прописувати після закінчення всього блоку Case. В даному прикладі спочатку виводяться числові значення (d), а потім строкове ( «Введено не те значення»). Тому висновок результату необхідно передбачити в кожній гілці Case.

Результати роботи показані на малюнку.

Деякі результати роботи форми прикладу

Створити програму, яка, використовуючи для користувача діалогове вікно (форму), виконує наступні дії: при введенні трьох змінних в текстові поля вона зчитує дані і порівнює з першої змінної а. Результат видається в мітку на формі.

Форма прикладу в режимі конструктора і в робочому стані

лістинг прикладу

Private Sub CommandButton1_Click ()

Dim a, b, c As Integer

If a> b And a> c Then

Label1.Caption = "Значення а> b і a> c»

Label1.Caption = "Значення а не завжди більше b і с» End If End Sub

Створити програму, яка, використовуючи форму, виконує наступні дії: при введенні змінної в текстове поле вона зчитує дане значення а, після чого організовує цикл for з кроком, рівним 5, де при кожному кроці значення змінної b стає рівним значенню змінної а плюс крок зміни . Підсумкове значення з підсумовує отримане значення b і введене значення а. Результат видається в мітку на формі.

Форма прикладу в режимі конструктора і в робочому стані

лістинг прикладу

Dim a As Variant

Dim b As Integer

Dim c As Integer

Private Sub CommandButton1_Click ()

For i = 1 To 12 Step 5

Label1.Caption = a "+" b "=" c

Створити програму, яка виконує наступні дії: організований цикл for each привласнює змінної b, оголошеної в програмі, останнє значення масиву, також визначеного програмою. Після цього відбуваються обчислення, запропоновані в програмі:

  • в мітку label2 видається результат збільшення отриманої змінної на значення першого елемента масиву;
  • в мітку label3 видається результат збільшення отриманої суми на значення другого елементу масиву;
  • в мітку label4 видається результат збільшення отриманої суми на значення третього елемента масиву;
  • в мітку label6 видається результат збільшення отриманої суми на значення останнього елемента масиву.

Результат видається для наочності в різні мітки на формі.

Форма прикладу в режимі конструктора і в робочому стані

лістинг прикладу

Dim b As Variant

Private Sub CommandButton1_Click ()

Dim d (1 To 4) As Variant

For Each b In d

Label2.Caption = «d (1) =» d (1) «B =» b

Label3.Caption = «d (2) =» d (2) «B =» b

Label4.Caption = «d (3) =» d (3) «B =» b

Label6.Caption = «d (4) =» d (4) «B =» b

Примітка. For Each ... Next не використовує лічильник циклу. Цикли For Each ... Next виконуються стільки разів, скільки є елементів в певній групі, такий як колекція об'єктів або масив. Іншими словами, цикл For Each ... Next виконується один раз для кожного елемента в групі. Внаслідок чого даний цикл використовується в основному в специфічних діях, таких як пошук необхідного листа в колекції об'єктів і так далі, і не використовується при вирішенні простих завдань.

Завдання на закріплення матеріалу

Створити програму, яка, використовуючи дані, лічені з текстових полів форми, після натискання на кнопку виводить повідомлення:

«Здрастуй, введене ім'я, студент групи номер групи спеціальності назва спеціальності!».

де введене ім'я - значення з першого текстового поля;

номер групи - значення з другого текстового поля;

назва спеціальності - значення з третього текстового поля.

Створити програму, яка, використовуючи дані, лічені з текстових полів форми, виконує наступні дії: якщо введений текст однаковий, то видається повідомлення «значення1 збіглося з значеніем2», якщо введений текст неоднаковий, то видається повідомлення «значення1 не співпало з значеніем2», де значення1 і значення2 - введені слова.

Примітка. При розробці програми краще використовувати оператор Like.

Форма прикладу в робочому режимі

Додаткова інформація по темі

Все про програмування форм на PHP - захист, теоретичні основи Download і реальні приклади

Опис способів і методів програмування баз даних, а також додатки необхідні для цього

У статті розкривається основна перевага стилізації коду при програмуванні на Python

Опис того, що ж таке програмування, для чого воно потрібно і які види мов програмування існують

Схожі статті