Вставка строки с отрицательным смещением приводит к сбою Excel - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу добавить разрыв страницы и вставить пустую строку над всеми ячейками с надписью «Всего часов:».Разрыв страницы не доставляет мне проблем, и когда я пытаюсь вставить строку с положительным смещением (например, (1,0)), строка успешно создается, хотя и дальше, чем я хочу.Как только я установил отрицание (-1,0) и запустил макрос, Excel вылетает, и я вынужден закрыть программу.Любое представление о том, что происходит, и что я могу сделать, чтобы получить мою строку?

Я также пробовал смещение (0,0), что также привело к сбою программы.

Sub InsertPBs()

Dim rngMyRange As Range, rngCell As Range

Set rngMyRange = Range("H7:H3000")

For Each rngCell In rngMyRange

    If rngCell.Value = "Total Hours:" Then

        ''successfully creates my page breaks''
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=rngCell.Offset(0, 0)

        ''crashes excel instead of creating a row''
        rngCell.Offset(-1, 0).EntireRow.Insert
    End If

Next
End

End Sub

1 Ответ

1 голос
/ 26 сентября 2019

Как сказал Крис в комментарии выше, проблема в том, что у вас бесконечный цикл.Вам нужно отойти от нижней части своего диапазона, чтобы избежать повторного поиска Total Hours: снова и снова.Попробуйте это:

Sub InsertPBs()

    Dim rngMyRange As Range, rngCell As Range

    Set rngMyRange = Range("H7:H3000")

    Dim i As Long

    For i = rngMyRange.Rows.Count To 1 Step -1
    Set rngCell = rngMyRange.Cells(i, 1)
        If rngCell.Value = "Total Hours:" Then
            ''successfully creates my page breaks''
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=rngCell.Offset(0, 0)
            ''crashes excel instead of creating a row''
            rngCell.EntireRow.Insert xlShiftDown
        End If

    Next
    End

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