After checking the code below,
I'd suggest we don't use macro.