Dynamic ranges and page-formatting
Try to avoid using Select. I have fixed that for you. 

This line: Range(Cells(4, i + 2), Cells(Cells(Rows.Count, i + 2).End(xlUp).Row, i + 2)).Address(ReferenceStyle:=xlR1C1)

may require you to add Sheets("SheetName") separated by dot . before Range to specify the sheet you want the data to refer to.

Also added Columns.Autofit at the end to automatically resize column widths upon completion

Sub UniqueOverheads()

    Worksheets.Add(after:=Worksheets(4)).Name = "Overheads"

    With Sheets(Sheets.Count).Range("B3")
        .Value = "Overheads Code"
        .Interior.ColorIndex = 37
        .Interior.Pattern = xlSolid
        .Font.Bold = True
    End With
    With Sheets(Sheets.Count).Cells.Font
        .Name = "Lucida Sans"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With

    Dim names As Variant
    names = Array("OverheadsList", "OverheadsActuals", "OApr", "OMay", "OJun", "OJul", "OAug", "OSep", _
                  "OOct", "ONov", "ODec", "OJan", "OFeb", "OMar")

    For i = LBound(names) To UBound(names)
         ActiveWorkbook.names.Add Name:=names(i), RefersToR1C1:="=" &amp; _
         ActiveSheet.Name &amp; "!" &amp; _
         Range(Cells(4, i + 2), Cells(Cells(Rows.Count, i + 2).End(xlUp).Row, i + 2)).Address(ReferenceStyle:=xlR1C1)
    Next i
    Columns.AutoFit
End Sub