Настройте область печати до последней строки

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

Столбец одинаков до тех пор, пока столбец и строка «I» не изменятся

пожалуйста помоги !!


person NorwegianLatte    schedule 06.07.2018    source источник


Ответы (2)


Я считаю, что следующее поможет вам достичь того, чего вы хотите, оно будет перебирать все ваши рабочие листы и находить последнюю строку со значением в столбце I, а затем устанавливать область печати как таковую:

Sub PrintArea()
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
'loop through all sheets in workbook
    LastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row
    'get the last row with data on Column I
    ws.PageSetup.PrintArea = "A1:I" & LastRow
    'set print area from A1 to last row on column I
Next ws
End Sub
person Xabier    schedule 06.07.2018
comment
он работал около 100 страниц, а после этого остальное до 4-й страницы, а на полпути было выбрано до 8-й страницы.. вы знаете, почему это происходит ?? - person NorwegianLatte; 06.07.2018
comment
@KyleHong Код на самом деле ищет последнюю строку с данными в столбце I, возможно, вам придется проверить их страницы, чтобы увидеть, не находится ли последняя строка там, где вы на самом деле ожидаете ... - person Xabier; 09.07.2018
comment
Спасибо, я думаю, что это, должно быть, была формула, я изменил ее, чтобы подсчитать столбец C, на котором нет никакой формулы, и он отлично работает. - person NorwegianLatte; 10.07.2018

Вы можете просмотреть листы и установить области печати

Sub DoIt()
    Dim sh As Worksheet
    Dim LstRw As Long, Rng As Range

    For Each sh In Sheets
        With sh
            LstRw = .Cells(.Rows.Count, "I").End(xlUp).Row
            Set Rng = .Range("A1:I" & LstRw)
            .PageSetup.PrintArea = Rng.Address
        End With
    Next sh
End Sub
person Davesexcel    schedule 06.07.2018