You probably solved this ages ago, but here goes:
Put in your code for the change event at the beginning
Something like
If txtBarcode1.value is Null then
Exit Sub
End If
Than follow it with the
intTotal1.Text = Format(Application.WorksheetFunction.Product(intQTY1,
intUP1), "#,##0.00")
*** Not tested on animals (or anything else) but it is approximately right.
You may need to change the condition of txtBarcode1.value depending on what it
gets initialised to. It may need to be ="" or =0
The dynamic userform is more complex. I will have a go when I get time. You
would need to add controls to the userform and redisplay it.
What would the trigger be for a new row?
I can't help thinking life would be easier if you used Excel to do the stuff
it is good at like calculating, etc and just used the userform for input.