Cargar datos en mi ListBox mediante ComboBox y el comboBox capture la primera fila de datos de mi hoja.

Soy bastante novado y no se si es posible realizar lo que yo quiero realizar, espero poder explicarme bien.

Tengo en mi hoja12 (Productos) unos datos en 7 columnas y lo que pretendo es que mi ComboBox al poner GRUPO1 cargue mi ListBox de mi columna A y si pongo GRUPO 2 cargue mi ListBox de mi columna B y así sucesivamente.

Y desde CommandButton pueda borrar el contenido de una celda y desde otro CommandButton pueda modificar.

En cada columna he creado una tabla

1
Respuesta
2

Puedes poner una imagen de los datos que tienes en tu hoja12, procura que se vean las filas y las columnas de excel.

Hola Dante Amor

Te adjunto los datos de la hoja12

Gracias por el interés

Pon el siguiente código en tu userform

Private Sub ComboBox1_Change()
    If ComboBox1.Value = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Then Exit Sub
    col = ComboBox1.ListIndex + 1
    uf = Cells(Rows.Count, col).End(xlUp).Row
    ListBox1.List = Range(Cells(2, col), Cells(uf, col)).Value
End Sub
'
Private Sub UserForm_Activate()
    'Cargar datos en el combo
    uc = Cells(1, Columns.Count).End(xlToLeft).Column
    ComboBox1.List = WorksheetFunction.Transpose(Range("A1", Cells(1, uc)))
End Sub


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Hola Dante

Lo he probado me da un erro, creo que le falta donde tiene que ir a buscar los datos.

ComboBox1.List = WorksheetFunction.Transpose(Range("A1", Cells(1, uc)))

Atentamente

Tienes que ejecutar el form sobre la hoja que me mostraste en la imagen

Ok, ya carga el ListBox, pero cuando seleccionas uno en el ListBox , no es el que he seleccionado cuando abro otro UserForm  el TextBox para modificar el texto.

Tan poco puedo eliminarlo con el CommandButton

Os paso todos los códigos

Private Sub ComboBox1_Change()
If ComboBox1.Value = "" Then Exit Sub
If ComboBox1.ListIndex = -1 Then Exit Sub
col = ComboBox1.ListIndex + 1
uf = Cells(Rows.Count, col).End(xlUp).Row
ListBox3.List = Range(Cells(2, col), Cells(uf, col)).Value
End Sub

Private Sub CommandButton8_Click()
'Abrir el formulario para modificar
Sheets("Productos").Select
If Me.ListBox3.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "Esteve"
Else
frmModeloModi2.Show
End If
End Sub

Private Sub CommandButton9_Click()
'Eliminar el registro
Sheets("Productos").Select
If Me.ListBox3.ListIndex < 0 Then
MsgBox "No se ha elegido ningún registro", vbExclamation, "Esteve"
Else
Pregunta = MsgBox("Está seguro de eliminar el registro?", vbYesNo + vbQuestion, "Esteve")
If Pregunta = vbYes Then
ActiveCell.EntireRow.Delete
End If
End If

End Sub

'
Private Sub UserForm_Activate()
Sheets("Productos").Select
'Cargar datos en el combo
uc = Cells(1, Columns.Count).End(xlToLeft).Column
ComboBox1.List = WorksheetFunction.Transpose(Range("A1", Cells(1, uc)))
End Sub

Gracias por la atención

Ya he visto que me faltaba programar el listBox para poder seleccionar.

Te lo adjunto el código

Private Sub ListBox3_Click()
'Activar la celda del registro elegido
Sheets("Productos").Select
Range("A2").Activate
Cuenta = Me.ListBox3.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
If Me.ListBox3.Selected(i) Then
Valor = Me.ListBox3.List(i)
Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
End If
Next i
End Sub

Ahora surge el problema que en las columnas de mi Hoja12 hay nombres iguales en las columnas y cuando quiero modificar uno de ellos no es el de la columna que yo quiero socorro como lo hago.

Vamos un paso a la vez.

Esta es tu primera petición:

Cargar datos en mi ListBox mediante ComboBox y el comboBox capture la primera fila de datos de mi hoja.

Esa petición ya está resuelta. Si tienes columnas con el mismo nombre de columna, solamente cambia el nombre.


Con gusto te ayudo con todas tus peticiones. Valora esta respuesta, al final de mi respuesta hay un botón para valorar: "Votar" o "Excelente".

Crea una pregunta por cada petición y la reviso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas