So, this doesn't have much to do with the ProviderUserKey, but with the rest of your code? That, once again, proves the importance of providing detailed explanations of the code and problem, backed up with relevant snippets as you did in your last post.
Code:
Dim useridparam As New SqlParameter("@userid", SqlDbType.UniqueIdentifier)
useridparam.Value = UserKey
An excellent SqlParameter you have here. And what a pity you completely forget about it after you create it. In other words, you're never adding it to the Parameters collection of the SqlCommand object.
Hope this helps,
Imar