Проблема с границами для записанного макроса - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь использовать VBA для автоматизации добавления границ на лист, которые представляют границу на странице A4 при печати в PDF. Легко сделать вручную, т.е. выделить диапазон и применить внешнюю границу. Но когда страниц много, это становится громоздко. Страницы располагаются вертикально.

  • Диапазон страницы 1 B2: N69
  • Диапазон страницы 2 B70: N137
  • Диапазон страницы 3 B138: N205

Вот моя попытка

  • Пробная 1: Сделайте это вручную, сохраните как PDF, все работает нормально
  • Пробная 2: Запишите макрос пробной 1, сохраните как PDF, все работает ОК
  • Проба 3: запустить записанный макрос, сохранить как PDF, не ОК, нижняя граница первых двух страниц исчезла.

См. код ниже:

Range("B2:N69").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("B70:N137").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("B138:N205").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

Странно, что ручная и записанная версия руководства дают разные результаты.

Когда я щелкаю правой кнопкой мыши по ячейкам и выбираю «формат ячеек», он говорит, что там есть граница . Проблема существует только для границы в нижней части области печати страницы. Границы внутри страницы, использующие тот же код, не изменяются.

Есть предложения?

Заранее благодарим. М

...