Well, their conditions probably were not met, actually. Consider 'If oHF.Range <> " " Then' and 'If oHF.Range.Text <> "" And oHF.Range <> " " Then'. These both ignore the paragraph break that's part of the range's text, so the test will always fail. As for 'If len(oHF.Range) >1 Then', the range length is a minimum of one character (the paragraph break) so any content other than a shape will cause it to return 'True' - but it fails to test shaperanges, whose anchors have no length.