Вот:
[vba]Код
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim R$, RN$, N&
If ActiveSheet.Name = "Лист1" Then
' Блок для переопределения диапазона печати - его можно вставить в свой макрос
R = ActiveSheet.PageSetup.PrintArea ' эта переменная нужна только если нужно будет возвращать текущий диапазон для печати ==============
N = Cells(Rows.Count, 2).End(xlUp).Row ' ==============
RN = Range("A1:F" & N).Address ' ==============
ActiveSheet.PageSetup.PrintArea = RN ' ==============
'==============================================================================
'Блок печати и возвращения начального диапазона для печати
Application.EnableEvents = False
Range(RN).PrintOut
ActiveSheet.PageSetup.PrintArea = R
Application.EnableEvents = True
Cancel = True
'==============================================================================
End If
End Sub
[/vba]
Макрос будет запускаться перед печатью и переопределять диапазон по заполненному 2-му столбцу.
Выделенный блок можете просто вставить в свой исходный код, чтобы после его завершения происходило переопределение диапазона печати.