Код VBA не будет перебирать листы для удаления определенных строк - PullRequest
1 голос
/ 05 марта 2020

У меня есть 100 листов в книге. На каждом листе есть пустые строки для первых строк. Для некоторых листов в восьмой строке начинаются данные. Для некоторых листов данные начинаются 9 или 10 числа.

Мой код переходит к первой строке со значением, а затем смещается на одну строку вверх. Тогда мне нужно это удалить.

Мой код работает на одном листе просто отлично, но когда я пытаюсь перебрать все листы в рабочей книге, он не выходит за go за активную рабочую таблицу.

Что может я делаю, чтобы перебрать рабочие листы?

Sub To_Delete_Rows_In_Range()
Dim iCntr
Dim rng As Range
Dim wb As Workbook
Set wb = ActiveWorkbook

For Each Ws In wb.Worksheets
    Set rng = Range("A1", Range("A1").End(xlDown).Offset(-1, 0))
    For iCntr = rng.Row + rng.Rows.Count - 1 To rng.Row Step -1
        Rows(iCntr).EntireRow.Delete
    Next
Next Ws

End Sub 

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Попробуйте другой подход, удаляйте первую строку снова и снова, пока содержимое A1 не станет , а не пусто:

Do Until Ws.Range("A1").Value <> vbNullString
    Ws.Rows(1).Delete
Loop
0 голосов
/ 05 марта 2020

Добавлено Ws. перед вашим диапазоном, чтобы он знал, чтобы измениться с листа.

Sub To_Delete_Rows_In_Range()
Dim iCntr
Dim rng As Range
Dim wb As Workbook
Set wb = ActiveWorkbook

For Each Ws In wb.Worksheets
    Set rng = Ws.Range("A1", Ws.Range("A1").End(xlDown).Offset(-1, 0))
    For iCntr = rng.Row + rng.Rows.Count - 1 To rng.Row Step -1
        Ws.Rows(iCntr).EntireRow.Delete
    Next
Next Ws

End Sub 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...