Pasar datos de un ListBox a varios Textbox con doble clic

Tengo un Userform que en un ListBox me muestra los datos que tengo en una hoja, este Userform tiene varios Combobox y Textbox, lo que quiero es que el dato que seleccione en el Listbox con doble clic, sea llevado a unos TextBox que tiene el formulario.

La macro es la siguiente:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'primero dejamos en blanco los combobox y textbox
Dim miCtrl
For Each miCtrl In UF_datos.Controls
If TypeName(miCtrl) = "TextBox" Then
miCtrl.Value = ""
End If
If TypeName(miCtrl) = "ComboBox" Then
miCtrl.Value = ""
End If
Next

'ahora indico la instrucción para que los datos del ListBox pasen a los TextBox con doble clic
If ListBox1.ListIndex < 0 Then Exit Sub

I = ListBox1.ListIndex

ComboBox1 = ListBox1.List(I, 0)
ListBox1 = ListBox1.List(I, 1)
ComboBox2 = ListBox1.List(I, 2)
ListBox3 = ListBox1.List(I, 3)
ListBox5 = ListBox1.List(I, 4)
ListBox6 = ListBox1.List(I, 5)

End Sub

Al ejecutar la macro me sale un error que dice que no he definido la variable, la idea es que los datos pasen a los TextBox, para poder con un botón sea eliminar el registro y con otro modificarlo.

1 Respuesta

Respuesta
1

H o l a:

¿Y cuál línea se detiene la macro?

Si tienes la instrucción "Option Explicit" al principio de la macro, tendrás que declarar todas las variables.

En tu caso te falta declarar la variable I.

Ahora, en tu macro tienes esto:

    ListBox1 = ListBox1.List(i, 1)
    ComboBox2 = ListBox1.List(i, 2)
    ListBox3 = ListBox1.List(i, 3)
    ListBox5 = ListBox1.List(i, 4)
    ListBox6 = ListBox1. List(i, 5)

Pusiste Listbox1, Listbox3, Listbox5 y Listbox6, supongo que debes poner textbox1, textbox2, textbox5 y textbox6.

Quedaría así:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    'primero dejamos en blanco los combobox y textbox
    Dim miCtrl
    Dim i
    For Each miCtrl In UF_datos.Controls
        If TypeName(miCtrl) = "TextBox" Or TypeName(miCtrl) = "ComboBox" Then
            miCtrl.Value = ""
        End If
    Next
    'ahora indico la instrucción para que los datos del ListBox pasen a los TextBox con doble clic
    If ListBox1.ListIndex < 0 Then Exit Sub
    i = ListBox1.ListIndex
    ComboBox1 = ListBox1.List(i, 0)
    TextBox1 = ListBox1.List(i, 1)
    ComboBox2 = ListBox1.List(i, 2)
    TextBox3 = ListBox1.List(i, 3)
    TextBox5 = ListBox1.List(i, 4)
    TextBox6 = ListBox1.List(i, 5)
End Sub

Revisa los siguientes comentarios sobre la declaración de variables:

Error en macro "No se encontró el método o el dato miembro"


':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas