У меня есть 2 листа с именем tab 1 и tab 2. Я создаю листы на основе записей на вкладке 2, используя ниже:
Sub copyeachrowtosheets()
Dim i As Integer
Dim j As Integer
Dim z As String
Dim y As Integer
Dim x As String
Dim h As Worksheet
Dim k As Integer
Dim l As String
Dim m As String
i = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
y = 2
For j = 1 To (i - 1)
z = "A" & y
x = "M" & y
k = ActiveWorkbook.Sheets.Count
m = "B" & y
l = Sheets(2).Range(m).Value
Set h = ThisWorkbook.Sheets.Add(after:=Sheets(k))
h.Name = l
Sheets(2).Range("A1:M1").Copy Destination:=ActiveSheet.Range("A1")
y = y + 1
Next j
End Sub
now if i want to delete all the created sheets using vba, i made the below:
Sub deletesheetsspecific()
Dim i As Integer
Dim j As Integer
'Dim x As Integer
Application.DisplayAlerts = False
i = ActiveWorkbook.Sheets.Count
For j = 1 To i
Dim k As String
k = VBA.left(Sheets(j).Name, 3)
If k <> "tab" Then
ActiveWorkbook.Sheets(j).delete
End If
Next j
Application.DisplayAlerts = True
End Sub
он просто удаляет несколько случайных листов, а затем выдает ошибку "ошибка времени выполнения: нижний индекс вне диапазона "в строке, которая говорит:" k = VBA.left (Sheets (j) .Name, 3) ".если я нажму, чтобы запустить снова, он удалит еще несколько листов, а затем ту же ошибку.
Может кто-нибудь сказать мне, что я делаю здесь неправильно, пожалуйста?