As with many programming languages, there are several ways of doing the
same thing.
Keep in mind that UserForm.Hide is exactly that. It's HIDDEN, but that does
not mean that it's not there. It's just not displayed.
When you call the userform again, you're not opening a new userform, you're
displaying the "hidden" one.
Check out these options:
First: The "Unload" statement.
This basically "hides" the userform and clears the values.
You may want to be sure you've read all of the values first.
Second: Use the Userform_Initialize subroutine for your userform
and clear all of the objects (or pre-populate them) whenever the
userform is opened.