The proper Method is to use User Defined Form Properties.
UserForm Code
Option Explicit
Dim fParam1 As Something
Dim fParam2 as something
' It is customary to prefix these variables with "f" or "p" for Form or Property variables
' In Class modules, it is customary to prefix with "m", "c", or "p" for Class Module or Property Variable
' In Sheet Modules, use "s" or "p" as the prefix. Some coders like to add an underscore: "p_VarName".
' Whatever style you use, use it in all similar Property Variables
Property Let Param1(Var as Something)
fParam1 = Var
'Do something with fParam1
'Or call some sub
End Property
Property let Param2(var as something)
fParam2 = Var
Init_Me
End Property
Private Sub Init_Me()
If fParam1 <> "" And fPAram2 <> "" Then
'Do Something with fparam1 and fParam2
End Sub
Other module code
Load Userform1
' Triggers Sub UserForm_initialize
UserForm1.Param1 = something 'Form must be loaded so Property Lets are available
UserForm1.Param2 = Something
UserForm1.Show
' Triggers Sub UserForm_Activate