каков наилучший способ установить динамический диапазон печати в VBA

#excel #vba

Вопрос:

Это мой текущий код, и я пробовал различные комбинации, но он печатает информацию только в столбцах A и B и игнорирует все данные в столбцах от D до O

 Sheets("PartsList").Select
Dim LstRw As Long, PrnG As Range
    LstRw = Cells(Rows.Count, "A").End(xlUp).Row
    Set PrnG = Range("A15:O15" amp; LstRw)
    
    
    ActiveSheet.PageSetup.PrintArea = PrnG
 

Комментарии:

1. Возможно, это не решит вашу проблему, но я думаю, вы имеете в виду следующее: Range("A15:O" amp; LstRw) -В противном случае результат был A15:O15100 бы таким, если бы в столбце A. использовалось 100 строк.

2. Свойство printArea принимает строку, поэтому вы можете попробовать ActiveSheet.PageSetup.PrintArea = "A15:O" amp; LstRw , нет необходимости устанавливать диапазон. Документация

3. Привет, Рэймонд, спасибо. Я попробовал ваше предложение, но оно выбирает только информацию в столбцах A и B и печатает их не во всех столбцах в столбце O

4. @JackvanHoof Я только что протестировал его, и он работает, попробуйте код в приведенном ниже ответе и посмотрите, работает ли он. Обратите внимание, что он устанавливает только область печати, Если вам нужно, чтобы печать была зафиксирована на 1 странице и т. Д., Тогда вам нужно изменить другие свойства.

Ответ №1:

PrintArea свойство принимает String значение, поэтому вы можете передать диапазон непосредственно в свойство (Документация):

 Sub Test()
    Const printRng As String = "A15:O"
    
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("PartsList")
    
    Dim LstRw As Long
    LstRw = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ws.PageSetup.PrintArea = printRng amp; LstRw
    
    Debug.Print ws.PageSetup.PrintArea
End Sub
 

Комментарии:

1. Привет, Рэймонд, Спасибо тебе еще раз. Я скопировал ваш код и все равно не сработал. Я всего лишь новичок в VBA, но меня очень расстраивает, когда оба кода, которые вы мне дали, не работают, и все же я уверен, что они должны работать. Я нахожу VBA очень трудным для понимания, когда он кажется таким простым, прямым и логичным, и все же он терпит неудачу. Еще раз я очень ценю вашу помощь

2. @JackvanHoof Попробуйте этот код в новой книге и посмотрите, работает ли он, какой адрес выводится в немедленном окне?