Программирование
Веб программирование

VBA формы

 
 

А сейчас, как я и обещал, мы начнем писать 1 программу с использованием User Form. Эта программа будет рассчитана для Word. Чтобы начать писать программу запустим Word (вы должны знать сами как это делать). После того как текстовый редактор откроется, запустим VBA. Есть два варианта запуска: 1 короткий, нажать Alt + F11, 2 длинный (вы его должны знать тоже): «Сервис * Макрос * Редактор Visual Basic». В открывшемся окне нажимаем «Insert * User Form». Должно получиться примерно так:

Все с объяснениями, кажется, я закончил, приступим к созданию самой программы. Меняем свойство Caption формы на: Программа конвертор. На форме располагаем объект Frame с именем Frame 1 и свойством Caption = км/ч в м/с. В этот объект вставляем 2 текстовых поля с именами TextBox1 TextBox2. У TextBox2 свойство Locked = True (чтобы в него нельзя было ввести текст) .Напротив 1 текстового поля ставим метку (Label) со свойством Caption = «км/ч», напротив второго, метку с Caption = «Результат в м/с». Под текстовыми полями ставим кнопку с именем CommandButton1 и Caption = «Вставить результат в документ». У вас должна получится примерно такая форма:

Приступим к созданию текста программы. Совсем забыл сказать: Наша программа будет (как вы уже наверное догадались) переводить км/ч в м/с и вставлять результат в документ Word.

Вычисление результата мы вынесем в отдельную процедуру Scet, которую будем вызывать из события TextBox1_ Change (оно работает при вводе текста в текстовое поле). Результат вычислений будет вставляться в TextBox2. Также, перед решением (в процедуре Scet) мы будем проверять, правильное ли введено значение в TextBox1 (оно должно быть только числовым и не быть меньше нуля), для этого будем использовать функции IsNumeric и Val (их синтаксис и применение смотрите в справке). Если пользователь введет неправильное значение, будет блокироваться кнопка (свойство Enabled = False). В кнопке будем использовать событие Click. При нажатии на нее будем проверять есть ли открытый документ Word, если его нет, то откроем его : If Documents.Count = 0 Then Documents.Add. Дальше мы будем вставлять в документ результаты наших вычислений, да непросто цифры голые вставлять, а целую фразу: Selection.Text = TextBox1.Text & " км/ч = " & TextBox2.Text & " м/с". Теперь надо сделать так, чтобы наша фраза не стирала предыдущий текст (т.е снять с нее выделение). Для этого есть функция Collapse, ее синтаксис: Selection.Collapse Direction:=wdCollapseEnd (подробнее про нее смотрите в справочной системе). Дальше я привожу полный текст программы, надеюсь вы с ней разобрались:

 Private Sub CommandButton1_Click() If Documents.Count = 0 Then Documents.Add Selection.Text = TextBox1.Text & " км/ч  = " & TextBox2.Text & " м/с" Selection.Collapse Direction:=wdCollapseEnd End Sub  Private Sub TextBox1_Change() Scet End Sub  Private Sub Scet() Dim rez As Double If IsNumeric(TextBox1.Text) = True And Not Val(TextBox1.Text) = 0 Then rez = ((TextBox1.Text) * 1000) / 60 / 60 TextBox2.Text = rez CommandButton1.Enabled = True Else TextBox2.Text = "" CommandButton1.Enabled = False End If  End Sub  

Теперь сделаем так, чтобы можно было запускать программу из Word’a. Для удобства переименуем нашу форму в Perevod (свойство Name формы). Потом создадим модуль (Insert*Module) присвоим ему имя Convert (свойство Name модуля) и напишем туда следующий текст:

ConvertCount() Perevod.Show End Sub 

Теперь осталось вытащить нашу программу на одну из панелей Office’a. Для этого нажимаем на Другие кнопки (серый треугольник в конце панели инструментов), в длинном списке кнопок нажимаем на «Настройки». Перед вами откроется окно «Настройка», выберите в нем пункт «Команды». В разделе «Категории» находим и кликаем на «Макросы». С право от «Макросов» находится раздел «Команды», в нем выбираем Normal.Convert.ConvertCount и перетаскиваем на одну из приглядевшихся вам панелей инструментов. Эту кнопку можно отредактировать, вместо названия поставить картинка, как у других кнопок.

На этом знакомство с User Form закончено. Если вам понравилась моя статья или возникли какие - нибуть вопросы ко мне шлите их мне на мыло. Также, я буду рад вашим исходникам написанным на VB6.


Есть вопросы? Спроси на нашем форуме!!
Гость [18.08.2011 00:08]

Ашоту респект ну и немного педру

Валерий [25.03.2012 10:03]

Спасибо за урок!

У меня вопрос. Я создал форму. Вывожу её на экран. Изменяю масштаб экрана до 120%. Всё увеличивается кроме моей формы. Пробовал играться со свойством "zoom" в форме, но это не привело к результату (изменяется содержимое формы, кроме самих её размеров...). Можно ли решить эту проблему? Помогите.

alex13sh [25.03.2012 10:06]

Валерий , а ты размеры формы привяжи к экрану



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.