Новый Лист продолжает переписывать старое имя - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь скопировать лист и переименовать его на основе переменной, и это работает.Проблема в том, что он меняет имя шаблона листа в процессе копирования.Есть идеи как это исправить?

Sub AddAgent()

    Dim wsname As String
    Dim lRow As Long

    wsname = ActiveWorkbook.Sheets("Summary").Range("E5").Value

    Set ws = Sheets("Agent Template")

    ws.Copy After:=Sheets("Summary")

    Set wsNew = Sheets(Sheets("Summary").Index + 2)

    wsNew.Range("C4").Value = wsname
    wsNew.Name = wsname

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Насколько я понимаю, функция Copy() автоматически устанавливает новый лист как ActiveSheet.Так что вам не нужно будет искать его по индексу.Вы можете просто получить доступ к свойствам объекта ActiveSheet:

With ThisWorkbook.Worksheets
    .Item("Agent Template").Copy After:=.Item("Summary")
End With

With ThisWorkbook.ActiveSheet
    .Name = ThisWorkbook.Worksheets("Summary").Range("E5").Value2
    .Range("C4").Value = .Name
End With

Если мое понимание верно, то я бы предпочел этот способ, поскольку вы можете потерять контроль над индексированием, если пользователи начнут перемещать листы.

1 голос
/ 27 марта 2019

Вы увеличиваете Index слишком далеко

Set ws = Sheets("Agent Template")

ws.Copy After:=Sheets("Summary")

Set wsNew = Sheets(Sheets("Summary").Index + 1)

Обратите внимание, что вы можете получить непредсказуемые результаты, если какие-либо листы скрыты: Скопировать лист и получить получившийся объект листа?

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