Я создал книгу, которая генерирует новые листы, где имя нового листа берется из ячейки на первом листе.
Я хочу, чтобы эти новые листы были копией еще одного листа.
Итак, на листе «распоряжение» я пишу имена в диапазоне «a2:a2000». Например. 233.
233 становится новым листом, который является копией листа «шаблон».
У меня нет опыта работы с VBA, поэтому код я финансирую онлайн и модифицирую.
Я пытался изменить Worksheet.add на Worksheet(template).copy
Но это, кажется, не помогает.
Sub CreateSheets()
Dim StartSheet As Worksheet
Set StartSheet = ActiveSheet
Dim rng As Range
Dim cell As Range
On Error GoTo Errorhandling
If MsgBox("Opret ark baseret på løbenumre?", vbYesNo + vbQuestion) = vbNo Then
Exit Sub
End If
Set rng = Range("A2:a2000")
For Each cell In rng
If cell <> "" Then
Worksheets.Add(After:=Worksheets("disposition")).Name = cell
Sheets("Template").Copy Worksheets(cell).Range("A1")
End If
Next cell
Errorhandling:
StartSheet.Activate
End Sub
Вместо того, чтобы добавлять новый рабочий лист, просто скопируйте его напрямую с помощью метода Worksheet.Copy:
If cell <> "" Then
Worksheets("Template").Copy After:=Worksheets("disposition") 'adds a copy of the template sheet after disposition
Worksheets(Worksheets("disposition").Index + 1).Name = cell.value 'renames the new added template copy (which is +1 after disposition sheet)
End If
Чтобы показать код: Sub CreateSheets() Dim StartSheet As Worksheet Set StartSheet = ActiveSheet Dim rng As Range Dim cell As Range On Error GoTo Errorhandling If MsgBox("Opret ark baseret på løbenumre?", vbYesNo + vbQuestion) = vbNo Then Exit Sub End If Set rng = Range("A2:a2000") For Each cell In rng If cell <> "" Then Worksheets("Template").Copy After:=Worksheets("disposition") Worksheets(Worksheets("disposition").Index + 1).Name = cell End If Next cell Errorhandling: StartSheet.Activate End Sub
Спасибо большое, работает почти идеально! Но если я сначала создам два новых листа, а позже обнаружу, что мне нужен дополнительный, и поэтому добавлю имя xtra в индекс и снова запущу vba, он назовет новый лист xtra «template 2». Это можно как-то исправить?