Búsqueda en combobox y mostrar en label

Disculpen pero esta pregunta la puse en Visual Basic y era en Microsoft Excel asi que elimine a anterior pregunta y la puse aquí...

Para Dan

Tengo el siguiente problema

Tengo dos combobox

1.Comboboxcodigo_reb= se carga de la columna A

2.Comboboxlote_reb=se carga de la columna B

Y un label

Al elegir un dato del comboboxcodigo_reb se carga el comboboxlote_reb esto dependiendo de la columna G si son mayores o igual que cero hasta ahí todo bien..

Lo que deseo es que al elegir un dato del comboboxlote_reb en el label muestre el resultado. Saltándose los resultados de búsquedas con cero...

El siguiente código lo saque de todoexpertos

La idea es comparar los dos combobox saltándose los ceros de la columna G y mostrar el dato en el labelcantidad de la columna D ... Esto lo haría seleccionando un dato del comboboxlote_reb

Private Sub ComboBoxLote_Reb_Change()Dim fila As LongHoja4.SelectIf ComboBoxLote_Reb.Value <> "" Then                If Not ComboBoxLote_Reb.ListCount = -1 Then                    fila = ComboBoxLote_Reb.ListIndex + 2                        LabelCantidad_Reb = Range("G" & fila)                End If                Else                    LabelCantidad_Reb = ""                       End IfEnd Sub

1 respuesta

Respuesta
1

Te regreso la macro

Private Sub ComboBoxLote_Reb_Change()
'Act.Por.Dante Amor
    Hoja4.Select
    LabelCantidad_Reb = ""
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If Cells(i, "A") = Comboboxcodigo_reb And _
            Cells(i, "B") = ComboBoxLote_Reb Then
            If Cells(i, "G") > 0 Then
                LabelCantidad_Reb = Cells(i, "G")
                Exit Sub
            End If
        End If
    Next
End Sub

Si los datos que están en los combos son números y en las celdas también son números entonces tienes que utilizar la función Val:

Private Sub ComboBoxLote_Reb_Change()
'Act.Por.Dante Amor
    Hoja4.Select
    LabelCantidad_Reb = ""
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If Cells(i, "A") = Val(Comboboxcodigo_reb) And _
            Cells(i, "B") = Val(ComboBoxLote_Reb) Then
            If Cells(i, "G") > 0 Then
                LabelCantidad_Reb = Cells(i, "G")
                Exit Sub
            End If
        End If
    Next
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Buenas Dan

Primero mi mas sentido pésame y mucha fuerza para Ud y familia!!

Dan:

Sabes que la macro funciona pero el problema es que 

En el comboboxlote_reb los datos se pueden repetir y al buscar el valor asociado al seleccionarlo busca el primer dato de la columna G

ejemplo

Comboboxcodigo_Reb        comboboxlote_reb                            Columna G

e2120                                            321                                                          123

                                                      r2156                                                       28

                                                       321                                                           36

                                                        p43                                                          21

                                                      r2156                                                        1

                                                        321                                                           88

Si eleijo en el comboboxlote_reb el valor 321  pero el segundo 321 me aparece en el labelCantidad_reb 123 y no 36 lo mismo para si eleijo r2156......

Espero me puedas ayudar

Gracias

Saludos


Y cuál quieres que te aparezca, ¿el primero? ¿El segundo? ¿El último?

Si quieres que te aparezca el último, quita esta línea de la macro

Exit Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Dan 

La idea es si elijo el primero me aparezca el valor que esta en G  si elijo el segundo que aparezca el valor asociado a la misma fila donde esta el valor del comboboxlote_reb mayor a cero

Ej

Comboboxcodigo_Reb        comboboxlote_reb                            Columna G

e2120                                            321                                                          123

24                                                      r2156                                                       28

 12                                                     321                                                           36

                                                        p43                                                          21

                                                      r2156                                                        1

                                                        321                                                           88

Primero selecciono en el comboboxcodigo_reb el valor Ej :e2120 luego en el comboboxlote_reb me aparecen los datos asociados al combooboxcodigo_reb .

Al elejir e2120 y luego escojo el valor 321 en el label aparezca 123 ya que esta en la misma fila si elijo el siguiente 321 me tendria que aparecer en el label 36 porque esta en la misma fila....

El problema es que al haber datos repetidos en el comboboxlote_reb toma siempre el primer valor e la columna G...

Gracias

Lo que pides, sí se puede hacer, para eso necesito que me envíes tu archivo para ver cómo se están cargando los datos en los combos.

Por otra parte lo que estás haciendo no es práctico, ya que en el comboboxlote_reb solamente ves:

321

321

Cómo sabes que el primer 321 tiene un 123, y que el segundo 321 tiene un 36; simplemente no lo sabes, estás buscando a ciegas.

Lo que te recomiendo es: Opción 1, que pongas en el comboboxlote_reb dos columnas, en la primera columna el Lote y en la segunda columna el dato de la columna G, de esta forma estarías viendo el Lote y el valor de la columna G al mismo tiempo. Opción 2, en lugar del comboboxlote_reb, utiliza el listbox, para eso es el control listbox, para que en una lista puedas ver varios valores.

Esa es mi recomendación, funcionaría mucho mejor que lo que estás pidiendo, pero tú dime qué es lo que te hago.

Dan

Tienes razón ya que se sabe que dato mostrar .. ¿Le envío mi archivo o lo puede hacer sin que se lo envíe? ... ¿Eso de las dos columnas me gusto pero en el comboboxlote_reb se puede hacer que me deje el valor de la columna G oculta pero que si la muestre en el label?

Saludos

Te anexo el código actualizado

Private Sub ComboBoxCodigo_Reb_Change()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Dim myrange As Range, i As Integer, Celdi As Range, NameCeldi
    i = Sheets("Registros").Range("A" & Rows.Count).End(xlUp).Row
    Set myrange = Sheets("Registros").Range("A1:A" & i)
    ComboBoxLote_Reb.Clear
    Set Celdi = myrange.Find(What:=ComboBoxCodigo_Reb.Text)
    If Not Celdi Is Nothing Then
        NameCeldi = Celdi.Address
        Do
            If Cells(Celdi.Row, "G") >= 0 Then
                With ComboBoxLote_Reb
                    .AddItem Sheets("Registros").Range("B" & Celdi.Row)
                    .Column(1, .ListCount - 1) = Celdi.Row
                End With
            End If
            Set Celdi = myrange.FindNext(Celdi)
       Loop While Not Celdi Is Nothing And Celdi.Address <> NameCeldi
    End If
    If ComboBoxLote_Reb.ListCount > 0 Then
        With ComboBoxLote_Reb
            .Visible = True
            .ListIndex = 0
        End With
    End If
    Application.ScreenUpdating = True
End Sub

Falta este código

Private Sub ComboBoxLote_Reb_Change()
'Por.Dante Amor
    LabelCantidad_Reb = ""
    fila = ComboBoxLote_Reb.List(ComboBoxLote_Reb.ListIndex, 1)
    LabelCantidad_Reb = Hoja4.Cells(fila, "G")
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

Dan 

Se cae el programa al elegir otro dato del comboboxcodigo_reb

Al seleccionar un dato en el comboboxcodigo_reb y luego en el comboboxlote_reb me muestra en el label pero si quiero seleccionar otro dato en el comboboxcodigo_reb se cae

en

Private Sub ComboBoxLote_Reb_Change()
'Por.Dante Amor
    LabelCantidad_Reb = ""
aqui marca el error   fila = ComboBoxLote_Reb.List(ComboBoxLote_Reb.ListIndex, 1)
    LabelCantidad_Reb = Hoja4.Cells(fila, "G")
End Sub

Saludos

Cambia el código por esto:

Private Sub ComboBoxLote_Reb_Change()
'Por.Dante Amor
    LabelCantidad_Reb = ""
    If ComboBoxLote_Reb.ListCount > 0 Then
        fila = ComboBoxLote_Reb.List(ComboBoxLote_Reb.ListIndex, 1)
        LabelCantidad_Reb = Hoja4.Cells(fila, "G")
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas