At a guess, you might want to show other forms and perhaps with differing delays. You can do that with a Sub that takes the form and delay as parameters.
Assuming you are using VS2010 or later, your code could look something like this:
Private Sub ShowNextForm(formToShow As Form, secondsDelay As Double)
Dim tim As New System.Windows.Forms.Timer
tim.Interval = CInt(secondsDelay * 1000)
tim.Start()
AddHandler tim.Tick, Sub(sender As Object, e As EventArgs)
tim.Stop()
tim.Dispose()
Me.Hide()
formToShow.Show()
End Sub
End Sub
Private Sub btnAnswerA_Click(sender As Object, e As EventArgs) Handles btnAnswerA.Click
Dim bn = DirectCast(sender, Button)
bn.Enabled = False
bn.BackColor = Color.Green
Dim nextForm As New Q2
ShowNextForm(nextForm, 10)
End Sub
Then if you had another button which you wanted to do the same thing, say "btnAnswer99" with a form z99 and a delay of 2.5 seconds, you would only need to write the code
Private Sub btnAnswer99_Click(sender As Object, e As EventArgs) Handles btnAnswer99.Click
Dim bn = DirectCast(sender, Button)
bn.Enabled = False
bn.BackColor = Color.Blue
Dim nextForm As New z99
ShowNextForm(nextForm, 2.5)
End Sub
Getting a bit more advanced... maybe something to look at later...
You may notice that you are repeating a lot of code for each button. At this point it would be time to consider refactoring your code so that you write the essential code only once, and have parameters which determine what it does.
So you look at what is common between all the button click handlers, such as they all have a form they are on, a form to show, some BackColor to change to, and a delay until the next form is shown, and of course that they refer to a button.
This is an ideal opportunity to create a Class to encapsulate all the parts, perhaps a bit like this:
Friend Class SetButtonToShowForm
Property thisForm As Form
Property nextForm As Form
Property buttonRef As Button
Property buttonBackColor As Color
Property secondsDelay As Double
Friend Sub ShowNextForm(currentForm As Form, formToShow As Form, secondsDelay As Double)
Dim tim As New System.Windows.Forms.Timer
tim.Interval = CInt(secondsDelay * 1000)
tim.Start()
AddHandler tim.Tick, Sub(sender As Object, e As EventArgs)
tim.Stop()
tim.Dispose()
currentForm.Hide()
formToShow.Show()
End Sub
End Sub
Friend Sub bnClick(sender As Object, e As EventArgs)
Dim bn = DirectCast(sender, Button)
bn.Enabled = False
bn.BackColor = Me.buttonBackColor
ShowNextForm(thisForm, nextForm, secondsDelay)
End Sub
Public Sub New()
' empty constructor
End Sub
Public Sub New(sourceForm As Form, targetForm As Form, buttonRef As Button, backColor As Color, secondsDelay As Double)
Me.thisForm = sourceForm
Me.nextForm = targetForm
Me.buttonRef = buttonRef
Me.buttonBackColor = backColor
Me.secondsDelay = secondsDelay
AddHandler Me.buttonRef.Click, AddressOf bnClick
End Sub
End Class
and then you could set up all the buttons in one procedure along the lines of
Private Sub SetButtonHandlers()
Dim b1 As New SetButtonToShowForm(Me, Q2, btnAnswerA, Color.Green, 5)
Dim b2 As New SetButtonToShowForm(Me, z99, btnAnswer99, Color.Blue, 2.3)
End Sub
So you can see that with a little bit more effort, you can make it much easier to set up more buttons.