Microsoft Excel

трюкиприёмырешения

VBA и макросы
20.04.2013 5518

Как макросам назначить выполнение команд с ленты управления Excel

В этом приеме рассказывается, как создавать код VBA, имитирующий выбор команд на ленте Excel. Например, вы можете написать макрос, который выполняет команду Главная ► Выравнивание ► Выровнять текст по левому краю.

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

На рис. 211.1, например, можно увидеть, что названием команды Главная ► Выравнивание ► Выровнять текст по левому краю является AlignLeft. При выполнении следующего макроса VBA будет тот же самый эффект, что и при выборе команды Главная ► Выравнивание ► Выровнять текст по левому краю:

1
2
3
Sub ExecuteAlignLeft()
	CommandBars.ExecuteMso "AlignLeft"
End Sub
Рис. 211.1. Использование всплывающих подсказок для определения названий команд

Рис. 211.1. Использование всплывающих подсказок для определения названий команд

Вот еще один пример кода, позволяющего открыть вкладку Шрифт окна Формат ячеек:

1
2
3
Sub ShowFontTab()
	CommandBars.ExecuteMso "FormatCellsFontDialog"
End Sub

Попытка выполнить команду в неправильном контексте порождает ошибку. Например, это выражение выполняет команду, которая открывает диалоговое окно Мастер функций:

1
CommandBars.ExecuteMso "FunctionWizard"

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

1
2
3
4
5
6
7
Sub ShowInsertFunction()
	On Error Resume Next
	CommandBars.ExecuteMso "FunctionWizard"
	If Err.Number <> 0 Then
		MsgBox "Эта команда не подходит.", vbInformation
	End If
End Sub
Top