My macro doesn't, cause it is a castsequence macro, so you have to push it twice to get the desired result and will stay waiting for step 2 untill you are in range.
But then again, mine will waste shards if you have to switch targets after pushing it. The only real solution for not wasting shards is paying attention.
My macro in case you want to try it:
It will let you push once for SB then a second for SS. It will then reset to step 1 but will also go back to step 1 if you don't push it for 5 seconds OR if you switch target (meaning it will work when doing fast target switches)
#showtooltip: Soul Swap
/castsequence reset=5/target Soulburn, Soul Swap
I made it cause I used a macro for SB in DS with Soulfire and it would sometimes get hung up on a step if I made a direct /cast order. No chance of that with castsequence.