No it's not possible to do this, you'll need to use a sheet worker. create your select like so, and add a hidden input to hold a value you'll calculate in your sheet worker. Then call that attribute in your button. <select name='attr_acrobatics'> <option value='str' >STR</option>
<option value='agi' selected='selected'>AGI</option>
</select>
<input type="hidden" name="attr_acrobatics_roll" value=''>
<button type='roll' name='roll_acrobatics' value='@{acrobatics_roll}'> then in your sheet worker get the various attributes you might need, and build the string for the button there, like so: on ( 'change:acrobatics' , () => { getAttrs ([ 'acrobatics' ], values => { const selected = values [ 'acrobatics' ]; const roll = `{{roll=[[1+floor(abs(@{ ${ selected } Total}+0.5-[[1d100]])/10)]]+@{ ${ selected } Bonus} }}`; setAttrs ({ acrobatics_roll : roll }); }); }); This grabs the value in the select, which will be something like 'agi' or 'str', which you can then add to 'Bonus' and 'Total' to construct your roll. This line is complex: const roll = `{{roll=[[1+floor(abs(@{${selected}Total}+0.5-[[1d100]])/10)]]+@{${selected}Bonus} }}`; and can be rewritten like this if its more understandable: const roll = '{{roll=[[1+floor(abs(@{' + selected + 'Total}+0.5-[[1d100]])/10)]]+@{' + selected + '}Bonus} }}';