Correct value-placement dialplan for asterisk is like this
exten => 1000,1,Set(trunk=${PEX_ONE})
exten => 1002,1,Set(trunk=${PEX_TWO})
exten => 1003,1,Set(trunk=${PEX_THREE})
exten => 1004,1,Set(trunk=${PEX_PHONE})
exten => 1005,1,Set(trunk=${PEX_FIVE})
; this will be executed after any of above
; note,it start from 2 prio(1 is from set above)
exten => _100[1-5],2,Noop(Dialing ${trunk})
same => n,Macro(DialStartMonitor,${trunk})
same => n,Dial(SIP/${trunk},10,m)
same => n,Playback(vm-nobodyavail) ; Play "no one's available"
same => n,Hangup()
Note, your dialplan is still bad, becuase it play vm-nobodyavail even if user busy or communication was ok, but hanguped called user.
For correct dialplan like that you need analyze DIALSTATUS variable, check extensions.conf.sample for dialplan like that or read dialplan of freepbx.org software.