Как это объяснить? - PullRequest
       17

Как это объяснить?

0 голосов
/ 06 июня 2019

Я нашел код, который находит все PageBreak на листе (автоматический PB после PageSetup), и я не мог понять, как объяснить это поведение.Когда я запускаю код, PB находится на расстоянии 2 строки от PB, но при отладке (независимо от того, куда я ставлю точки останова, он работает как положено.

В моих листах от 100 до нескольких тысяч строк, и сначала я форматирую их какнужно, затем нужно вставить PB перед каждой строкой, в которой есть № 2 в столбце А. Затем мне нужно поставить границу для каждого разрыва страницы (не имеет значения, если это автоматический или ручной).

Код:

Dim rngBorder As Range
Dim lngLastRow As Long
Dim lngLastCol As Long
Dim lngHPBreak As Long
Dim lngVPBreak As Long
Dim lngRow As Long
Dim lngCol As Long
Dim rngAC As Range

lngCol = 1
With ActiveSheet
    Set rngAC = ActiveCell
    lngLastRow = .UsedRange.Cells(.UsedRange.Rows.Count, 1).Row
    lngLastCol = .UsedRange.Cells(1, .UsedRange.Columns.Count).Offset(1, 0).Column
    .Cells(lngLastRow + 1, 1).Activate

'        lngRow = 1
'        For lngVPBreak = 1 To .VPageBreaks.Count
'            lngCol = 1
'            For lngHPBreak = 1 To .HPageBreaks.Count
'                Set rngBorder = .Range(.Cells(lngRow, lngCol), _
'                .Cells(.HPageBreaks(lngHPBreak).Location.Row - 1, .VPageBreaks(lngVPBreak).Location.Column - 1))
'                rngBorder.BorderAround xlContinuous, xlThick
'                lngRow = .HPageBreaks(lngHPBreak).Location.Row
'            Next
'
'            Set rngBorder = .Range(.Cells(lngRow, lngCol), .Cells(lngLastRow, .VPageBreaks(lngVPBreak).Location.Column - 1))
'            rngBorder.BorderAround xlContinuous, xlThick
'
'            lngCol = .VPageBreaks(lngVPBreak).Location.Column
'        Next
    lngRow = 1
    For lngHPBreak = 1 To .HPageBreaks.Count
    Set rngBorder = .Range(.Cells(lngRow, lngCol), _
    .Cells(.HPageBreaks(lngHPBreak).Location.Row - 1, lngLastCol))

        rngBorder.BorderAround xlContinuous, xlThick
        lngRow = .HPageBreaks(lngHPBreak).Location.Row
    Next
    Set rngBorder = .Range(.Cells(lngRow, lngCol), .Cells(lngLastRow, lngLastCol))
    rngBorder.BorderAround xlContinuous, xlThick
    rngAC.Activate
End With

(я прокомментировал VPageBreaks, потому что они мне не нужны)

Итак, этот код создает границу через 2 строки после PB, затем через 4 строки на второй странице, затем за 6 строк ии так далее ...

Но ... когда я устанавливаю точку останова в VBA ... она работает просто, точно устанавливая границы именно там, где это необходимо.

Как это объяснить ???? Какотладить такой код ?????

Заранее спасибо

Том

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