Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Создание формы с элементами Label и TextBox

Поиск

 

Откроем новую рабочую книгу Excel и перейдем в редактор Visual Basic (Alt+F11). Выберем из меню Вставка (Insert) команду UserForm. На экране появится заготовка диалоговой формы. Вызовем панель инструментов ToolBox ( меню View или соответствующая кнопка на панели управления Standart).

 

Поместим в поле формы объект Label (надпись), под надписью поместим текстовое поле (TextBox), а справа добавим две кнопки (CommandButton), взяв все это с панели инструментов ToolBox. Сменим надписи на кнопках на «OK» и «Cancel»,дляэтого выберем в контекстном меню команду Properties и изменим в свойстве Caption имена кнопок на соответствующие. Измените название формы и надпись (рис 5.1).

Нажав на клавишу F5, запустим форму на выполнение.

Так как кнопкам, расположенным на форме, не присвоено никаких процедур, то при щелчке по ним ничего происходить не будет.

Создадим новый модуль, для этого в меню Вставка выберем команду Модуль.

Создадим макрос с помощью команды Insert | Procedure. В открывшемся диалоговом окне укажем: имя макроса DisplayDialog,тип макроса Подпрограмма(Sub), область определения

Общая (Public).

 

Затем в окне редактирования кода модуля запишем код активизации формы:

 

Public Sub DisplayDialog()

UserForm1.Show

If UserForm1.Tag = vbOK Then

 

MsgBox "OK clicked"

Else

MsgBox "Cancel clicked"

 

End If

End Sub

 

 

 
Рисунок 5.1 — Форма с размещенными на ней объектами управления

 


Свойство Tag (англ. ярлык), использованное в макросе, сохраняет дополнительную информацию о каждом элементе управления на UserForm. Синтаксис его применения:

 

объект. Tag [=строка]

 

Строка идентифицирует объект (не обязательное). Создадим процедуры отклика на нажатие кнопок диалоговой формы. В процедурах поместим метод сокрытия формы Hide

 

и установим код завершения выполнения формы в свойстве Tag. Для этого в окошке Project — VBAProject два раза щелкнем по UserForm1. Затем в появившемся окошке UserForm1 два разащелкнем по кнопке OK, тем самым перейдем в окно редактирования кода процедуры отклика кнопки OK на щелчок по ней. В теле процедуры запишем следующее:

 

Private Sub CommandButton1_Click()

'Занести в ячейку А1 значение, набранное в текстовом поле

ActiveSheet.Cells(1, 1).Value = TextBox1.Value

'Скрыть форму

Me.Hide

'Свойству Tag зададим значение vbOK

 

Me.Tag = vbOK

 

End Sub

 

В теле процедуры отклика кнопки Cancel на щелчок по ней запишем следующее:

 

Private Sub CommandButton 2_ Click ()

'Удалить из ячейки А1 значение

ActiveSheet.Cells(1, 1).Value =""

'Скрыть форму

 

Me.Hide

'Свойству Tag зададим значение vbCancel

Me.Tag = vbCancel

End Sub

 

Здесь ключевое слово Me VBA заменяет объект UserForm1, который требуется спрятать (убрать с экрана), но не удалить (метод Hide). Оно обозначает тот объект, в котором находится другой объект, код которого сейчас исполняется (кнопка находится в форме).

 

Затем организуем запуск макроса на выполнение. Сделать это можно разными способами, например создав на листе Excel кнопку как элемент управления и назначить ей макрос DisplayDialog. Теперь при нажатии на кнопку Запуск формы будет запускаться этот макрос (Рисунок 5.2).

 


 

 

 

Рисунок 5.2 — Вызов пользовательской формы

 

Протестируем работу кнопок. Введем в текстовое поле значение «Привет!» и нажмем на кнопку OK. В ячейке А1 появится введенный текст, а на листе — окно с надписью «ОК clicked» (Рисунок 5.3).

 

При нажатии на кнопку Cancel текст в ячейке А1 исчезает и появляется окно с надписью «Cancel clicked».

 

 

Рисунок 5.3 — Тестирование кнопки ОК

 

Примечание. Щелчок по крестику в правом верхнем углуформы приводит к появлению информационного сообщения об ошибке несовпадения типов в строке кода

If UserForm1.Tag = vbOK Then

Если нажатие на крестик считать аналогом работы кнопки Cancel, то имея в виду числовые значения формы, избежать ошибки можно, заменив эту строку на:

If UserForm1.Tag = "1" Then

 


Создание формы с RefEdit

 

Откроем редактор Visual Basic и выберем из меню Вставка команду UserForm. На экране появится заготовка диалоговой формы и панель инструментов ToolBox.

 

В диалоговой форме поместим элементы управления RefEdit (редактирование ссылок)и TextBox (текстовое поле).

Если на панели ToolBox отсутствует кнопка RefEdit, то ее следует вызвать, выполнив команду Tools | Additional Controls |

RefEdit.Ctrl.

Добавим к размещенным элементам управления надписи (Label) «Выбор диапазона ячеек» и «Значение для заполнения» соответственно. Как и в предыдущем пункте создадим две кнопки OK и Cancel (Рисунок 5.4)и назначим им те же процедуры отклика.

 

Рисунок 5.4 — Форма UserForm2 с размещенными

 

на ней элементами управления

 

Создадим новый модуль, для этого в меню Вставка выберем команду Модуль. Создадим макрос с помощью команды Insert/ Procedure. В открывшемся диалоговом окне укажем:имямакроса ShowRefEdit, тип макроса Подпрограмма (Sub), область определения Общая (Public).

 

Затем в окне редактирования кода модуля запишем код активизации формы:


 

Public Sub ShowRefEdit()

 

With UserForm2

.RefEdit1.Text = Selection.Address

Show

 

If.Tag = vbOK Then

Range(.RefEdit1.Text) =.TextBox1.Text

End If

End With

End Sub

 

Первая инструкция передает элементу RefEdit адрес выбранного диапазона на рабочем листе. Затем запускается форма UsesForm2 с помощью метода Show. После того как форма завершит работу, проверяется возвращаемое значение. Если завершение было успешным, то выбранный диапазон заполняется указанным значением, если завершение было неуспешным, то выбранный диапазон не заполняется.

 

Для запуска макроса на выполнение так же, как и в предыдущем задании, создадим кнопку Работа с RefEdit и протестируем работу макроса (Рисунок 5.5).

В поле Выбор диапазона ячеек задаем массив ячеек на листе, а в поле Значение для заполнения вводим какой либо текст. При нажатии на кнопку ОК выделенный массив ячеек (А1:А10) заполнится текстом, при нажатии на кнопку Cancel заполнения происходить не будет.


 

 

Рисунок 5.5 — Тестирование формы UserForm2




Поделиться:


Последнее изменение этой страницы: 2020-11-11; просмотров: 647; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.18.197 (0.008 с.)