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

Например, один из способов перемещения между листами — это нажимать Ctrl + Page Up или Ctrl + Page Down. Чтобы отключить эти ключи для конкретной книги, вам необходимо использовать метод OnKey следующим образом:

Private Sub Workbook_Activate()

Application.OnKey "^{PgDn}", ""

Application.OnKey "^{PgUp}", ""

End Sub
Private Sub Workbook_Deactivate()

Application.OnKey "^{PgDn}"

Application.OnKey "^{PgUp}"

End Sub

Эти два макроса следует поместить в объект ThisWorkbook. Первый запускается всякий раз, когда книга активируется, и он отключает Ctrl + Page Up и Ctrl + Page Down, поскольку при их нажатии ничего не запускается. Второй макрос запускается, когда книга деактивирована, и повторно включает ключи.

По-прежнему существует ряд других способов переключения между листами, например, выбор листа вручную, использование «Перейти», использование гиперссылок и т. Д. Самый простой способ предотвратить перемещение между листами — скрыть листы, к которым вы не хотите получать доступ. Защита рабочей книги и защита проекта VB также поможет пользователю «помешать» перемещаться между листами.

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

Если вы хотите, чтобы пользователи могли просматривать скрытые листы позже, вы должны создать процедуру макроса с вашими собственными элементами управления / кнопками для перехода к этим листам. Эта процедура «покажет» лист, который вы собираетесь открывать, и скроет тот, который вы только что оставили.

В зависимости от ваших потребностей вы можете попробовать еще один подход. Вы можете добавить к объекту ThisWorkbook следующий макрос:

Private Sub Workbook_SheetDeactivate(ByVal mySheet As Object)

Application.EnableEvents = False     mySheet.Activate     Application.EnableEvents = True End Sub

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

По сути, он «повторно активирует» оставленный рабочий лист, что означает, что никакой другой рабочий лист не может быть выбран.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11210) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Dishibited_Moving_Between_Worksheets [Отключение перемещения между рабочими листами].