Устранение неполадок Удаление дополнительной страницы

У меня есть код, который создает отчет на временном листе в печатном формате. В этом коде он призывает Sub SetPageBreaks (ниже код). У меня проблемы с удалением определенного разрыва страницы, установленного между столбцами G:H,

Sub SetPageBreaks(SheetObj As Worksheet)

    Dim TotRow%, LinesPerPg%, NumPgs%, Page%

    TotRow = SheetObj.UsedRange.Rows.Count
    LinesPerPg = 56
    NumPgs = RoundUp(TotRow / LinesPerPg)

    With SheetObj
        .ResetAllPageBreaks
        For Page = 1 To NumPgs
            .Rows(LinesPerPg * Page + 1).PageBreak = xlPageBreakManual
        Next Page
        .Columns("J").PageBreak = xlPageBreakManual
        .Columns("H").PageBreak = xlPageBreakNone
    End With

End Sub

Function RoundUp(ByVal Number As Double) As Long
    RoundUp = Application.WorksheetFunction.RoundUp(Number, 0)
End Function

Между колоннами I:J является последним столбцом страницы (он должен занимать всю ширину страницы, следует ожидать некоторого масштабирования). Почему мой код не удаляет разрыв на col H?

Изменить (Новая попытка кодирования):

Я обновил свой код до следующего безуспешно (после настройки полей в соответствии с моими предпочтениями, затем добавив .FitToPagesWideЭто вырезка из моей последней колонны.

Option Explicit

Sub SetPageBreaks(SheetObj As Worksheet)

    Dim TotRow%, LinesPerPg%, NumPgs%, Page%

    TotRow = SheetObj.UsedRange.Rows.Count
    LinesPerPg = 56
    NumPgs = RoundUp(TotRow / LinesPerPg)

    With SheetObj
        .ResetAllPageBreaks
        For Page = 1 To NumPgs
            .Rows(LinesPerPg * Page + 1).PageBreak = xlPageBreakManual
        Next Page
        With .PageSetup
            .HeaderMargin = 21.6
            .FooterMargin = 21.6
            .TopMargin = 86.4
            .LeftMargin = 18
            .RightMargin = 18
            .BottomMargin = 54
            .FitToPagesWide = 1
            .FitToPagesTall = False
        End With
    End With

End Sub

1 ответ

Решение

Чтобы произошло какое-то масштабирование, вы должны сообщить Excel, как это сделать. В начале блока С добавьте:

.PageSetup.Zoom = False
.PageSetup.PrintArea = "$A:$I"
.PageSetup.FitToPagesWide = 1
.PageSetup.FitToPagesTall = False

Ваши последние 2 со строками блоков больше не нужны.

Другие вопросы по тегам