Crear bucle con formularios VBA

Soy nuevo en el mundo de visual basic y me gustaría saber si existe la posibilidad de crear un bucle con formularios, es decir:

Tengo un userform1 el cual contiene un combobox para elegir cierto numero, y tengo un botón para abrir un userform2, en este se captura cierta información pero necesito que no cierre hasta completar el numero de capturas indicadas por el combobox en userform1

Espero haya podido explicarme de la manera más clara y puedan ayudarme.

1 Respuesta

Respuesta
1

¿Pero qué capturas en el userform2?

¿Esas capturas en el userform2 las pasas a la hoja?

Voy a desarrollar un ejemplo.

  • En form1 en el combo1 pones el número 3.
  • Abres el form2
  • En el form2 en el textbox1 capturas un dato
  • Presionas un botón, pasas el dato a la hoja (llevas 1)
  • En el form2 en el textbox1 capturas un dato
  • Presionas un botón, pasas el dato a la hoja (llevas 2)
  • En el form2 en el textbox1 capturas un dato
  • Presionas un botón, pasas el dato a la hoja (llevas 3)
  • Entonces ya puedes salir del form2

Para llevar el número de capturas, hay que tener un punto de control, en mi ejemplo, mi punto de control es un botón.

¿Explícame con una secuencia de pasos cómo sería tu punto de control?

Buen día Dante!, mi secuencia es como la describe, tengo un botón GUARDAR para la información que selecciono en 3 combobox que existen en mi form2.

Esa info se guarda en cierta hoja, pero eso es lo que necesito, que no se cierre a menos que cumpla con el numero de veces que he seleccionado en form1:

-En form1:

Al presionar "Captura de hallazgos" se abre form2 (en Total de puntos auditados NO conformantes, ya no esta el textbox, se cambio a un combobox y ahí se selecciona determiando numero)

Aqui el boton guardar envia la info a cierta hoja, y requiero que este abierto hasta que cumpla con el numero seleccionado en combobox

Lo siguiente va en tu userform1 en el botón Cargar Hallazgos

Private Sub CommandButton1_Click()
'Por.Dante Amor
    If ComboBox1.Value = "" Or ComboBox1.ListIndex = -1 Or _
        Not IsNumeric(ComboBox1.Value) Then
        MsgBox "Captura un valor válido en el combo"
        ComboBox1.SetFocus
        Exit Sub
    End If
    '
    UserForm2.Show
End Sub

Lo siguiente va en tu userform2

Primero, debes crear un label en el suerform2, el Name le pones Label10

Private Sub CommandButton1_Click()
'Por.Dante Amor
    '
    'guardar dato en la hoja
    '
    'aquí va tu código para guardar en la hoja
    '
    UserForm2.Label10.Caption = Val(UserForm2.Label10.Caption) - 1
    If Val(UserForm2.Label10.Caption) = 0 Then
        MsgBox "Se llegó al límite de capturas, se va a cerrar el form2"
        Unload Me
    End If
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    UserForm2.Label10 = UserForm1.ComboBox1
End Sub
'
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Por.Dante Amor
    If Val(UserForm2.Label10.Caption) > 0 Then
        MsgBox "No se han completado las capturas, no es posible salir", vbCritical
        Cancel = True
    End If
End Sub

Lo que hace es lo siguiente, cuando se activa el form2, se llena el label10 con lo que tiene el combobox1 del form1.

Después, empiezas las capturas, y el valor del Label10, va disminuyento, hasta llegar a 0, cuando llega a 0 entonces ya se terminó la captura y el form2 se cierra.

Si no ha llegado a 0, entonces no puedes salir del form2, para eso es el evento UserForm_QueryClose.

Avísame cualquier duda.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Dante! Muchisimas gracias me funciono al 100%, ya lo coloque en el codigo del archivo y hace exactamente lo que necesitaba!

Te agradezco tu tiempo y tambien gracias por compartir tu conocimiento!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas