Cómo lanzar varios formularios al presionar dos veces una celda en un hoja de
Excel, por ejemplo, cómo puedes observar en la imagen inferior, si presionamos
dos veces en cualquier celda de la columna B ya nos muestra el
formulario 02, pero si presionamos en la columna A se cierra el
que teníamos abierto para mostrarse el formulario 01, entonces
¿Cómo lanzar o cerrar formularios dependiendo del tipo de celda que
presionemos?, si te interesa aprender de este tema, te invitamos a revisar este artículo
que te traemos con todo el código necesario para tal efecto.
El efecto terminado es el siguiente:
Preparando lo necesario
Primero identificamos nuestras columnas a ser utilizadas, en este ejemplo
hemos tomado como referencia a la columna A para mostrar el
formulario 01 y en toda la columna B para mostrar el
formulario 02. En segundo lugar en nuestro editor de
Visual Basic insertamos dos formularios.
Códigos a implementar
Básicamente para implementar el código vamos a usar el evento BeforeDoubleClick de la hoja activa. Para eso nos vamos al nombre de la hoja y con doble clic
ingresamos dentro de la hoja1, aquí seleccionamos al objeto
WorkSheet, luego en la lista de eventos seleccionamos al evento
BeforeDoubleClick, es en este evento que estaremos programando una
macro para que nos permita lanzar cada formulario en su respectiva columna al
presionar dos veces clic en una celda de la columna A o de la columna
B. Básicamente este evento BeforeDoubleClick nos permite
ejecutar una macro siempre y cuándo se presione dos veces la misma celda de
Excel.
Para poder mostrar el formulario 01 en toda la columna A usamos
el siguiente código:
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then 'Restringimos solo a la columna A
Cancel = True 'Cancelamos la ejecución del código en otras celdas
UserForm2.Hide 'Cerramos el formulario 02
UserForm1.Show 'Lanzamos el formulario 01
End If
El código entre el evento BeforeDoubleClick de la hoja de Excel
es:
Para poder mostrar el formulario 02 en toda la
columna B usamos el siguiente código:
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then 'Restringimos solo a la columna B
Cancel = True 'Cancelamos la ejecución del código en otras celdas
UserForm1.Hide 'Cerramos el formulario 01
UserForm2.Show 'Lanzamos el formulario 02
End If
El código entre el evento BeforeDoubleClick de la hoja de
Excel es:
Al juntar el código de los dos formularios tanto para la columna A cómo
para la columna B el código implementado final es:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then 'Restringimos solo a la columna A
Cancel = True 'Cancelamos la ejecución del código en otras celdas
UserForm1.Hide 'Cerramos el formulario 01
UserForm2.Show 'Lanzamos el formulario 02
End If
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
Cancel = True
UserForm1.Hide
UserForm2.Show
End If
End Sub
Cómo puedes observar es muy sencillo implementar varios formularios en una hoja de Excel y que esos sean mostrados en áreas específicas de la hoja de Excel. Puede ser implementado en varios eventos, no solamente cuándo se haga doble clic en la celda.