Я не уверен, что вы имеете в виду
но следующий код распечатает лист, когда пользователь изменит ячейку столбца B
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Columns.Count = 1 Then
ThisWorkbook.ActiveSheet.PrintOut
End If
End Sub
Редактировать после комментария
Так вот что вам нужно:
Sub PaginateBasedOnColB()
Dim lngRowsCount As Long
Dim lngCounter As Long
lngRowsCount = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
MsgBox lngRowsCount
For lngCounter = 1 To lngRowsCount
If ThisWorkbook.ActiveSheet.Cells(lngCounter, 2) <> _
ThisWorkbook.ActiveSheet.Cells(lngCounter + 1, 2) Then
ThisWorkbook.ActiveSheet.HPageBreaks.Add (ThisWorkbook.ActiveSheet.Range("B" & lngCounter + 1))
End If
Next lngCounter
End Sub