If it is always go to the Insert() function that's mean
If txtDiscount.Text = .Rows(i).Cells("DiscountNormal").Value Then
above conditions is false for all time. My suggestion is add the breakpoints to that line and verify the value of
txtDiscount.Text
and
Rows(i).Cells("DiscountNormal").Value
separately. then you can get the idea whats wrong here.
It seems this is Casting issue.
Convert
Rows(i).Cells("DiscountNormal").Value.ToString()
and check.
or
CAST
both
txtDiscount.Text
and
Rows(i).Cells("DiscountNormal").Value
to discount type (integer/decimal) and check