Вы, наверное, уже знаете, что можно изменить имя вкладки рабочего листа, дважды щелкнув вкладку и указав новое имя. Но что, если вы хотите делать это динамически? Что делать, если вы хотите, чтобы значение в ячейке A1 автоматически отображалось как имя вкладки?

К сожалению, в Excel нет встроенной функции для решения такого рода задач. Разработать такую ​​функцию с помощью макроса, который сделает всю работу за вас, — относительно простая задача. Например, следующий макрос изменит имя вкладки на содержимое A1:

Sub myTabName()

ActiveSheet.Name = ActiveSheet.Range("A1")

End Sub

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

Во-вторых, макрос нужно запускать вручную.

Что, если вам нужен более надежный макрос, который проверяет наличие ошибок и запускается автоматически? Результат немного длиннее, но все же не слишком сложен:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Set Target = Range("A1")

If Target = "" Then Exit Sub     On Error GoTo Badname     ActiveSheet.Name = Left(Target, 31)

Exit Sub Badname:

MsgBox "Please revise the entry in A1." & Chr(13) _     & "It appears to contain one or more " & Chr(13) _     & "illegal characters." & Chr(13)

Range("A1").Activate End Sub

Чтобы настроить этот макрос, выполните следующие действия:

  1. Откройте новую книгу, в которой есть только один лист.

  2. Щелкните правой кнопкой мыши вкладку рабочего листа и выберите Просмотреть код в появившемся контекстном меню. Excel отобразит редактор VBA.

  3. Вставьте (или введите) указанный выше макрос в окно кода.

  4. Закройте редактор VBA.

  5. Найдите папку XLStart в вашей системе. (Используйте возможности поиска Windows, чтобы найти папку.)

  6. Сохраните книгу как шаблон Excel с поддержкой макросов, используя имя Book.xltm в каталоге XLStart. Это заставляет шаблон стать вашим шаблоном для любой новой книги, которую вы создаете.

  7. Снова сохраните книгу как шаблон с поддержкой макросов в том же каталоге, на этот раз с именем Sheet.xltm. Это приводит к тому, что шаблон становится шаблоном для любых новых листов, которые вы вставляете в книгу.

  8. Закройте и перезапустите Excel.

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

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

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Set Target = Range("A1")

If Target = "" Then Exit Sub     On Error GoTo Badname     ActiveSheet.Name = Format(Target, "mmm-dd-yy")

Exit Sub Badname:

MsgBox "Please revise the entry in A1." & Chr(13) _     & "It appears to contain one or more " & Chr(13) _     & "illegal characters." & Chr(13)

Range("A1").Activate End Sub

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

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

Этот совет (7993) применим к Microsoft Excel 2007, 2010, 2013 и 2016.

Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Dynamic_Worksheet_Tab_Names [имена вкладок динамического рабочего листа].