Ahora ya habiendo preguntado todo. Da ese error por que los valores no están, tu estas pidiendo los valores de los cuadros vacíos y eso es precisamente lo que estas buscando. Te doy un ejemplo:
Con el cuadro de 3x3 que tu me diste:
x - x + x =8
- + +
x+ n / x =2
/ - *
x +x+ x =9
= = =
2 4 8
Aquí hay 6 ecuaciones o formulas, como les quieras decir:
x-x+x=8
x+n/x=2
x+x+x=9
x-x/x=2
x+n-x=4
x+x*x=9
Entonces como estás haciendo debes dividir, sumar, restar o multiplicar los números del 1 al 9 con la formula que posees hasta hallar todas las posibles soluciones.
Coloquemosle nombre a las "x" que son los TextBox para confundirnos menos:
Por ejemplo:
Dim resultado As Integer = 8
For x1 As Integer = 1 To 9
For x2 As Integer = 1 To 9
For x3 As Integer = 1 To 9
If x1 - x2 + x3 = resultado Then
MessageBox.Show(String.Format("{0}-{1}+{2}={3}", x1, x2, x3, resultado))
End If
Next
Next
Next
Este código hallo 52 soluciones posibles.
1-1+8=8
1-2+9=8
2-1+7=8
2-2+8=8
2-3+9=8
3-1+6=8
3-2+7=8
3-3+8=8
3-4+9=8
4-1+5=8
4-2+6=8
4-3+7=8
4-4+8=8
4-5+9=8
5-1+4=8
5-2+5=8
5-3+6=8
5-4+7=8
5-5+8=8
5-6+9=8
6-1+3=8
6-2+4=8
6-3+5=8
6-4+6=8
6-5+7=8
6-6+8=8
6-7+9=8
7-1+2=8
7-2+3=8
7-3+4=8
7-4+5=8
7-5+6=8
7-6+7=8
7-7+8=8
7-8+9=8
8-1+1=8
8-2+2=8
8-3+3=8
8-4+4=8
8-5+5=8
8-6+6=8
8-7+7=8
8-8+8=8
8-9+9=8
9-2+1=8
9-3+2=8
9-4+3=8
9-5+4=8
9-6+5=8
9-7+6=8
9-8+7=8
9-9+8=8
Ahora esas son posibles soluciones para esa fila, te recomiendo almacenar esas soluciones en algún sitio, porque cuando vayas a hallar los valores en las columnas que interceptan esa fila la solución correcta solo será unas pocas si que acaso una sola de las N que existan.
Ahora solucionaremos la primera columna:
Debemos probar con los números del 1-9 para las "x" que no conocemos y usar los valores que hemos almacenado para las "x" que conocemos hasta que nos de 2 que es el resultado que buscamos.
Ejemplo:
'Aqui almacenaremos las x1, x2 y x3 que dan solución'
Dim _x1 As New List(Of Integer)
Dim _x2 As New List(Of Integer)
Dim _x3 As New List(Of Integer)
Dim resultado_fila_1 As Integer = 8
Dim resultado_columna_1 As Integer = 2
For x1 As Integer = 1 To 9
For x2 As Integer = 1 To 9
For x3 As Integer = 1 To 9
If x1 - x2 + x3 = resultado_fila_1 Then
If Not _x1.Contains(x1) Then
_x1.Add(x1)
End If
If Not _x2.Contains(x2) Then
_x2.Add(x2)
End If
If Not _x3.Contains(x3) Then
_x3.Add(x3)
End If
End If
Next
Next
Next
For x4 As Integer = 1 To 9
For x7 As Integer = 1 To 9
For Each x1 As Integer In _x1
If x1 - x4 / x7 = resultado_fila_1 Then
MessageBox.Show(String.Format("{0}-{1}/{2}={3}", x1, x4, x7, resultado_columna_1))
Else
_x1.Remove(x1)
End If
Next
Next
Next
Este código calcula que de las 52 soluciones solo hay 9 que satisfacen la columna 1 cuando intercepta la fila 1, este procedimiento hay que seguirlo aplicando hasta hallar la solución completa, es bastante trabajo pero al terminarlo es una obra de arte Los juegos de computadora son la máxima expresión de la lógica y la matemática aplicada
Mira que si no se satisface la condición el valor es removido de _x1, vas realizando el procedimiento una y otra vez, y cuando finalices todas las filas y columnas te quedara una lista de valores x1, x2, x3, x4, x5 y x6 que guardan las combinaciones perfectas que llegan a la solución.