Я пытаюсь создать электронную таблицу для отслеживания данных проекта, с листом для каждого проекта и обзорным листом, который предоставляет сводную информацию. Я построил лист на основе типового набора проектов, и все это, похоже, работает так, как я ожидал. Однако добавление нового проекта требует большой заботы и кормления, поэтому я решил дать пользователю кнопку для клика, диалог, чтобы спросить название проекта, и пусть сценарий сделает все остальное.Дублирующие листы в Excel
Я создал лист шаблона (удобно под названием «Шаблон»), и я попытался выполнить дублирование этого листа в конце книги с использованием метода Worksheets("Name").Copy
, как предложено в MSDN. Эта попытка отражена в первых нескольких строках кода ниже. После этого я беру строку шаблона и добавляю ее в конец списка на обзорном листе (под названием «Панель мониторинга»).
Что происходит (насколько я могу судить, что лист не копируется, последний лист в книге выбирается, а ActiveSheet.Name = Name
заканчивает переименование его, взорвав листок панели инструментов, который использует INDIRECT
, чтобы находить и представлять данные.
Вот код, который я в настоящее время (неэффективное как есть):
Sub AddSOW()
' Duplicate the template sheet
Dim Name As String
Name = InputBox("SOW Name")
Worksheets("Template").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Name
Sheets("Dashboard").Select
' Find the last row of data
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
' Loop through each row
For x = 2 To FinalRow
' Decide if to copy based on column A
ThisValue = Cells(x, 1).Value
If ThisValue = "Template" Then
Cells(x, 1).Resize(1, 50).Copy
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
ActiveCell.Value = Name
End If
Next x
End Sub
ошибок не вышвырнут, это просто не работает. Переход через не помогает.
Во-первых, «Имя», вероятно, является защищенным словом, поэтому переименуйте переменную в нечто вроде «SName». Во-вторых, поскольку вы копируете лист шаблона до конца, попробуйте заменить 'ActiveSheet.Name = SName' на' Sheets (Sheets.Count) .Name = SName' – Chrismas007
Использование 'Sheets (Sheets.Count) .Name = SName' выбрасывает error: 'Runtime error '1004': Определенная пользователем или объектная ошибка' –