Поддержание активной ячейки (Microsoft Excel)
Книга Excel может содержать любое количество отдельных листов. Когда вы перемещаетесь по различным листам, Excel отслеживает, какая ячейка на каком листе выбрана. Когда вы переключаетесь на новый лист, Excel делает активной ячейку, которая была последней активной на этом листе. Таким образом, если вы в последний раз выбрали ячейку F9 на листе, это та, которая будет выбрана при повторном отображении листа, независимо от того, что было выбрано на предыдущем листе.
Однако для некоторых книг может потребоваться, чтобы Excel сделал активную ячейку на выбранном листе такой же, как активная ячейка на предыдущем листе. В Excel нет настройки для автоматического выполнения этого действия, но вы можете попробовать кое-что. Одно дело — выполнить следующие шаги:
-
Удерживая нажатой клавишу Ctrl, щелкните вкладку рабочего листа, на который хотите перейти. Теперь должны быть выбраны две вкладки рабочего листа; имя, выделенное полужирным шрифтом, фактически отображается на экране.
-
Щелкните вкладку листа, на который хотите перейти. Обе вкладки по-прежнему должны быть выбраны, но название только той, на которую вы нажали, должно быть выделено жирным шрифтом.
-
Удерживая нажатой клавишу 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.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next If sAddress > "" Then Sh.Range(sAddress).Select End Sub
Первый макрос запускается Excel автоматически при каждом изменении выбранной ячейки. Все, что он делает, — это получает адрес любой активной ячейки, а затем сохраняет этот адрес в переменной sAddress.
Второй макрос запускается автоматически при активации книги.
Он проверяет, хранится ли что-нибудь в sAddress. Если есть, он выбирает тот адрес ячейки, который там хранится. Код ошибки необходим, если вы выбираете лист, который не использует ячейки, например лист диаграммы.
Этот макро-подход отлично работает, если вы хотите внести это навигационное изменение только в одну или две книги. Если вы предпочитаете вносить изменения «в масштабе всей системы» (так сказать), вы должны быть немного сложнее в своем подходе к макросу. В этом случае вам необходимо поместить свой код в книгу Personal.xls, чтобы он загружался каждый раз при запуске Excel. В частности, поместите следующий код в новый модуль класса книги Personal.xls. Этот модуль класса следует назвать как-нибудь описательно, например ClassXLApp:
Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook) On Error Resume Next If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object) On Error Resume Next If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) mstrAddress = Selection.Address End Sub
Затем откройте модуль «ThisWorkbook» файла Personal.xls и скопируйте в него следующий код:
Private mobjXLApp As New ClassXLApp Private Sub Workbook_Open() Set mobjXLApp.gobjXLApp = Excel.Application End Sub
После сохранения Personal.xls и перезапуска Excel диапазон в первой открывшейся книге будет выбран на следующем выбранном листе.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3205) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Mainpting_the_Active_Cell [Поддержание активной ячейки]
.