No se que nombre darle a esto... AYUDA
Tengo un form con un listbox de 5 columnas que son: apellido1, apellido2, nombre1, nombre2, id. En ese mismo orden.
Esas 5, ahora tengo un botón que me carga los datos de la hoja excel que se llama "BaseDeDatos", al listbox, tengo también un combobox con una lista de apellidos que al seleccionar presiono otro botón y me filtra los datos que había cargado al listbox. Eso funciona perfecto. Ahora tengo una linea de códigos que agregue a la programación del listbox que hace que al seleccionar o pinchar una linea de datos del listbox, me envíe el primer dato de esa linea seleccionada a una hoja del excel, osea me envía el apellido1 de la linea que seleccione. Eso es lo que quiero hacer, pero necesito que envés de tirarme el apellido1, me tire el ID. Solo eso y no se como hacerlo.
Esta es la configuración del listbox
Sheets("Hoja1").Unprotect
Sheets("Hoja1").Range("A2").Value = ListBox1.Value <===esta es la k uso para tirar apellido 1 a una hoja de excel, no se k cambiar)
esta es la del boton k filtra lo k escribo en el combo
Application.ScreenUpdating = False '<--- adaptacion
nombre = ComboBox1
Sheets("BaseDeDatos").Unprotect
Sheets("BaseDeDatos").Activate
Cells.EntireRow.Hidden = False
uf = Range("A" & Cells.Rows.Count).End(xlUp).Row
If nombre = "" Then Exit Sub
'==========================adaptacion===============================
ListBox1.RowSource = "": ListBox1.ColumnCount = 5
Dim Datos(23, 3) 'dimensiones de la matriz
For fil = 0 To uf
For j = 0 To 3
If Range("A" & fil + 2) <> nombre Then
'oculta las filas
Rows(fil + 2 & ":" & fil + 2).EntireRow.Hidden = True
Else 'si es igual,entonces
'agrega los datos a la matriz
Datos(fil, j) = Cells(fil + 2, j + 1)
End If
Next j
Next fil
ListBox1.List = Datos 'carga el listbox con la matriz(24 filas y 4 col)
'depura el listbox con datos vacios :D
For i = ListBox1.ListCount - 1 To 0 Step -1
On Error Resume Next
If ListBox1.List(i) <> ComboBox1 Then ListBox1.RemoveItem (i)
Next
'========================fin de adaptacion===========================
Sheets("Hoja1").Activate
y esta la del boon que me carga los datos al listbox
Dim rngRango As Range
Set rngRango = Worksheets("BaseDeDatos").Range("A2:E30")
Me.ListBox1.ColumnCount = rngRango.Columns.Count
Me.ListBox1.RowSource = rngRango.Address(external:=True)
Set rngRango = Nothing
Esas 5, ahora tengo un botón que me carga los datos de la hoja excel que se llama "BaseDeDatos", al listbox, tengo también un combobox con una lista de apellidos que al seleccionar presiono otro botón y me filtra los datos que había cargado al listbox. Eso funciona perfecto. Ahora tengo una linea de códigos que agregue a la programación del listbox que hace que al seleccionar o pinchar una linea de datos del listbox, me envíe el primer dato de esa linea seleccionada a una hoja del excel, osea me envía el apellido1 de la linea que seleccione. Eso es lo que quiero hacer, pero necesito que envés de tirarme el apellido1, me tire el ID. Solo eso y no se como hacerlo.
Esta es la configuración del listbox
Sheets("Hoja1").Unprotect
Sheets("Hoja1").Range("A2").Value = ListBox1.Value <===esta es la k uso para tirar apellido 1 a una hoja de excel, no se k cambiar)
esta es la del boton k filtra lo k escribo en el combo
Application.ScreenUpdating = False '<--- adaptacion
nombre = ComboBox1
Sheets("BaseDeDatos").Unprotect
Sheets("BaseDeDatos").Activate
Cells.EntireRow.Hidden = False
uf = Range("A" & Cells.Rows.Count).End(xlUp).Row
If nombre = "" Then Exit Sub
'==========================adaptacion===============================
ListBox1.RowSource = "": ListBox1.ColumnCount = 5
Dim Datos(23, 3) 'dimensiones de la matriz
For fil = 0 To uf
For j = 0 To 3
If Range("A" & fil + 2) <> nombre Then
'oculta las filas
Rows(fil + 2 & ":" & fil + 2).EntireRow.Hidden = True
Else 'si es igual,entonces
'agrega los datos a la matriz
Datos(fil, j) = Cells(fil + 2, j + 1)
End If
Next j
Next fil
ListBox1.List = Datos 'carga el listbox con la matriz(24 filas y 4 col)
'depura el listbox con datos vacios :D
For i = ListBox1.ListCount - 1 To 0 Step -1
On Error Resume Next
If ListBox1.List(i) <> ComboBox1 Then ListBox1.RemoveItem (i)
Next
'========================fin de adaptacion===========================
Sheets("Hoja1").Activate
y esta la del boon que me carga los datos al listbox
Dim rngRango As Range
Set rngRango = Worksheets("BaseDeDatos").Range("A2:E30")
Me.ListBox1.ColumnCount = rngRango.Columns.Count
Me.ListBox1.RowSource = rngRango.Address(external:=True)
Set rngRango = Nothing
Respuesta de antares18
1