In VB6 we had Me.Forms; what happened? People stopped needing it, I guess. If you do though, here’s a slab to get you through.

With a little bit of reflection, we can get the list.  Start a new project with three forms.  Drop a listbox and a button on Form1, then put this behind it:

Public Class Form1
    Public Forms as New Generic.List(Of String)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyTypes As Type() = Reflection.Assembly.GetExecutingAssembly.GetTypes
        For Each mType As Type In MyTypes
            If mType.BaseType Is GetType(Form) Then
                Dim frmname As String = mType.UnderlyingSystemType.ToString
                If frmname <> My.Application.Info.AssemblyName & "." & Me.Name Then
                    frmname = frmname.Replace(My.Application.Info.AssemblyName & ".", "")
                    ListBox1.Items.Add(frmname)
                    Forms.Add(frmname)
                End If
            End If
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If ListBox1.Text = "" Then Exit Sub

        Dim NewForm As Object _
            = Activator.CreateInstance(Type.GetType(My.Application.Info.AssemblyName & "." & ListBox1.Text))
        DirectCast(NewForm, Form).Show()
    End Sub
End Class

When you run it, the listbox will have Form2 and Form3 in it. Clicking the button will bring up that form. Me.Forms will also have the two members as expected. If you want Form1 included, omit the test for it in Form1_Load.