Controlar valor de combobox antes de permitirle un cambio

Estoy codificando un formulario en vba Excel.

Necesito que al cambiar el valor de un combobox, me chequee si es que hubo cambios en algunos textbox que puedo haber llenado previamente y, en caso de encontrarlos, me muestre un mensaje de aviso vbYesNo, cuya respuesta me permita:

  • VbYes: Impedir el cambio de valor del combobox y primero guardar los cambios de los textbox en una hoja.
  • VbNo: Descartar los cambios de los textbox y permitir el cambio de valor del combobox

1 Respuesta

Respuesta
2

Coloca esta macro en tu formulario para el control Combobox. Ajusta el nombre del resto de tus controles.

Aquí estoy imaginando que se volcarán los datos de un combo de 2 columnas a los textbox... si no es tu caso eliminá las 2 últimas instrucciones.

Private Sub ComboBox1_Change()
'x Elsamatilde
'si se limpia el combo no se ejecuta
If ComboBox1 = "" Then Exit Sub
If TextBox1 <> "" Or TextBox2 <> "" Then
    sino = MsgBox("Los campos contienen aún información. ¿Deseas guardar primero esos valores?", vbQuestion + vbYesNo, "Confirmar")
    If sino = vbYes Then
        MsgBox "El proceso se cancela... guarda primero los textbox."
        Exit Sub
    End If
End If
'se imagina que se vuelcan las 2 col del combo a los controles
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 0)
TextBox2 = ComboBox1.List(ComboBox1.ListIndex, 1)
End Sub

Sdos y no olvides valorar la consulta (opciones: excelente o buena)

Elsa

* Te invito a conocer mi nuevo manual de Userforms

¡Gracias por tu aporte, Elsa!!!

Aunque no he probado tu macro, confío en que funcionaría.

No obstante, en lugar de desencadenar la macro si dejo vacío el valor del combobox, lo que necesito es que controle si elijo otro de sus valores desplegables.

Por ejemplo: si inicialmente he seleccionado "enero" y luego he ingresado informacion en algunos textbox y por último cambio el combobox a "febrero" sin haber grabado los valores de los textbox, entonces muestre el vbyesno.

Si le respondo vbyes, que el valor de combobox, vuelva a "enero" y grabe los textbox y luego acepte "febrero".

En cambio si le respondo vbno, que pase por alto la grabación y permita el cambio a "febrero".

Cuando lo pruebes verás que eso es lo que hace la macro. Cuando el combo queda vacío no se ejecuta.

Sdos!

Ok. Gracias.

Pero haría lo mismo en caso que no quedara vacío; sino que cambio por otro valor?

Si, ya que estarías haciendo un Change.

¡Gracias, Elsa! 

Salvo pequeñas adaptaciones que lógicamente tuve que hacerle a tu código, todo funcionó de mil maravillas.

Hasta la próxima consulta....!!!!.-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas