PROGRAMAR EN VBA MACROS PARA EXCEL

Como Abrir Formularios Desde un Listbox






Me preguntan en un foro Como Abrir un Formulario Desde un Listbox de Excel donde se listan los formularios de una macro, el ejemplo muestra como listar unas serie de formularios que componen una aplicación de Excel programada en VBA, luego cargar el el nombre de los Formularios en un Listbox de Excel y  abrir los formularios haciendo click en el item del Listbox que tiene el nombre del formulario.

Si estás trabajando con listbox quizás quieras aprender más sobre este objeto de VBA para Excel, en el link encontrarás muchos ejemplos que serán de utilidad relacionados con listbox de Excel, no olvides suscribir al canal de YouTube para pode recibir una notificación cuando exista nuevo contendido.

Si te estás iniciando en la operación de Excel o requieres afirmar conocimientos, recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Suscribe a nuestro canal para que YouTube te avise cuando se suba nuevo contenido al canal, en el vídeo encontrarás una explicación gráfica y detallada del ejemplo que se muestra en este post.






 


El ejemplo es bastante simple y útil permite subir el nombre de los formulario en un Listbox de Excel, hacer click en el item que contiene el nombre del formulario y abrir el formulario, normalmente cuando se hace click en un item es para buscar en la base de datos o guardar el dato que está en el listbox en una base de datos, pero en este caso se usará para abrir un formulario.

En este ejemplo los formularios se usan con el nombre por defecto, es decir Userform1, Userform2, Userform2.... UserformX, cuando se inicia el formulario 1 por medio de un bucle que carga en el listbox el nombre de los formularios, el bucle que realizar lo mencionado es el siguiente:

For i = 2 To 6
       Me.ListBox1.AddItem "Userform" & i

Next i

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Como Recorrer una Cadena de Caracteres


Como Crear una Factura Guardar en la Base de Datos en PDF en XLSX y Enviar por MAIL

Como hacer un link o hiperlink a google maps con Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Luego en el evento Doble Click del Listbox que está en el formulario 1 y donde se han cargado los nombres de los distintos formulario, al hacer doble click en el item del Listbox de Excel con el nombre del formulario procede a abrir dicho Formulario de Excel, eso se hace con el siguiente código:

fila = UserForm1.ListBox1.ListIndex
formu = a.List(fila)
UserForms.Add(formu).Show

El primer código determinar cual es el número de fila en la cual se ha hecho doble click, el código siguiente en la variable "formu" se guarda el nombre del item seleccionado, que en este caso contendrá el nombre del formulario que se requiere abrir, luego el siguiente código permite abrir el formulario seleccionado, cuyo nombre estaba en el item elegido del listbox.

Seguidamente se muestra tódo el código contendido en el ejemplo que se puede descargar desde el final del post y cuyo ejemplo fue denominado Como Abrir Formularios Desde un Listbox.


Código que se inserta en un Formulario 1 de Excel

'**************https://programarexcel.com  **** https://youtube.com/programarexcel*********



Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Set a = UserForm1.ListBox1
fila = UserForm1.ListBox1.ListIndex
formu = a.List(fila)
UserForms.Add(formu).Show
End Sub

Private Sub UserForm_Initialize()
For i = 2 To 6
       Me.ListBox1.AddItem "Userform" & i
Next i
End Sub

Código que se inserta en un Formulario 2 de Excel

Private Sub Label1_Click()
ActiveWorkbook.FollowHyperlink "https://www.programarexcel.com"
End Sub

Private Sub Label2_Click()
ActiveWorkbook.FollowHyperlink "https://www.youtube.com/c/programarexcel?sub_confirmation=1"
End Sub

Código que se inserta en un Formulario 3 de Excel

Private Sub Label1_Click()
ActiveWorkbook.FollowHyperlink "https://www.programarexcel.com"
End Sub

Private Sub Label2_Click()
ActiveWorkbook.FollowHyperlink "https://www.youtube.com/c/programarexcel?sub_confirmation=1"
End Sub



Código que se inserta en un Formulario 4 de Excel

Private Sub Label1_Click()
ActiveWorkbook.FollowHyperlink "https://www.programarexcel.com"
End Sub

Private Sub Label2_Click()
ActiveWorkbook.FollowHyperlink "https://www.youtube.com/c/programarexcel?sub_confirmation=1"
End Sub


Código que se inserta en un Formulario 5 de Excel

Private Sub Label1_Click()
ActiveWorkbook.FollowHyperlink "https://www.programarexcel.com"
End Sub

Private Sub Label2_Click()
ActiveWorkbook.FollowHyperlink "https://www.youtube.com/c/programarexcel?sub_confirmation=1"
End Sub


Código que se inserta en un Formulario 6 de Excel

Private Sub Label1_Click()
ActiveWorkbook.FollowHyperlink "https://www.programarexcel.com"
End Sub

Private Sub Label2_Click()
ActiveWorkbook.FollowHyperlink "https://www.youtube.com/c/programarexcel?sub_confirmation=1"
End Sub



Código que se inserta en un módulo

'**************https://programarexcel.com  **** https://youtube.com/programarexcel*********

#If VBA7 And Win64 Then

'Si es de 64 bits

Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr

Public Declare PtrSafe Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr

Public Declare PtrSafe Function GetWindowLongPtr Lib "USER32" Alias "GetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr

Public Declare PtrSafe Function SetWindowLongPtr Lib "USER32" Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr

Public Declare PtrSafe Function DrawMenuBar Lib "USER32" (ByVal hwnd As Long) As LongPtr

Public Declare PtrSafe Function RegOpenKeyA Lib "advapire32.dll" (ByVal hKey As LongPtr, ByVal lpSubKey As String, phkResult As LongPtr) As LongPtr

#Else

'Si es de 32 bits

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Declare Function DrawMenuBar Lib "USER32" (ByVal hwnd As Long) As Long

Public Declare Function RegOpenKeyA Lib "advapire32.dll" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

#End If

Sub muestra1()

UserForm1.Show

End Sub

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends