I don't know about setting it to 3 different pages, but I can shorten your code a bit. Does this work for you?
Sub Print_CP055()
Dim i As Integer, PrntArea As Variant
Application.ScreenUpdating = False
'Change page settings
With ActiveSheet.PageSetup
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintQuality = 600
End With
'variable with the names of the 3 ranges
PrntArea = Array("Freezer_CP055_1", "Freezer_CP055_2", "Freezer_CP055_3")
'loops through the number of items in the PrntArea variable
For i = 0 To UBound(PrntArea)
'sets the print area to the next item in the PrntArea _
variable each time it loops--should have 3 different _
printouts, one for each range in PrntArea
ActiveSheet.PageSetup.PrintArea = PrntArea(i)
MsgBox "ok"
'Print
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=False, Collate:=True
Next i
Application.ScreenUpdating = True
End Sub