What started the whole discussion was the used of Range("A65536").End(xlUp) could miss data in excel 2007 (if there are more than 65536 rows), but if you used a larger number then it wouldn't be cross compatible with earlier versions. Yes, if you have "dirty" data then usedrange can grab cells with no data... But I submit that any worksheet not having clean usedrange, is probably also not clean enough for automation without scrubbing anyway.
And for the purpose of the scrub itself you can always do a reasonably quick test of LenB(cll.Value) to shrink the range. The chief advantage being that usedrange will always get all of the data, where end(xlup) can miss data, both because of versioning problems, or because of presumption that you are using the longest column. If your data in not fully normalized (as may be the case in a scrub) then you might zoom right up past data by using too short of a column. The general principle being it was deemed better to have all the data + non-data cells, then miss data completely.