Allora puoi riciclare quasi completamente il codice postato in precedenza...
codice:
Public Class Form1
    Private formToShow As Form
    Dim value As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 30
        Timer1.Enabled = False
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = 50
        ProgressBar1.Value = 0
        Button1.Tag = form2
        Button2.Tag = form3
        Button3.Tag = form4
        'altri eventuali assegnamenti dello stesso tipo
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ProgressBar1.Value += 1
        If ProgressBar1.Value = ProgressBar1.Maximum Then
            ProgressBar1.Value = 0
            Timer1.Enabled = False
            form2.Close()
            form3.Close()
            form4.Close()
            'altre eventuali chiusure di form
            formToShow.Show()
        End If
    End Sub

    Private Sub Buttons_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter, Button2.MouseEnter, Button3.MouseEnter 'eventualmente anche altri Handles dello stesso genere

        Timer1.Enabled = True
        ProgressBar1.Value = 0
        formToShow = DirectCast(sender, Control).Tag

    End Sub

    Private Sub Button1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave, Button2.MouseLeave, Button3.MouseLeave 'c.s. 
        Timer1.Enabled = False
    End Sub
End Class
Non l'ho collaudato ma dovrebbe andare.