КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Вызов макроса с вычисляемым именем
Типы данных. Набор встроенных типов данных обычный: Integer, Long, String, Byte и т.д. Программист может создавать свои типы данных. Если тип данных состоит только из набора свойств, то следует воспользоваться описателем структур – Type. Пользовательские типы (структуры) можно задавать только на уровне модуля, то есть в общей области модуля (не внутри процедур, не внутри обработчиков событий!). Очевидно, что при описании пользовательского типа память под переменные не выделяется. Для того чтобы создать переменную пользовательского типа следует ее описать с помощью описателя dim в процедуре или с помощью описателя public или private в общей области. Пример: Type rabotnic ID As Integer Name As String * 20 Address As String * 30 Phone As Long HireDate As Date End Type
Sub CreateRecord() Dim r As rabotnic … r.ID = 12003 … End Sub Программист может описывать и объектные типы, то есть классы. Об этом – далее. Для того чтобы вызвать макрос по известному имени, находящийся в одном из модулей проекта достаточно указать имя модуля, а затем (после точки, т.к. модуль тоже считается объектом, а макросы – его методами) имя макроса. Из программы на VBA можно вызвать макрос и по заранее не известному имени (имя вычисляется). Для этого используйте команду RUN выражение, где выражение – строковое выражение, возвращающее имя макроса. Рассмотрим пример. Задача состоит в том, чтобы сформировать запрос следующего вида: «фигура Х-координата1, Y-координата1, …, Размер1, …». Пусть на форме объект ListBox1 содержит названия геометрических фигур. Для выбранной фигуры необходимо ввести от пользователя ее координаты и параметры, характеризующие размер. Но для разных фигур это – совершенно разные наборы параметров. Можно поступить следующим образом: для каждой фигуры создать макрос с именем фигуры. Содержимое макроса – вызов формы с вводом всего необходимого. Тогда при инициализации формы можно некоторым образом составить список фигур: Private Sub UserForm_Initialize() ListBox1.AddItem "круг" ListBox1.AddItem "прямоугольник" End Sub Подготовить формы для ввода данных: UF_circle для параметров круга и UF_rectangle для параметров прямоугольника. В модуле1 приготовить процедуры вызова нужных форм ввода: Public Sub круг() UF_circle.Show End Sub
Public Sub квадрат() UF_rectangle.Show End Sub И устроить вызов этих макросов по щелчку пользователя на элемент списка с именами фигур: Private Sub ListBox1_Click() Application.Run "Module1." & ListBox1.List(ListBox1.ListIndex) End Sub Вызываемому макросу можно передать до 30 параметров (через запятую). Вызвать макрос из другого документа невозможно. Вызов методов объекта при помощи Run невозможен.
Дата добавления: 2014-01-04; Просмотров: 427; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |