VBA для чайников - Стив Каммингс 8 стр.


Кнопки на панели инструментов или меню

Если вы никак ничего не можете решить по этому поводу, просто помните, что между кнопкой на панели инструментов и элементом меню больших различий не т - все они реагируют на щелчок мыши. Основное отличие состоит в том. что в меню отображается текст, а на кнопке - картинка. Результат использования обоих элементов будет один и то же.

Приложения Office позволяют использовать приемы drag-and-drop для назначения VBAпрограми-е кнопки на панели инструментов или элемента меню.

В Microsoft Word, Excel, PowerPoint, Access, а также Outlook назначать VBA-программе новую кнопку в панели инструментов очень просто- перетащите с помощью мыши. После того как кнопка займет предназначенное ей место, вы можете создать на этой кнопке еще и подходящий рисунок.

Чтобы в Word создать кнопку для вызова VBA-программы, сделайте следующее.

1. Щелкните правой кнопкой мыши в любой из панелей инструментов.

После этого на экране возникнет контекстное меню.

2. В самом низу этого меню выберите Настройка, чтобы открыть диалоговое окно Настройка с вкладками, в котором будет изначально открыта вкладка Панели инструментов.

Открыть диалоговое окно Настройка можно без выполнения п. 1, выбрав из меню Сервис=Настройка.

3. В диалоговом окне Настройка щелкните на ярлыке вкладки Команды (рис. 4.4).

4. Прокрутите список Категории вниз и найдите пункт Макросы. Щелкните на этом пункте, чтобы выбрать его.

При этом справа, в списке Команды, появятся все имеющиеся в вашем распоряжении VBA -программы. (Диалоговое окно Настройка на рис. 4.4 как раз и показывает макросы.)

5. Найдите необходимый макрос в списке (это может быть и VBA-программа, написанная вами с самого начала).

6. Если вы создаете кнопку, найдите в списке ту программу, которой нужно назначить кнопку. Затем перетащите имя этой программы в подходящую панель инструментов. Если вы создаете команду в меню, найдите в списке ту программу, которой нужно назначить кнопку. Затем перетащите имя этой программы прямо в меню.

Ряс. 4.4. Диалоговое окно Настройка с открытой вкладкой Команды

После того как вы отпустите кнопку мыши, в панели инструментов появится новая кнопка с именем выбранной вами программы на ней.

7. Закройте диалоговое окно Настройка, чтобы завершить работу.

Теперь всякий раз после щелчка на этой новой кнопке вызывается для выполнения ваша VBA-программа. Чудеса!

Создание кнопок в FrontPage и Excel

В FrontPage и Excel вам придется выполнять несколько иные действия для создания кнопок запуска VBA-программ. После записи макроса или написания VBA-программы выполните пп. 1-4 предыдущей инструкции. В результате, вместо списка доступных макросов, вы увидите только два элемента в списке Команды диалогового окна Настройка:

Настраиваемая команда меню и Настраиваемая кнопка (рис. 4.5). Выполните следующее.

Рис. 4.5. Диалоговое окно Настройка в Excel, готовое к созданию новой кнопки или команды меню

1. Перетащите необходимый элемент, Настраиваемая команда меню или Настраиваемая кнопка, на нужное место на панели инструментов или меню.

Когда вы отпустите кнопку мыши, новый элемент появится на панели инструментов или в меню. Если вы создаете кнопку, на ней будет изображена желтая рожица, если вы создаете команду меню, вы увидите только название макроса.

2. Не закрывая диалоговое окно Настройка, щелкните правой кнопкой мыши на новой кнопке меню, чтобы отобразить ее контекстное меню, показанное на рис. 4.6.

Рис. 4. 5. Используйте это меню для назначений VBA-программы кнопке панели задач в Excel или FrontPage

3. Выберите команду Назначить макрос из контекстного меню.

На экране отобразится отдельное диалоговое окно, в котором будут представлены все доступные макросы.

4. Выберите необходимый макрос.

Выбрав макрос, щелкните на кнопке ОК для возвращения к диалоговому окну Настройка, в котором вы сможете выбрать значок для кнопки. Подробности дальше в разделе Выбор или создание подходящего значка для кнопки.

5. Закройте диалоговое окно Настройка.

Access несколько отличается от других приложений Office, когда дело доходит до назначения VBA-программе кнопки на панели задачи или команды меню. Основное отличие состоит в том, что при создании программ для кнопок или команд вы должны использовать процедуры Function, а не процедуры Sub, как в других приложениях Office. В главе 6 вы найдете подробное описание этих двух типов процедур.

После написания процедуры Function, которая должна выполняться после щелчка на кнопке или выбора команды меню, выполните следующее.

1. Начните с выбора команды Сервис=Настройка, после чего перейдите на вкладку Команды (точно так же, как вы это делаете и в других приложениях Office).

Пример диалогового окна Настройка на программы Word был приведен на рис. 4.4.

2. В списке Категории, расположенном в левой части окна, оставьте выбранным вариант Файл.

3. Перетащите первый элемент из списка команд в необходимое место на панели инструментов или в меню (точно так же, как вы это делаете и в других приложениях Office).

4. Перетащив, щелкните правой кнопкой мыши на полученной кнопке или команде, чтобы отобразить контекстное меню.

Подобное контекстное меню было показано раньше на рис. 4.5.

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

Внешний вид этого диалогового окна уникален для Access.

6. В текстовом поле действия укажите имя VBA-прогряммы (процедуры Function).

Вы должны указать перед именем программы знак равенства, а после него - скобки, как показано ниже.

=Имя_функции ()

7. Закройте диалоговое окно свойств.

Вы можете настроить внешний вид кнопки, применив приемы, описанные дальше в разделе Выбор или создание подходящего значка для кнопки.

Другие VBA-прпложения значительно отличаются по способу создания кнопок на панели инструментов. Например, в Visio вам придется написать VBA-код. выполняющий всю необходимые действия; в то же время в CorelDraw вам необходимо выполнить действия, очень похожие нате, которые вы выполняете в Word, PowerPoint и FrontPage.

1. Начните с выбора команды Tools=Options (Сервис=Параметры).

2. Из списка, расположенного в левой части окна, выберите Commands (Команды).

3. Выберите Macros (Макрос) из раскрывающегося списка в средней части диалогового окна.

Теперь вы можете перетащить на панель задач любой из доступных макросов.

Ясно, что супер широкие кнопки с надписями типа

VBAДляЧайников.ГрафическиеПрограммы.СозданиеИзображения

не только выглядят отвратительно, но попросту зря занимают драгоценное место в панели инструментов. К счастью, вы легко можете заменить эту многословную надпись на компактное графическое изображение. Для этого сделайте следующее.

1. Откройте диалоговое окно Настройка и перейдите на вкладку Команды (см. инструкции из раздела Создание кнопок на панели задач в Access, пп. 1-3).

2. Щелкните правой кнопкой мыши на своей новой кнопке в панели инструментов.

Появится весьма многословное контекстное меню.

2. Примерно посередине этого меню есть пункт Выбрать значок для кнопки, выберите его, чтобы открылось графическое меню изображений для кнопок.

Результат выполнения этой процедуры показан на рис. 4.7.

4. Если вас устроит какое-то из предлагаемых изображений, сразу переходите к п. 8, а иначе продолжайте по порядку.

5. Выберите в контекстном меню пункт Изменить значок на кнопке.

Появляющееся при этом окно редактора кнопок- небольшой студии, в которой можно по точкам менять изображение для кнопки, показано на рис. 4.8.

6. Выберите цвет из палитры цветов, а затем щелкните в нужной вам ячейке увеличенного изображения, чтобы закрасить ее выбранным цветом.

Чтобы удалить закрашенную часть изображения и открыть в соответствующем месте изображения поверхность кнопки, перед закрашиванием щелкните в квадратике

Удалить. Щелчок на кнопках Перемещение позволяет сдвинуть изображение в сторону, где еще нет закрашенных ячеек.

Теперь на кнопке есть изображение и можно удалить с нее текст.

7. Снова откройте контекстное меню (см. п. 2).

8. Установите флажок Основной стиль.

Рис. 4.7, При открытом окне Настройка щелчок правой кнопкой в панели инструментов открывает показанное здесь контекстное меню

Лис. 4.8. Используйте предлагаемый Office редактор кнопок для создания своих собственных изображений на кнопках

Как только вы закончите вышеописанную процедуру, в панели инструментов уверенно обоснуется новая симпатичная кнопка, готовая к действию после каждого вашего щелчка на ней.

В Office можно удалить ненужную кнопку, перетащив ее за пределы панелей инструментов. Хитрость здесь заключается в том, что при перетаскивании нужно нажать и удерживать клавиш Alt. Когда рядом с указателем мыши возникнет значок X, отпустите кнопку мыши, и удаление произойдет.

Чувствую я, что ваше VBA-приложение как раз и не позволяет просто перетаскивать нужное при настройке кнопок. Необходимость использовать VBA при создании кнопок в самом начале знакомства с VBA, наверное, выглядит устрашающе. Но на самом деле такой способ создания кнопок не слишком сложен. Главное - выяснить, какими объектами в вашем VBA приложении представляются кнопки и панели инструментов и какие свойства и методы нужно использовать для изменений.

В Office объекты кнопок называются CormandBarButtons, а принадлежат они коллекции CommandBarControls. Объект CommandBar (панель инструментов, содержащая коллекцию CcmmandBarControls) размещается в коллекции ComrnandBars, которое может принадлежать объекту Application или объекту Document.

А в Visio, например, отдельная кнопка представляется объектом ToolbarItem. Однако, чтобы воспользоваться конкретным экземпляром объекта ToolbarItem, необходимо получить доступ к той коллекции ToolbarItems, которой этот экземпляр объекта принадлежит.

Сама же коллекция ToolbarItems принадлежит коллекции Toolbars, в свою очередь принадлежащей коллекции ToolbarSet, а уж последняя принадлежит конкретному экземпляру объекта UlObject (объект пользовательского интерфейса). Немного позже в этой же главе с помощью несложного программного кода я покажу, как все это реализуется практически.

Если все эти сложности вас пугают, успокойтесь: вам не придется создавать программный код для своих кнопок с чистого листа. Поищите в справочной системе своего VBA-приложения разделы, посвященные настройке панелей инструментов, и вы наверняка обнаружите там пример, который после несложных модификаций можно использовать в вашем конкретном случае.

Комбинации клавиш в Word, Excel и Access

Если вы хоть немного умеете печатать, то часто используемые вами команды просто умоляют вас назначить им комбинации клавиш. В большинстве приложений, даже в тех, которые ориентированы исключительно на работу с изображениями, нажать клавиши часто быстрее, чем перемещать туда-сюда мышь и щелкать ее кнопками. Единственный недостаток комбинаций клавиш - необходимость запоминать их.

В любом случае некоторые VBA-приложения - в том числе Word, Excel и Access - дают прямой доступ к клавиатуре, позволяя назначить комбинации клавиш VBA-программам. Если вам предлагают такой способ управления, используйте его, не сомневаясь.

Назначение комбинаций клавиш программам в Word

Если уж зашла речь о настройке клавиатуры, то изо всех VBA-приложений самым гибким и простым в этом отношении является Word. Например, чтобы назначить в Word программе с именем Double Current Font Size комбинацию клавиш Alt+Shift+. (т.е. Alt + Shift + клавиша с точкой), действуйте следующим образом.

1. Откройте диалоговое окно Настройка, для чего либо выберите

Сервис= Настройка из меню, либо щелчком правой кнопкой мыши в любой из панелей инструментов откройте контекстное меню и затем выберите пункт Настройка в нем.

2. Щелкните на кнопке Клавиатура в нижней части вкладки Параметры.

Появится диалоговое окно Настройка клавиатуры (рис. 4.9).

3. В списке Категории выберите Макросы.

4. Найдите и выберите свою программу в появившемся справа списке Макросы.

Если программе уже была назначена комбинация клавиш, она будет в поле Текущие сочетания клавиш.

5. Нажмите комбинацию клавиш, которую вы хотите назначить своей программе.

Если предложенная вами комбинация уже используется, диалоговое окно сообщит, какую из команд она вызывает, и вы сможете либо оставить в силе имеющееся назначение, либо заменить его новым.

Рис. 4.9. С помощью такого диалогового окна вы можете назначить своим VBA-программам комбинации клавиш в Word

6. Щелкните сначала на кнопке Назначить, а затем на кнопке Закрыть, чтобы выйти из диалогового окна.

С этого момента назначенная вами комбинация клавиш будет готова к действию.

Разместите свои программы в контекстных меню

Приложив совсем немного усилий, вы сможете поселить свою скромную VBA-программу в фешенебельных апартаментах любого контекстного (т.е. вызываемого щелчком правой кнопки мыши) меню.

В Office контекстные меню настраиваются в диалоговом окне Настройка. Сначала нужно сделать видимой панель инструментов Контекстные меню. Откройте диалоговое окно Настройка, выбрав

Сервис=Настройка, и в нем перейдите на вкладку Панели инструментов (если она еще не открыта), щелкнув на соответствующем ярлыке в верхней части диалогового окна. Пролистайте вниз список панелей инструментов, найдите в нем пункт Контекстные меню и щелкните в маленьком квадратике около него.

Панель инструментов Контекстные меню станет видимой. С помощью этой панели инструментов вы сможете получить доступ к любому контекстному меню, чтобы настроить его. Открыв таким образом нужное вам контекстное меню, используйте обсуждавшиеся в начале этого раздела приемы перетаскивания макросов из вкладки Команды диалогового окна Настройка.

Например, Visio позволяет поместить макрос в контекстное меню любой из форм. Выделив форму, выберите Window=Show ShapeSheet. В окне ShapeSheet щелкните в ячейке Action. (Если нужно, вставьте перед этим раздел Actions, выбрав Insert=Section и отметив Actions.)

Затем выберите EditoAction. Вы получите возможность впечатать текст и определить другие свойства пункта меню и назначить ему программу для выполнения. По окончании редактирования это контекстное меню, вызываемое щелчком правой кнопки мыши на данной форме, уже будет включать и пункт для вашей VBA- программы.

