Excel VBA: измените имя каждого листа на значение ячейки A1 на каждом листе

#excel #vba #count #rename #worksheet

#excel #vba #количество #переименовать #рабочий лист

Вопрос:

У меня есть код, который может переименовать активный лист (в данном случае лист 1) в значение в ячейке A1 активного листа. Я хотел бы написать функцию, которая могла бы делать это для каждого листа в книге Excel. Где именем листа 1 будет значение ячейки A1 на листе 1, именем листа 2 будет значение ячейки A1 на листе 2 и так далее.

Это так же просто, как подсчитать количество листов в книге и добавить это в диапазон рабочих листов (1: totalCount)?

 Sub RenameSheet()

Worksheets(1).Select
Range("A1").Select
ActiveSheet.Name = ActiveCell.Value

End Sub
  

Комментарии:

1. Нет, вам нужен цикл.

2. @BigBen Было бы что-то вроде для каждого листа в цикле ActiveWorkbook? Я новичок в VBA

Ответ №1:

Как говорит БигБен, вам нужен цикл для каждого листа. Самый простой способ — использовать коллекцию объектов рабочего листа. Лучше всего проверить, что в ячейке «A1» действительно что-то есть, иначе вы получите сообщение об ошибке. Попробуйте это:

 Option Explicit
Sub RenameSheets()
    Dim ws As Worksheet
    Dim strName As String

    For Each ws In ActiveWorkbook.Worksheets
         strName = ws.Range("A1").Value
         If Len(strName) > 0 Then
             ws.Name = strName
         End If
    Next ws
End Sub
  

Вероятно, вам также следует проверить, что имя еще не использовалось. Excel не понравится, если у вас есть два листа с одинаковым именем. Главный факт Excel: вы не можете назвать рабочий лист «Историей»…