BuscarV Multiples Opciones

27/05/2004 - 00:19 por Compumakro | Informe spam
Amigos:
La función BuscarV, (aunque no he tenido mucho contacto con ella) la
necesito ahora, pero de selección múltiple.

A B C D
Artículo Clase Voltage Precio
Lampara Escrit 110 20
Bombillo Elect 110 25
Lampara Port 12 15
Bombillo Halog 12 10
Bombillo Pare 6 8
Lampara Mano 6 10

En otra hoja y en la celda B2 tengo que poner la fórmula, en ella debo
Buscar "Bombillo" y debe visualizar (Como un Cuadro Combinado) todas las
opciones de "Bombillo" y se pueda seleccionar el "Bombillo" buscado y se
completen en consecuencia las celdas de dicha fila con los datos.
En la tabla de ejemplo hay varios Bombillo y varios Lampara.

Muchas Gracias

Oscar
Barranquilla

Preguntas similare

Leer las respuestas

#6 Compumakro
02/06/2004 - 13:35 | Informe spam
Hector Miguel:
Todo funciona perfectamente. Solo que hay que ser muy cuidadoso en cada paso
porque un click fuera de secuencia, emerge un mensaje "Se ha producido un
error "380" en tiempo de ejecución".
De todas formas, me siento muy bien servido.
un abrazo
Oscar
Barranquilla


"Héctor Miguel" escribió en el mensaje
news:eRWH0$
hola, Oscar !

> ... me he tropezado con una "Pared" ... se me esfumaron el ComboBox1 y


el ListBox.1 [...]
> Se que me ganare un "Jalon de orejas" si no entendi.

'pues'... una parte porque no 'entendiste' y 'otra'... porque no


explicaste 'la situacion' =>completa<= :((
=> el combobox + el listbox + el codigo... 'van' =>todos<= en el modulo de


codigo de la hoja 'factura' ;)
=> los datos 'a listar'... 'se leen' de la hoja con los articulos y sus


descripciones, precios, etc.
=> el codigo lo he 'adaptado' debido a que tienes celdas 'combinadas' [en


el formato de factura] :((
=> los siguientes son los 'cambios' [que 'tienes que' hacer] ;)
1.- estando en 'modo de diseño' [barra de herramientas 'cuadro de


controles' / boton 'modo de diseño']...
'corta' el combobox y el listbox [de la hoja de los articulos] y...
'pegalos' =>en la hoja con el formato de la factura<= [no te


preocupes 'ahorita' por 'donde quedan'] ;)
2.- en el editor de vba, en la ventana de las propiedades, =>modificales<las siguientes:
ComboBox1:
- Height -> 18
- SelectionMargin -> False
- Width -> 73.5
ListBox1:
- ColumnCount -> 3
- ColumnWidths -> 256;87;65
- Height -> 63
- Width -> 424.5
3.- 'regresa' a la hoja de calculo [no mas en vba] y 'termina' el modo de


diseño.
4.- 'pega' las lineas de codigo 'adaptadas' =>en el modulo de codigo de la


hoja de factura<>
¿comentas?
saludos,
hector.
- el codigo para el modulo de la hoja de la factura es.
Private Sub Worksheet_Activate(): ActualizarCombo: End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("b20:b39")) Is Nothing Then
With Me.ComboBox1
If Target <> "" Then .Text = Target Else .ListIndex = 0
.Left = Target.Left: .Top = Target.Top - 1: .Visible = True
End With
Else: Me.ComboBox1.Visible = False
End If
If Intersect(Target, Range("d20:g39")) Is Nothing Then
Me.ListBox1.Visible = False: Exit Sub
End If
With Me.ListBox1
If Target.Offset(, -2) <> "" Then
Call ActualizarLista: .Left = Target.Left: .Top = Target.Top:


.Visible = True
Else: .Visible = False
End If: End With
End Sub
Private Sub ActualizarCombo(): Dim Celda As Range, Elementos As New


Collection, Sig As Integer
Me.ComboBox1.Clear: Me.ComboBox1.AddItem "Seleccionar..."
With Worksheets("ARTICULOS")
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
On Error Resume Next: Elementos.Add Celda, CStr(Celda)
Next: End With
With Me.ComboBox1
For Sig = 1 To Elementos.Count: .AddItem Elementos.Item(Sig)
Next: .AddItem "Borrar": .ListIndex = 0: End With
End Sub
Private Sub ComboBox1_Change(): If Intersect(ActiveCell, Range("b20:b39"))


Is Nothing Then Exit Sub
With Me.ComboBox1
If .ListIndex > 0 Then
If .ListIndex = .ListCount - 1 Then
Range(ActiveCell, ActiveCell.Offset(, 7)).ClearContents:


.ListIndex = 0
ElseIf .Text <> ActiveCell Then
ActiveCell = .Text: Range(ActiveCell.Offset(, 1),


ActiveCell.Offset(, 7)).ClearContents
End If
ElseIf .ListIndex = 0 And ActiveCell <> "" Then
.Text = ActiveCell
End If: End With: SendKeys "{Esc}"
End Sub
Private Sub ActualizarLista(): Dim Celda As Range, Sig As Integer:


Me.ListBox1.Clear
With Worksheets("ARTICULOS")
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
If LCase(Celda) = LCase(ActiveCell.Offset(, -2)) Then
With Me.ListBox1: .AddItem
.List(Sig, 0) = Celda.Offset(, 1)
.List(Sig, 1) = Celda.Offset(, 2): .List(Sig, 2) Celda.Offset(, 3): Sig = Sig + 1
End With: End If: Next: End With
End Sub
Private Sub ListBox1_Click()
With Me.ListBox1
ActiveCell = .List(.ListIndex, 0)
ActiveCell.Offset(, 1) = .List(.ListIndex, 1): ActiveCell.Offset(, 2)


= .List(.ListIndex, 2)
End With: SendKeys "{Esc}"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range): Dim Fila As Integer
If Intersect(Target, Range("b20:b39,c20:c39")) Is Nothing Then Exit Sub
For Fila = 20 To 39
If Cells(Fila, 3) > 0 And Cells(Fila, 9) > 0 Then
Cells(Fila, 10) = Cells(Fila, 3) * Cells(Fila, 9)
Cells(Fila, 1) = Application.Count(Range(Cells(20, 9), Cells(Fila,


9)))
End If
If Not IsEmpty(Cells(Fila, 2)) _
Then Cells(Fila, 1) = Application.CountA(Range(Cells(20, 2),


Cells(Fila, 2))) _
Else Cells(Fila, 1).ClearContents
If IsEmpty(Cells(Fila, 3)) Or IsEmpty(Cells(Fila, 9)) Then Cells(Fila,


10).ClearContents
Next
End Sub

Respuesta Responder a este mensaje
#7 Héctor Miguel
04/06/2004 - 09:12 | Informe spam
hola, Oscar !

... funciona [...]


=> gracias por el 'feed-back' ;)

... hay que ser muy cuidadoso en cada paso porque un click fuera de secuencia
... mensaje "Se ha producido un error "380" en tiempo de ejecucion".


______
=> 'me intriga' [????] ... podrias informar...
- ¿en que version lo estas usando?
- ¿en 'que momento' [o con que 'secuencia' en el 'clickeo'] aparece el error?
¨¨¨¨¨¨¨¨¨¨¨
De todas formas, me siento muy bien servido.


=> 'eso' es 'lo importante' :))

¿comentas?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida