Try something along these lines:
Sub Cache()
Dim NoOfCrew As Long
NoOfCrew = Sheets("Cache").Cells(Rows.Count, "A").End(xlUp).Row
NoOfCrew = NoOfCrew + 1
Sheets("Hotel Booking").Range("Q10:U19").Copy
Sheets("Cache").Range("A" & NoOfCrew).PasteSpecial
Sheets("Hotel Booking").Range("X10:X19").Copy
Sheets("Cache").Range("F" & NoOfCrew).PasteSpecial
myName = "Range" & Timer 'invent a random-ish name
Sheets("Cache").Range("A" & NoOfCrew).Resize(10, 6).Name = myName 'give the range that's just been copied to that name
Application.CutCopyMode = False
DelayMacro myName 'pass that name onto the DelayMacro macro
End Sub
Sub Delete(theRange)
Range(theRange).Delete shift:=xlUp 'deletes the range itself
Names(theRange).Delete 'deletes the Name
End Sub
Sub DelayMacro(myStr)
Application.OnTime Now() + TimeValue("00:00:10"), "'Delete """ & myStr & """'" 'sets up a timed call of the Delete macro passing the name of the named range so it knows what to delete
End Sub