Поддержание активной ячейки

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

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

  1. Удерживая нажатой клавишу Ctrl , вы нажимаете на вкладку рабочего листа, на который хотите перейти. . Теперь должны быть выбраны две вкладки рабочего листа; имя, выделенное полужирным шрифтом, фактически отображается на экране.
  2. Щелкните вкладку рабочего листа, на который нужно перейти. Обе вкладки по-прежнему должны быть выбраны, но название только той, на которой вы щелкнули, должно быть выделено жирным шрифтом.
  3. Удерживайте нажатой клавишу Ctrl при нажатии на вкладку листа, который вы только что оставили.

Эти шаги работают, потому что вы «группируете» листы. Когда вы это сделаете, Excel сделает выбранные ячейки одинаковыми для всех листов в группе.

Не забывая использовать Ctrl -клик-щелчок – Ctrl может быть в лучшем случае громоздкой. Это также последовательность, которая может быть чревата опасностью, потому что, если вы забудете выполнить шаг 3, вы можете в конечном итоге внести непреднамеренные изменения в свои рабочие листы. (Пока вы работаете с сгруппированными листами, любое изменение, которое вы вносите на одном листе, аналогичным образом изменяется на всех листах в группе.)

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

Public sAddress As String

Эта переменная sAddress , будет использоваться для хранения текущего адреса активной ячейки. В модуле «ThisWorkbook» книги добавьте эти два макроса:

Private Sub Workbook_SheetSelectionChange (ByVal Sh As Object, _ ByVal Target As Excel.Range) sAddress = ActiveCell.AddressEnd Sub Private Sub Workbook_SheetActivate (ByVal Sh As Object) При ошибке Возобновить Далее Если sAddress> «» Тогда Sh.Range (sAddress) .SelectEnd Sub

Первый макрос запускается автоматически Excel в любое время, когда выбранная ячейка изменяется. Все, что он делает, – это извлекает адрес любой активной ячейки, а затем сохраняет этот адрес в переменной sAddress.

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

Этот подход с макросами отлично работает, если вы хотите внести это навигационное изменение только за один рабочая тетрадь или две. Если вы предпочитаете вносить изменения «в масштабе всей системы» (так сказать), вы должны быть немного сложнее в своем подходе к макросу. В этом случае вам необходимо поместить свой код в книгу Personal.xls, чтобы он загружался при каждом запуске Excel. В частности, поместите следующий код в новый модуль класса книги Personal.xls. Этот модуль класса следует назвать как-нибудь описательно, например ClassXLApp:

Public WithEvents gobjXLApp As Excel.ApplicationPrivate mstrAddress As StringPrivate Sub gobjXLApp_WorkbookActivate (ByVal Wb As Excel.Workbook) On Error Resume Next If mstrAddress> » «Then ActiveSheet.Range (mstrAddress) .SelectEnd SubPrivate Sub gobjXLApp_SheetActivate (ByVal Sh As Object) On Error Resume Next If mstrAddress>» «Затем Sh.Range (mstrAddress) .SelectEnd SubPrivate Sub gobjXLApp_Sheet ByValChange Object ByValChange Object ByValChange Excel.Range) mstrAddress = Selection.AddressEnd Sub

Затем откройте модуль «ThisWorkbook» файла Personal.xls и скопируйте в него следующий код:

Private mobjXLApp Как New ClassXLAppPrivate Sub Workbook_Open () Установите mobjXLApp.gobjXLApp = Excel.ApplicationEnd Sub

После сохранения Personal.xls и перезапуска Excel диапазон в первой открывшейся книге будет выбран на следующем листе который выбран.

Источник: frestage.ru

Бытовой вопрос