Ayuda para mejora de centro numérico

ALGUIEN ME PODRÍA AYUDAR A MEJORAR MI PROGRAMA DE CENTROS NUMÉRICOS(Un centro numérico es un número que separa una lista de números enteros (comenzando en 1) en dos grupos de números, cuyas sumas son iguales. El primer centro numérico es el 6, el cual separa la lista (1 a 8) en los grupos: (1; 2; 3; 4; 5) y (7; 8) cuyas sumas son ambas iguales a 15)
He llegado hasta el numero 1681 pero si coloco números mayores el programa tarda mucho en reaccionar, alguien me podría decir como mejorar el código por favor, el código que utilizo es el siguiente:
Private Sub Command1_Click()
Dim val1 As Integer, val2 As Double
Dim suma As Double, x As Integer
Dim n As Integer, contador2 As Integer
val1 = Int(Text1.Text)
val2 = val1
contador2 = 1
otra:
x = 0
suma = 0
n = 0
For x = 1 To (val1 - 1)
Text7.Text = val1
Text8.Text = val2
Text4.Text = x
Text3.Text = contador2
Text6.Text = n
suma = suma + x
Text5.Text = suma
If suma >= val2 Then
If x + contador2 = (val1 - 1) Then
If suma = val2 Then
Text2.Text = x + 1
GoTo FINAL
Else
val1 = val1 - 1
val2 = val1
contador2 = 1
GoTo otra
End If
End If
If x + contador2 > (val1 - 1) Then
val1 = val1 - 1
val2 = val1
contador2 = 1
GoTo otra
End If
n = n + 1
val2 = val2 + (val1 - n)
contador2 = contador2 + 1
End If
Next x
Exit Sub
FINAL:
End Sub

1 respuesta

Respuesta
1
Si quieres que tu programa funcione más rápido entonces pásale los valores a los objetos (en este caso textbox) al final, una vez que ya fueron calculados. Mira modifiqué un poco tu código.
Private Sub Command1_Click()
    Dim val1 As Integer, val2 As Long
    Dim suma As Long, x As Long
    Dim n As Integer, contador2 As Long
    Dim VarText1 As Long
    Dim VarText2 As Long
    Dim VarText3 As Long
    Dim VarText4 As Long
    Dim VarText5 As Long
    Dim VarText6 As Long
    Dim VarText7 As Long
    Dim VarText8 As Long
    val1 = Int(Text1.Text)
    val2 = val1
    contador2 = 1
otra:
    x = 0
    suma = 0
    n = 0
    For x = 1 To (val1 - 1)
        VarText7 = val1
        VarText8 = val2
        VarText4 = x
        VarText3 = contador2
        VarText6 = n
        suma = suma + x
        VarText5 = suma
        If suma >= val2 Then
            If x + contador2 = (val1 - 1) Then
                If suma = val2 Then
                    VarText2 = x + 1
                    GoTo FINAL
                Else
                    val1 = val1 - 1
                    val2 = val1
                    contador2 = 1
                    GoTo otra
                End If
            End If
            If x + contador2 > (val1 - 1) Then
                val1 = val1 - 1
                val2 = val1
                contador2 = 1
                GoTo otra
            End If
            n = n + 1
            val2 = val2 + (val1 - n)
            contador2 = contador2 + 1
        End If
    Next x
    Exit Sub
FINAL:
    Text2.Text = VarText2
    Text3.Text = VarText3
    Text4.Text = VarText4
    Text5.Text = VarText5
    Text6.Text = VarText6
    Text7.Text = VarText7
    Text8.Text = VarText8
End Sub
Cualquier consulta lo posteas
Gracias por la corrección, ya me di cuenta que estaba re-escribiendo y era lo que lo hacia más lento, y con tu corrección solo una vez lo escribe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas