Как переименовать лист с помощью vba в excel?
Когда вы добавляете новый лист в книгу, у вас есть возможность дать ему имя. Но вы также можете переименовать его в любое время, используя свойство name листа. В этом уроке мы рассмотрим различные способы переименования листа или нескольких листов с помощью кода VBA.
Действия по переименованию листа с помощью кода VBA
- Сначала определите лист, который вы хотите переименовать, с помощью объекта рабочего листа.
- После этого вам нужно использовать (.Name) для доступа к свойству имени, которое вы хотите изменить.
- Затем введите знак равенства, чтобы указать VBA значение, которое вы хотите использовать для переименования листа.
- В конце введите имя листа, который вы хотите использовать.

Полезные ссылки: Запуск макроса – Средство записи макросов – Редактор Visual Basic – Персональный справочник по макросам
Переименовать активный лист
Если вы хотите переименовать активный лист, в этом случае вам не нужно задавать имя листа, вместо этого вам нужно использовать объект ActiveSheet, который сообщает VBA ссылаться на активный лист в этот момент. Вот код.
Activesheet.Name = "mySheet"

Примечание. Чтобы переименовать лист, его не нужно активировать.
Переименование листа по номеру листа
Как известно, каждый лист имеет номер в зависимости от его положения в рабочей книге. Допустим, вы хотите переименовать лист, который у вас есть под пятым номером, код будет такой.
Sheets(5).Name = "mySheet5"

Когда вы запускаете макрос выше , он переименовывает лист, стоящий под пятым номером.

Проверьте, существует ли лист перед переименованием
Если вы попытаетесь переименовать несуществующий лист, VBA покажет вам ошибку, как показано ниже.

Решением этой проблемы является следующий код, использующий FOR EACH , который может перебирать все рабочие листы , чтобы найти определенный вами лист, а затем переименовать этот лист.
Sub check_sheet_rename() Dim ws As Worksheet Dim mySheet As String Dim SheetName As String mySheet = InputBox("enter the name of the sheet that you want to rename.") SheetName = InputBox("Enter new name for the sheet.") For Each ws In ThisWorkbook.Worksheets If mySheet = ws.Name Then ws.Name = SheetName End If Next ws End Sub
Переименуйте лист, используя значение ячейки или диапазона
Вы также можете переименовать лист, взяв значение ячейки. Допустим, значение находится в ячейке A1.
Sheets("Sheet1").name = Range("A1").Value
Но допустим, вы хотите назвать несколько листов на основе значений в диапазоне ячеек. В этом случае у вас должен быть такой код.
Sub vba_sheet_rename_multiple() Dim wsCount As Long Dim rCount As Long Dim ws As Worksheet Dim name As Range Dim i As Long wsCount = ThisWorkbook.Worksheets.Count rCount = Range("A1:A10").Rows.Count 'Checks if the count of the names provided is less _ or more than the sheets in the workbook If wsCount <> rCount Then MsgBox "There's some problem with the names provided." Exit Sub Else 'Check if any of the cells in the name range is empty. For Each name In Range("A1:A10") If IsEmpty(name) = True Then i = i + 1 End If Next name If i > 0 Then MsgBox "There's is a blank cell in the names range." Exit Sub End If End If 'rename each sheet using the value from the range cell by cell. i = 1 For Each ws In ThisWorkbook.Worksheets ws.name = Range("A1:A10").Cells(i, 1).Value i = 1 + i Next ws End Sub
Когда вы запускаете этот код VBA, он сначала проверяет, равны ли ячейки в диапазоне количеству листов в вашей книге. После этого он проверит, все ли ячейки в указанном вами диапазоне имеют значения или нет. И в конце переименуйте все листы, используя эти имена.
Он проверит два условия, используя IF THEN ELSE, а затем переименует все листы.