Макрос Excel ничего не делает? - PullRequest
1 голос
/ 22 июля 2011

Это мой первый макрос Excel (и впервые работающий с VBScript), поэтому он, скорее всего, ошибочен, но я пытаюсь просмотреть каждый лист в своей книге и переименовать лист в значение листов " A2 "значение ячейки. Как следует из названия, функция ничего не делает, когда я ее запускаю. Это работает однако. Вот мой код:

Sub RenameSheets()

   Dim WS_Count As Integer
   Dim I As Integer

   ' Set WS_Count equal to the number of worksheets in the active
   ' workbook.
   WS_Count = ActiveWorkbook.Worksheets.Count

   ' Begin the loop.
   For I = 1 To WS_Count

      ActiveSheet.Name = ActiveSheet.Range("A2").Value

   Next I

End Sub

Ответы [ 2 ]

4 голосов
/ 22 июля 2011
Sub RenameSheets()

Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count

For I = 1 To WS_Count
Dim WS As Worksheet
Set WS = ActiveWorkbook.Worksheets(I)

'Worksheet names can not be null
If Len(WS.Cells(2, 1)) > 0 Then

    WS.Name = WS.Cells(2, 1)

End If

Next I

End Sub
3 голосов
/ 22 июля 2011

Вы не выбираете разные листы, поэтому ActiveSheet не меняется. Вы можете переписать свою функцию ниже, чтобы получить ожидаемый результат:

Dim currentWorksheet as Worksheet
For Each currentWorksheet in ActiveWorkbook.Worksheets
  currentWorksheet.name = currentWorksheet.Range("A2").Value
Next currentWorksheet

выше указано, что цикл for..each будет устанавливать currentWorksheet для каждого рабочего листа во всех рабочих листах в рабочей книге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...