EDIT: the fact that there was a blank column title in the source list was causing an issue with references
I am creating a unique list using advanced filter so I don't think I need the criteria?
The full code is:
Dim firstrow, lastrow, uniquelistlastrow, uniquelistlastrow2 As Long
Dim shsortlist, converttohtml As Worksheet
Dim r, r1 As Range
Set shsortlist = Worksheets("Subprogramme sort list")
Set references = Worksheets("References")
firstrow = 3
lastrow = shsortlist.Range("A" & shsortlist.Rows.Count).End(xlUp).Row
references.Range("A31:D" & Rows.Count).ClearContents
' Unique (sorted) list
shsortlist.Select
Set r = shsortlist.Range("E" & firstrow - 1, "H" & lastrow)
r.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=references.Range("A30:D30"), Unique:=True
uniquelistlastrow = references.Range("A" & references.Rows.Count).End(xlUp).Row
Set r1 = references.Range("A30", "A" & uniquelistlastrow)
references.Select
r1.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A" & uniquelistlastrow + 1), Unique:=True