Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Динамическое создание и запуск процедур и функций VBAСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Следующий скрипт демонстрирует возможность динамического создания и запуска процедур и функций VBA с параметрами (в т.ч. с использованием функций Win32 API в среде VBA). Для возможности работы скрипта необходимо установить флажок "Доверять доступ к Visual Basic Project" на вкладке "Надежные издатели" диалога "Безопасность" в соответствующем приложении (Word или Excel) через меню "Сервис" - "Макрос" - "Безопасность...". Также возможно потребуется снять флажок "Require Variable Declaration" на вкладке "Editor" окна "Options" редактора VBA (меню "Tools" - "Options..."), чтобы VBE не пыталась автоматически вставлять инструкцию "Option Explicit". 'Создание объекта Word:'Set objOffice = CreateObject("Word.Application")'objOffice.Documents.Add'Примечание: если в момент запуска этого скрипта Word уже запущен, в момент удаления временного'модуля VBA произойдёт конфликт доступа к Normal.dot. 'Создание объекта Excel:Set objOffice = CreateObject("Excel.Application")objOffice.DisplayAlerts = FalseSet objWorkBook = objOffice.WorkBooks.AddobjWorkBook.Worksheets.Add i = objOffice.VBE.ActiveVBProject.VBComponents.CountobjOffice.VBE.ActiveVBProject.VBComponents.Add 1Set objModule = objOffice.VBE.ActiveVBProject.VBComponents.Item(i + 1)With objModule.CodeModule.InsertLines 1, "Public Declare Function Beep Lib ""kernel32"" _".InsertLines 2, "(ByVal dwFreq As Long, ByVal dwDuration As Long) As Long".InsertLines 3, "Sub TestSub(Caption as String, Text as String)".InsertLines 4, " MsgBox Text, vbOkOnly + vbInformation, Caption".InsertLines 5, "End Sub".InsertLines 6, "Sub TestBeep()".InsertLines 7, " res = Beep(500, 100)".InsertLines 8, " res = Beep(550, 100)".InsertLines 9, " res = Beep(600, 100)".InsertLines 10, " res = Beep(650, 100)".InsertLines 11, " res = Beep(700, 100)".InsertLines 12, " res = Beep(650, 100)".InsertLines 13, " res = Beep(600, 100)".InsertLines 14, " res = Beep(550, 100)".InsertLines 15, " res = Beep(500, 700)".InsertLines 16, "End Sub"End WithobjOffice.Application.Run "TestSub", "Test VBA", "Сейчаc будет произведён вызов Win32 API функции Beep()..."objOffice.Application.Run "TestBeep"'Следующая строка нужна, если используется Word:'objOffice.VBE.ActiveVBProject.VBComponents.Remove objModuleobjOffice.QuitКак видно из приведённого выше скрипта, динамическое создание и запуск процедур и функций VBA возможны как с помощью Excel, так и с помощью Word. Для использования Excel или Word достаточно раскомментировать и закомментировать нужные блоки кода.
98.VBA. Правила запису інструкції If… Then… Else. Багаторядкова структура. If myMessage.Subject = "Hello World!" Then В этом примере показано, как проверяется соответствие поля темы объекта myMessage выражению ╚Hello World!╩. Если соответствие установлено, выполняется печать сообщения, в противном случае оно удаляется. Если вы хотите выполнить некое действие при определенных условиях, и ничего не выполнять, если это условие не соблюдается, то часть выражения ╚Else╩ можно не использовать. Например, если вы хотите распечатать сообщения, имеющее тему ╚Hello World!╩, а с остальными ничего делать не надо, можно использовать следующий код: If myMessage.Subject = "Hello World!" Then Если условие (определенная тема письма) не выполняется, программа пропускает шаг печати и продолжает выполнять оставшуюся часть кода. Многие пользователи используют конструкцию ╚If-Then-Else╩ для создания макросов Outlook, которые могут облегчить вам жизнь.
Багаторядкова структура – це структура з розгалуженням (переважно – ні/так).
99. VBA. Логічні операції. Логические операции
Смысл двух вариантов "and" и "or" в том, что они работают с различными приоритетами.
100-101. VBA. Цикл Do-Loop. Варіанти синтаксису. VBA. Цикл For-Next. Цикл - это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов. В языке Visual Basic существует три основных вида циклов, которые реализуется при помощи конструкций For:Next, Do:Loop и While:Wend. Цикл For:Next. Используется в том случае, когда количество повторов заданного блока операторов известно заранее. Данная конструкция выглядит следующим образом: For счетчик = начальное значение To конечное значение [Step шаг] Операторы1[Exit For] Операторы2Next [счетчик]Когда приведенные операторы выполняются первый раз, то переменной счетчику присваивается начальное значение, после чего возможны два варианта действий. Если в результате проверки условия счетчик > конечное значение было получено значение True, то происходит завершение цикла, при этом блоки операторы1 и операторы2 ни разу не выполняются. С другой стороны, если результатом проверки условия является False, то в этом случае блоки операторов выполняются первый раз, после чего происходит переход на начало цикла. Далее значение переменной-счетчика увеличивается на шаг, расположенный после ключевого слова Step (в случае его отсутствия устанавливается шаг = 1). После этого снова проверяется истинность условия счетчик > конечное значение и т.д., окончание цикла происходит в тот момент, когда результатом данной проверки станет значение True. Зачастую бывает необходимо "аварийно" завершать работу цикла при выполнении какого-либо дополнительного условия. В этом случае внутри цикла следует использовать служебное словосочетание Exit:For, которое обычно располагают в управляющей конструкции, например: If условие Then Exit ForЕсли результатом проверки условия будет значение True, то выполнение цикла будет прекращено, причем блок операторы1 будет выполнен очередной раз, а блок операоры2 - нет. Цикл Do:Loop. Применяется в том случае, когда число повторений операторов тела цикла заранее неизвестно. Существуют четыре разновидности данной конструкции. При использовании первых двух цикл либо выполнится много раз, либо не выполнится вообще. Do Until условие ОператорыLoopЕсли результатом проверки условия является значение False, то блок операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Loop. С другой стороны, если первая проверка условия даст результат True, то цикл не выполнится ни разу. Do While условие ОператорыLoopЕсли условие истинно, то происходит выполнение блока операторы, если же ложно, то есть результатом проверки является False, то цикл не выполниться ни разу. В случае использования последних двух конструкций цикл будет выполнен хотя бы один раз. Do ОператорыLoop Until условиеБлок операторы выполняется до тех пор, пока результатом проверки условия является значение False, иначе выполнение цикла заканчивается. Do ОператорыLoop While условиеВ случае ложности условия выполняется блок операторы, если же оно истинно, т.е. результатом проверки является значение True, то происходит окончание чикла. Цикл While:Wend. Также используется в том случае, когда число повторений операторов тела цикла заранее неизвестно, и имеет следующий синтаксис: While условие ОператорыWendЕсли результатом проверки условия является значение True, то блок операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Wend. С другой стороны, если первая проверка условия даст результат False, то цикл не выполнится ни разу.
|
|||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-17; просмотров: 546; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.228.195 (0.008 с.) |