Why are you doing that?
Look at your code:
ta = CDec(mtbx.Text)
mtbx.Text = "£" & ta.ToString("N2")
If mtbx.Name = "amtInp" Then tAmt.Text = CDec(mtbx.Text)
ta = CDec(mtbx.Text)
Take a Textbox value, and convert it to a Decimal. This is a poor idea: you should be using Decimal.TryParse and reporting problems to the user.
mtbx.Text = "£" & ta.ToString("N2")
Having converted it to a decimal value, you immediately convert it back to a tring, and tack a currency symbol on the front.
If mtbx.Name = "amtInp" Then tAmt.Text = CDec(mtbx.Text)
You then convert that back to a decimal (which will throw away the currency, if it doesn't cause it to fail, which it does) in order to convert it back into a string, to put it in a textbox.
That's...um...very odd.
Use TryParse to convert it (with reporting), and look at what you are trying to store where - you should need at most two type conversions: one to a dec, and one to a string. And that's only because your specify a format for the string value!
And your problem will go away at the same time.