TextBox de consulta en ListBox al dar clic en item ListBox muestre Imagen

Como estas.?

Vi una respuesta de tu parte a una consulta en el 2014 referente a este tema, me ayudo mucho.

Me funciona genial pero espero y puedas ayudarme por favor, tengo una tabla en la cual la tengo diseñada de esta forma: Lote, Producto, Entradas, Salidas, Stock y Unidad.

Te anexo la tabla:

Te anexo el formulario en ejecución:

El esta en lo siguiente: al darle clip en el ListBox me toma de referencia el lote para buscar la imagen y no el nombre del producto, quisiera que tomara el nombre puesto que, puede haber un producto con muchos lotes y debe tener una misma imagen.

Este es el código: 

Private Sub ListBox1_Click()
'Por.Dante Amor
imagen = ListBox1.List(ListBox1.ListIndex) & ".jpg"
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & imagen)
End Sub

Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Sheets("Productos").Select
Range("C8").Select
ListBox1.Clear
While ActiveCell.Value <> ""
M = InStr(1, UCase(ActiveCell.Value), UCase(TextBox1.Text))
If M > 0 Then
ListBox1.ColumnCount = 6
ListBox1.AddItem
ActiveCell.Offset(0, -1).Select
ListBox1.List(ListBox1.ListCount - 1, 0) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 1) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 2) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 3) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 4) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 5) = ActiveCell.Value

ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 6) = ActiveCell.Value

ActiveCell.Offset(0, -5).Select
End If
ActiveCell.Offset(1, 0).Select

Wend
End Sub

Private Sub UserForm_Click()
Application.ScreenUpdating = False

Sheets("Productos").Select
Range("C8").Select

While ActiveCell.Value <> ""
ActiveCell.Offset(0, 50).Select

If ActiveCell.Value = 0 Then
ActiveCell.Offset(0, -50).Select
ListBox1.ColumnCount = 6
ListBox1.AddItem
ListBox1.List(ListBox1.ListCount - 1, 0) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 1) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 2) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 3) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 4) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 5) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 6) = ActiveCell.Value

ActiveCell.Offset(1, -6).Select
Else
ActiveCell.Offset(1, -50).Select
End If

Wend
End Sub

1 respuesta

Respuesta
1

Creo que Dante Amor ya no participa en el foro. Lo que entiendo es que quieres tomar la referencia a la segunda columna del ListBox, la cuestión esta en la siguiente línea:

imagen = ListBox1. List(ListBox1. ListIndex) & ".jpg"

El parámetro "Columna" al ser opcional y estar omitido, VBA asume que te refieres a la columna 0 (primera columna del ListBox)

Para referirte a la segunda, debes especificar un 1 en el parametro columna, asi:

imagen = ListBox1.List(ListBox1.ListIndex, 1) & ".jpg"

Con, (coma) 1

En programación los indices suelen comenzar en 0, por eso la segunda columna es 1

Andy

¡Gracias! Andy problema resuelto nuevamente millón de gracias. Dios te bendiga. Aun me queda pendiente que al momento de dar de alta no me permita si tiene stock cero. Estaré consultando si no puedo. Ya llevo 3 días investigando con ensayos y errores y no he podido jajaja. Si no puedo mañana te molesto nuevamente para que me ayudes porfa.

Sera un placer ayudarte. Si me permites una observavion, la manera en que cargas el listbox no es optima. Puede mejorarse bastante. El objeto ActiveCell y el método Select son pésimos en cuanto a rendimiento, se recomienda evitarlos siempre. Pero si te funciona y no quieres hacer cambios dejalo así, solo que cuando tengas una tabla enorme comemzaras a darte cuenta.

¡Gracias!  Sería un honor para mí que me ayudes, si gustas pásame su correo para enviar el archivo

[email protected]

Ahora mismo no podre hacer mucho pero mandalo y mas tarde lo revisare

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas