Я пишу макрос в VBA для Excel. Я хочу, чтобы он заменил все листы, за исключением нескольких. Сначала есть цикл, который удаляет нежелательные листы, а затем приходит еще один, который создает новые листы, чтобы их отменить! При первом запуске макрос удаляет нежелательные листы. Однако, если он снова запущен, кажется, что он не может удалить ранее созданные листы, что вызывает ошибку двукратного имени.Как перебрать все и заменить некоторые листы в книге Excel
(Переменная rng должна распространяться на всю строку, но я еще не исправил ее.) Надеюсь, вы, ребята, можете дать некоторое представление, высоко ценимое!
sub Terminator()
Dim Current As Worksheet
Application.DisplayAlerts = False
' Loop through all of the worksheets in the active workbook.
For Each Current In Worksheets
If Not Current.Name = "Data" Then
Worksheets(Current.Name).Delete
End If
Next Current
Application.DisplayAlerts = True
' Define range for loop
Dim rng As Range, cell As Range
Set rng = Sheets("Data").Range("A5:M5")
' Loop through entire row, looking for employees
For Each cell In rng
If cell.Value = "Nummer" Then
' Make new chart for employee
With Charts.Add
.ChartType = xlLineMarkers
.Name = cell.Offset(-1, 1).Value
.HasTitle = True
.ChartTitle.Text = cell.Offset(-1, 1).Value
' Set data (dynamic) and x-axis (static) for new chart
.SetSourceData Source:=Sheets("Data").Range(cell.Offset(-2, 3), cell.Offset(7, 4))
.Axes(xlValue).MajorGridlines.Select
.FullSeriesCollection(1).XValues = "=Data!E4:E12"
' Add trendlines
.FullSeriesCollection(1).Trendlines.Add Type:=xlLinear, Forward _
:=0, Backward:=0, DisplayEquation:=0, DisplayRSquared:=0, Name:= _
"Trend (DDE)"
.FullSeriesCollection(2).Trendlines.Add Type:=xlLinear, Forward _
:=0, Backward:=0, DisplayEquation:=0, DisplayRSquared:=0, Name:= _
"Trend (SDE)"
End With
' Chart is moved to end of all sheets
Sheets(cell.Offset(-1, 1).Value).Move _
after:=Sheets(Sheets.Count)
End If
Next cell
End Sub
Благодарим за быстрый ответ! Я запустил код, и он работает отлично в первый раз, но при втором запуске он не удаляет листы, созданные в предыдущем прогоне. Это вызывает ошибку двукратности имени. –
@MGroth, что вы подразумеваете под «предыдущим запуском»? Это работает в более крупном макросе? – RGA
Uhm да, далее вниз создается новый лист. Я хочу заменить листы на каждом прогоне. –