I've tried this in Vim 8.1 and Neovim (nvr 2.1.10) with and without my ~/.vimrc (the latter to check if vimrc entries were causative -- no effect).
Given this example
apple
banana
carrot
dates
I can record a macro (@a)
yy
p
to yank and paste (i.e. duplicate) a line. When I apply (@a) that macro to individual lines, and repeat that macro (@@) on individual lines it duplicates that line.
However, when I visually select those lines and try to apply the macro, trying any of these
:'<,>'norm @a ## :'<,>'norm @a on single line works
:'<,>'normal @a
:'<,>'norm! @a
:'<,>':norm @a
:'<,>':normal @a
:'<,>':norm! @a
:1,4norm! @a ## https://stackoverflow.com/a/390194/1904943
etc. the macro duplicates (once per selected line) the first line in the selected text:
apple
apple
apple
apple
apple
banana
carrot
dates
What's the problem, here?