Метод Copy из класса Worksheet завершен неверно - VB

Узнай цену своей работы

Формулировка задачи:

Добрый день.
Есть одна проблемка, никак не могу найти причину.
Есть некие данные и необходимо разложить их по отдельным листам Excel, по принципу (в данном случае) один лист – одна кассета.
Что делаем: Копируем данные на следующий лист, удаляем все лишнее с текущего листа оставляя нужную кассету, со следующего листа убираем нужную кассету. И далее по циклу.
Но когда доходит до 56 листа (+- 2 в зависимости от данных) появляется ошибка:
Run-time error ‘1004’
Метод Copy из класса Worksheet завершен неверно.
После этого в документе нельзя скопировать (даже вручную) не одной страницы, новые же создаются.
Public Function Start()
Dim j_ As Integer
Dim sheetNo_ As Integer
Dim CassetaNo_ As String
j_beg = 2
sheetNo_ = 2
Cells(1.1).Select
CassetaNo_ = Sheets(2).Cells(2, 6) 'Первая кассета
Do Until IsEmpty(Sheets(sheetNo_).Cells(j_beg, 6))
On Error GoTo Err_Copy
Sheets(sheetNo_).Copy After:=Sheets(sheetNo_) 'копируем лист
j_ = j_beg + 1 'чистим текущий лист
Do Until IsEmpty(Sheets(sheetNo_).Cells(j_, 6))
If Sheets(sheetNo_).Cells(j_, 6) <> CassetaNo_ Then
Sheets(sheetNo_).Rows(j_).Delete
Else
j_ = j_ + 1
End If
Loop
If Sheets(sheetNo_).Cells(j_beg, 6) <> "" Then
Sheets(sheetNo_).Name = Sheets(sheetNo_).Cells(j_beg, 6)
Else
Sheets(sheetNo_).Name = "Null"
End If
j_ = j_beg 'чистим следущий лист от предыдущей кассеты
Do Until IsEmpty(Sheets(sheetNo_ + 1).Cells(j_, 6))
If Sheets(sheetNo_ + 1).Cells(j_, 6) = CassetaNo_ Then
Sheets(sheetNo_ + 1).Rows(j_).Delete
Else
j_ = j_ + 1
End If
Loop
sheetNo_ = sheetNo_ + 1
CassetaNo_ = Sheets(sheetNo_).Cells(j_beg, 6)
Loop
End Function

Решение задачи: «Метод Copy из класса Worksheet завершен неверно»

textual
Листинг программы
On Error GoTo errorhandler

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5