/ / Loop за изтриване на листове получава грешка по време на работа - excel-vba, for-loop, vba, excel

Loop за изтриване на листове получава грешка по време на работа - excel-vba, for-loop, vba, excel

Създадох за цикъл за изтриване на листа от aработна книга. Блокът от кодове добавя работна книга и преброява броя на листите в тази работна книга, които по подразбиране обикновено са три (3). Така че, според IF функцията, тя трябва да изтрие sheet2 и лист 3. Въпреки това, тя извежда грешка по време на изпълнение след изтриване на sheet2. Аз съм начинаещ на VBA, и не знам какво да правя.Моля, помогнете.Благодаря ви много. (Забележка: Ако c е равно на 2, то работи добре и изтрива лист 3. Грешката се появява само когато c е равно на 1.)

      c= 1
Dim Wbk As Workbook
Set Wbk = Workbooks.Add
i = Wbk.Worksheets.count = 3
Application.DisplayAlerts = False
If c < i Then
For j = (c + 1) To 3
Sheets(j).Delete
Next j
ElseIf c > i Then
Wbk.Worksheets.Add after:=Wbk.Worksheets("sheet3"), count:=(c - i)
Else: End If

Отговори:

0 за отговор № 1

Листът има индекс, започващ от 1. Така че работна книга с 3 листа има 1-3. Въпросът тук е, че след като изтриете лист два (2), сега имате само 1-2 (1 е лист1 и 2 е лист3). Така че, когато увеличавате до 3, няма лист с индекс от 3.

Искаш нещо подобно.

  c= 1
Dim Wbk As Workbook
Set Wbk = Workbooks.Add
Dim i As Integer
Application.DisplayAlerts = False

For i = Wbk.Worksheets.count To 1 step -1
Sheets(i).Delete
Next iIndex