Question: Is it good practice to declare variables to be used across a program in a Module then populate them in one form and use what you have populated to these variables in another form?

I plan on closing the population form after the data has been populated to the variables so I see this as the only method that would work. 

Am I right in thinking that passing parameters from the population form to the display form wouldn't be appropriate in this situation, if even possible?

Answer: 
I guess it **depends** on your application and the kind of data you're talking about. 

Think of a `User Login form` that saves the user information after logging in. You can then keep this information in a Module shared across your entire application because it's not expected to change during the session. So you can quickly check the Permission, the Role, the Username from all your program Forms.

On the other end if you're querying a database you are probably asking for the latest data available and you do that in the specific Form you're using, without the need to share it across other Forms in the program.
...on the other hand, there is nothing whatsoever that a module can do that cannot also be done with a class. For a UserLogin example, leaving it in a module does not make it easier to access:

```
 Friend User As New UserLogin

 ' elsewhere:

 theName = User.Name
 thePass = User.Password

```

Meanwhile, a class can manage the info:

```
 Class UserLogIn

   Sub LoadData

   Sub SaveData

   Function GetLogIn      ' display form, validate ID etc

   Function ChangePassword

 Private gfrm as New LogInForm
 Friend Sub Display()

    With gfrm
        .IgnoreChange = True
        .cboName.Text = Name
        .cboName.Tag = Name
        .txtURL.Text = Location
        .txtUser.Text = UserName
        .txtPW.Text = DES.DecryptData(_pass)
        .txtHint.Text = PassHint
        .txtNote.Text = Comment
        .IgnoreChange = False
        .DataChanged = False

        .Show
    End With

   ' store PW hashed or encrypted until needed...
   ' No one can change the PW except this class
   Friend Property PassWord() As String
       Get
           Return DES.DecryptData(_pass)
       End Get
       Private Set(ByVal value As String)          ' private setter
          _pass = DES.EncryptData(value)
       End Set
   End Property

  End Sub

```

Modules are simply not any easier to use, maintain, store or access data. They are considerably less powerful.