It is better IMO to provide yourself with some explicit references and then take care of the cleanup yourself. It is the only way to know for sure that your form(s) is/are really gone.
For example. Three forms. frmMain, Form1, and Form2. frmMain contains CommandButton1,2.
Code in frmMain:
Option Explicit
Dim f1 As Form1, f2 As Form2
Private Sub CommandButton1_Click()
Set f1 = New Form1
Set f1.MainForm = Me
Me.Hide
f1.Show
End Sub
Private Sub CommandButton2_Click()
Set f2 = New Form2
Set f2.MainForm = Me
Me.Hide
f2.Show
End Sub
Code in both Form1 and Form2:
Option Explicit
Private pMainForm As frmMain
Friend Property Set MainForm(frm As frmMain)
Set pMainForm = frm
End Property
Private Sub UserForm_Terminate()
pMainForm.Show
Set pMainForm = Nothing
End Sub