I've searched your help and forums and don't see it written anywhere that for CopyStyle to work properly, the source range must be bigger than, or equal to, the destination range. I'm therefore wondering whether this behaviour is by design or unintentional. For example (in VB):
r = wks.Cells.CreateRange("a1:e1")
r2 = wks.Cells.CreateRange("a2:e6")
Because the source range (r) is only 1 row, the formatting is only copied to the first row of the destination range (r2). The solution is to loop through each row of the destination range but that seems a little clumsy when Excel automation performs the action in one statement. If you could confirm whether this is intentional behaviour that would be appreciated.