Excel тоже позволяет назначить VBA-программам комбинации клавиш, но ограничивает допустимые комбинации сочетаниями клавиши Ctrl с печатаемыми символами (буквами, числами и знаками пунктуации). Чтобы назначить программе комбинацию клавиш, выполните следующее.

1. Откройте диалоговое окно Макросы (почему бы для этого не воспользоваться комбинацией клавиш Alt+F8?)

2. Найдите и выделите свою программу в списке.

3. Щелкните на кнопке Параметры.

4. В появившемся диалоговом окне (рис. 4.10) нажмите клавишу, которую хотите скомбинировать с клавишей Ctrl.

Excel при пом различает буквы верхнего и нижнего регистров. (Другими словами, клавиша с буквой, нажатая вместе с клавишей ?Shiff. отличается от клавиши с буквой, нажатой без клавиши Shift.)

5. Щелкните на кнопке ОК, чтобы вернуться в диалоговое окно Макросы*

Рис 4.10. Назначение VBA программе комбинации клавиш в Excel

В приложениях баз данных Access назначать комбинации клавиш совсем несложно. Приложения Access построены на использовании форм и элементов управления в этих формах. Все, что вам потребуется сделать, это создать процедуры обработки событий для этих форм и элементов управления- процедуры, выполняемые при нажатии клавиши пользователем. Проце1уры обработки событии в мельчайших подробностях описываются в главе 10.

Другое дело, если вы работаете с базой данных Access напрямую, используя команды меню и кнопки панелей инструментов. В этом случае для создания комбинаций клавиш, вызывающих VBA-программы, вам придется назначать эти комбинации клавиш специальным макросам Access. (Напомню, что макросы Access не являются процедурами VBA.) В Access нет средства записи макросов, поэтому вам придется строить макросы вручную в соответствии со следующими инструкциями.

1. В окне базы данных выберите кнопку Макросы, а затем щелкните на кнопке Создать.

Появится диалоговое окно Макрос (рис. 4.11).

2. В столбце Макрокоманда выберите Запуск Программы, как показано на рис. 4.11.

3. Выберите Вид=Имена макросов, чтобы в окне появился новый столбец Имя макроса.

4 Напечатайте в столбце Имя макроса комбинацию клавиш, которую вы хотите назначить своей программе.

Используйте символ ́ для обозначения клавшим Ctrl. а символ + - для обозначения Shift. Буквы и числа можно печатать как обычно, а вот функциональные клавиши нужно заключить в фигурные скобки. Например, для комбинации клавиш Ctrb-k нужно напечатать ́ k, а для Shift + F8 • F8 ).

5. Щелкните в текстовом поле Имя функции и напечатайте имя той процедуры VBA, которую должен вызывать макрос.

Это должна быть процедура типа Function.

6. Закройте окно Макрос, щелкнув на кнопке в правом верхнем углу окна. Когда Access попросит дать макросу имя, напечатайте AutoKeys.

Рис. 4. 1 /. Такое окно используется для создания макросов в Access

Макросы для мыши Visio

Visio предлагает совершенно другом способ вызова VBA-программ - это двойной щелчок на форме, которую вы связали со своим программным кодом. Вот инструкции для назначения форме ответа на двойной щелчок кнопкой мыши.

1. Щелкните на форме, чтобы выделить ее.

2. Выберите Format=Behavior.

3. Перейдите на вкладку Double-Click.

4. Выберите VBA-процедуру своей мечты из списка Run Macro.

5. Щелкните на кнопке ОК.

Теперь после двойного щелчка кнопкой мыши на этой форме всегда будет выполняться ваша VBA-программа.

Автоматический запуск VBA-программ

Предположим, что у вас есть VBA-программа, которую вы любите настолько, что хотели бы видеть ее в действии самой первой каждый раз, когда запускаете свое приложение. А если вы любите свою программу так сильно, что и такую, казалось бы, ничтожную задержку, как щелчок на кнопке, наверное, нелегко пережить.

К счастью для вас, многие VBA-приложения предусматривают возможность автоматического выполнения программного кода VBA при запуске и закрытии приложения, при открытии и закрытии документа, а также при наступлении некоторых других событий.

В табл. 4.1-4.3 представлены приемы, которые можно использовать в самых популярных VBA-приложениях для автоматического запуска VBA-программ.

Таблица 4.1. Автоматическое выполнение VBA-программ при запуске приложения с помощью ярлыка

Приложение

Команда, добавляемая в поле

Файл на вкладке Ярлык

Комментарий

Microsoft Word

/mVBA

Вместо VBA напечатайте имя своей VBA программы

Microsoft Access

Назад Дальше