Localizar datos a partir de una búsqueda anterior

Mi necesidad es la siguiente: Tengo un codigo para buscar un dato especifico a partir de un Cuadro Combinado el cual se carga con marcas de computadoras, lo que deseo es que al seleccionar la marca "X" se realice una busqueda y me muestre los modelos que se localizan justo debajo de cada marca.

DETALLO:

Al seleccionar la marca que me aparece en el Cuadro combinado, aplico el siguiente código:

Dato = MARK.Text

Set busco = Hoja1.Range("CB7:DE7").Find(Dato, LookIn:=xlValues, LookAt:=xlWhole)

   Me.MODEL.Clear

   For Each celda In H1.Range("columna localizada" & H1.Range("columna" & Rows.Count).End(xlUp).Row)

Como hago que en donde está lo marcado con negrita, el encuentre la lista que esta debajo de cada Dato dentro de las celdas que van de la CB7 a la DE7, osea, las CB8, 9, 10, 11... Ya que debajo de la celda CM7 (HUAWEI) está la lista de modelos por ejemplo: MATE 10 Pro (CM8), MATE 9 Plus (CM9), MATE 8 Plus (CM10)... Y QUE ESTOS RESULTADOS SEAN CARGADOS EN "MODEL" QUE ES CUADRO COMBINADO QUE NECESITO

2 Respuestas

Respuesta
1

Luego de la línea SET busco = .....

Agregá esta otra para guardar la columna encontrada:

colx = busco.Column

Esa será tu variable para indicar la col.


Private Sub MARK_AfterUpdate()
    Dato = MARK.Text
    Set busco = H1.Range("CB7:DE7").Find(Dato, LookIn:=xlValues, LookAt:=xlWhole)
    colx = busco.Column
        Me.MODEL.Clear
        For Each celda In H1.Range(Column & H1.Range(Column & Rows.Count).End(xlUp).Row)
        If celda <> Empty Then MODEL.AddItem celda.Value
        Next
End Sub

Me da el siguiente error: Se ha producido el error '91' en el tiempo de ejecución:

Variable de objeto o bloque With no establecido

Es que tu texto "columna localizada" lo debes reemplazar por la variable colx y no por la palabra Column.

Tampoco es correcta la instrucción con la que llenas el desplegable... probalo de este modo:

For Each celda In H1.Range(Cells(8, colx), Cells(Cells(Rows.Count, colx).End(xlUp).Row, colx))

Sdos!

me da el error ahí!

¿Y qué mensaje de error te da?

¿Quizás tengas la declaración de variables como obligatoria?

Se ha producido el error '91' en el tiempo de ejecución:

Variable de objeto o bloque With no establecido

Parece que tu macro falla en varias líneas... no solamente necesitas la instrucción para encontrar una columna.

Es posible que no haya encontrado el valor buscado y no estás controlando que busco pueda estar vacío, además que tampoco arreglaste aún la línea del For.

Private Sub MARK_AfterUpdate()
Dato = MARK.Text
Set busco = h1.Range("CB7:DE7").Find(Dato, LookIn:=xlValues, LookAt:=xlWhole)
'si encontró el título
If Not busco Is Nothing Then
    colx = busco.Column
    MODEL.Clear
    'si hay datos bajo el título los agrega al combo
    If Cells(Rows.Count, colx).End(xlUp).Row > 7 Then
        For Each celda In h1.Range(Cells(8, colx), Cells(Cells(Rows.Count, colx).End(xlUp).Row, colx))
            If celda <> Empty Then MODEL.AddItem celda.Value
        Next
    End If
Else
    MsgBox "No se encuentra el dato buscado."
End If
End Sub

Sdos!

Prácticamente lo transcribí, no me da el error pero me da el combo box vacío!

La imagen no da idea de lo que estamos tratando... Debieras mostrarme la hoja.

La macro hace lo que necesitabas: encontrar la col donde aparece el texto buscado y luego llenar un combobox con los datos que se encuentran debajo.

¿Tampoco veo si la transcribiste correctamente... que tal si me envias el libro y no seguimos perdiendo tiempo?

Sdos!

Listo, lo envíe a tu correo!

Elsa Matilde Meyer ([email protected])

Listo, lo envíe a tu correo!

Elsa Matilde Meyer ([email protected])

Tu macro buscaba las marcas en fila 7:

Set busco = Hoja1.Range("CB7:DE7").Find(Dato, LookIn:=xlValues, LookAt:=xlWhole)

Pero tus datos están en fila 6:

Por lo tanto debes ajustar las referencias de fila en la macro enviada, o volverla a copiar desde aquí:

Private Sub MARK_AfterUpdate()
    Dato = MARK.Text
    Set busco = H1.Range("CB6:DE6").Find(Dato, LookIn:=xlValues, LookAt:=xlWhole)
    If Not busco Is Nothing Then
        colx = busco.Column
        MODEL.Clear
        If Cells(Rows.Count, colx).End(xlUp).Row > 6 Then
            For Each celda In H1.Range(Cells(7, colx), Cells(Cells(Rows.Count, colx).End(xlUp).Row, colx))
                If celda <> Empty Then MODEL.AddItem celda.Value
            Next
        End If
    Else
    End If
End Sub

Sdos!

Respuesta

Estos ejemplos podrían orientarte

https://youtu.be/KCHAk9-dAPM

https://youtu.be/sWrUt9kItsg 

https://youtu.be/7c7mV8fe4sw

https://youtu.be/XtfABrA1loQ

visita https://programarexcel.com descarga ejemplos de macros GRATIS

suscribe https://youtube.com/programarexcel tutoriales sobre macros

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas