Instead of making a button, use vba on the form_load and form_current so that every time the form is opened or moved to another record, the calculation is made. Then just refresh the form (or specific field) to show changes.
for example
Private Sub Form_Current()
Me.TextBox1.Value =...