Hi Paul,
Was in middle of writing to you when you asked for code, so scrapped last post and send this in it's place. Hope it's what you need.
Here is the code in the main form.
Code:
Bit at top of form is this.
Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic
Then the relevant button is this.
Private Sub cmd2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd2.Click
    Dim dbstr As String
    Dim ssga As New sggAcs
    dbstr = "cmd3"
    DirectCast(ssga.Controls(dbstr), Button).PerformClick()
End Sub
This is the code for the other form where the buton to be clicked is..
Code:
Friend Class sggAcs
    Inherits System.Windows.Forms.Form
    Private Sub cmd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd1.Click, cmd2.Click, cmd3.Click
        If sender.Tag <> gtType Then
            gtType = sender.tag
            gtCode = Trim(gtID) & sender.tag
            If sender.tag = "g" Then
                gtHead = "General"
            ElseIf sender.tag = "c" Then
                gtHead = gtCamp
            Else
                gtHead = "Fundraising"
            End If
            MainGtacs.Text = "Gtracs - " & gtHead & " Accounts - " & gtIdent
            Me.Dispose()
        Else
            Me.Dispose()
        End If
    End Sub
End Class.
There is more to go in but it's not there yet.
BTW, I'm trying to convert(re-writing) a system from VB6. Then I just used the index of an array, not in vb2010 though!