I'm sorry to say that once again there is more information then I've really got time to go through... What I really need is a description of what it's not doing that it should be doing. The design doc is good but it's long and has elements that you haven't implemented, like the New game button. Still I do have a few pointers.
First is your Button Events
CODE
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If sender.text = "" Then
sender.text = "1"
ElseIf sender.text = "1" Then
sender.text = "2"
ElseIf sender.text = "3" Then
sender.text = "4"
End If
End Sub
You don't need one for every button, you can point each button to the same event. That will remove alot of unneeded code and make fixing errors faster.
Also there seems to be an error in the if statement as it is now it will increment the buttons number from blank to 1, from 1 to 2, and from 3 to 4.
This is how I think it should work.
CODE
Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click, Button8.Click, Button7.Click, Button6.Click, Button5.Click, Button4.Click, Button3.Click, Button2.Click, Button16.Click, Button15.Click, Button14.Click, Button13.Click, Button12.Click, Button11.Click, Button10.Click, Button1.Click
If sender.text = "" Then
sender.text = "1"
ElseIf sender.text = "1" Then
sender.text = "2"
ElseIf sender.text = "2" Then
sender.text = "3"
ElseIf sender.text = "3" Then
sender.text = "4"
ElseIf sender.text = "4" Then
sender.text = "1"
End If
End Sub
Your other big issue is checker. It will only check the first if statement then exit, you need to update to have each if statement look like this:
CODE
If Button1.Text = Button2.Text Or Button1.Text = Button3.Text Or Button1.Text = Button4.Text Then
MsgBox("You have a problem in row 1")
Exit Sub
End If
or use
CODE
If Button1.Text = Button2.Text Or Button1.Text = Button3.Text Or Button1.Text = Button4.Text Then
MsgBox("You have a problem in row 1")
ElseIf Button1.Text = Button9.Text Or Button1.Text = Button13.Text Then
MsgBox("You have a problem in column 1")
ElseIf Button1.Text = Button6.Text Then
.
.
.
end if
After that is fixed you can then review the logic of the checks to see whats wrong.