Трюк №11. Пользовательские панели инструментов для определенной книги Excel

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

Если вы когда-либо создавали пользовательскую панель инструментов, то, без сомнения, замечали, что она загружается и становится видимой независимо от того, какую книгу вы открыли. А что если пользовательская панель инструментов содержит записанный макрос, предназначенный только для одной специфической рабочей книги? Вероятно, лучше всего было бы привязать специальные пользовательские панели к соответствующим книгам, чтобы исключить беспорядок и неразбериху. Это можно сделать, вставив немного очень простого кода в частный модуль рабочей книги, что такое рабочая книга вы можете узнать на странице http://www.cyberforum.ru/ms-excel/.

Чтобы попасть в частный модуль, правой кнопкой мыши щелкните значок Excel в левом верхнем углу экрана рядом с меню Файл (File), и в контекстном меню выберите пункт Исходный текст (View Code).
[stextbox id=»warning»]Этот путь недоступен на Маc. Чтобы открыть редактор VBE (Visual Basic Editor), нужно нажать сочетание клавиш Option+F11 или выбрать команду Tools → Macro → Visual Basic Editor. Открыв редактор, в окне Projects щелкните, удерживая клавишу Ctrl, или щелкните правой кнопкой мыши пункт This Workbook.[/stextbox]
Затем введите код из листинга 1.18.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Листинг 1.18
Private Sub Workbook_Activate()
	On Error Resume Next
	With Application.CommandBars("MyCustomToolbar")
		.Enabled » True
			.Visible = True
	End With
	On Error GoTo 0
End Sub
 
Private Sub Workbook_Deactivate()
	On Error Resume Next
		Application.CommandBars("MyCustomToolbar").Enabled = False
	On Error GoTo 0
End Sub

Измените текст MyCustomToolbar на имя вашей пользовательской панели инструментов. Чтобы вернуться обратно в окно Excel, закройте окно модуля или нажмите сочетание клавиш Alt/Apple+Q. Если вы откроете или активируете другую книгу, ваша панель инструментов исчезнет и станет недоступной. Снова активируйте соответствующую книгу, и — сюрприз! — панель вернется.

Вы можете даже углубить эту задачу, ограничив пользовательскую панель инструментов только определенным листом в рабочей книге. Правой кнопкой мыши щелкните ярлычок с названием листа, для которого должна быть доступна панель инструментов, и в контекстном меню выберите команду Исходный текст (View Code). Введите код, приведенный в листинге 1.19.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Листинг 1.18
Private Sub Worksheet_Deactivate()
	On Error Resume Next
		Application.CommandBars("MyCustomToolbar").Enabled = False
	On Error GoTo 0
End Sub
 
Private Sub Worksheet_Activate()
	On Error Resume Next
		With Application.CommandBars("MyCustomToolbar")
			.Enabled = True
				.Visible = True
	End With
	On Error GoTo 0
End Sub

Теперь нажмите сочетание клавиш Alt/Apple+Q или закройте окно, чтобы вернуться в Excel.

Первая процедура (Worksheet_Deactivate) будет автоматически запускаться каждый раз, когда вы будете покидать выбранный лист, активируя другой. При этом значение свойства Enable вашей пользовательской панели инструментов меняется на значение False, запрещая ее отображение. Вторая процедура будет запускаться каждый раз, когда вы будете активировать нужный лист, устанавливая значение свойства Enable равным True и отображая пользовательскую панель инструментов.

Строка кода Application.CommandBars("MyCustomToolbar").Visible = True заново выводит вашу панель инструментов, чтобы она стала видна пользователю. Перейдите на другой лист, и панель пропадет; снова активируйте выбранный лист, и панель, как по мановению волшебной палочки, появится.

Top