Ayuda con ciclo en una Macro
De Antena gracias por quien me pueda ayudar.
Resulta que tengo una macro que me copia en la columna a la referencia de una base de datos, lo que no eh podido hacer es un ciclo para que con la fórmula BUSCARV me copie, la descripción, marca, precio de lista y descuento.
Este es el código que tengo el me funciona pero no se como hacer para que la fórmula VLOOKUP me acepte una variable como referenica para buscar.
Uno de los intentos:
Option Explicit
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
Dim Fila As Integer
Dim Columna As Integer
If IsNumeric(ListBox1) Then
ActiveCell = Val(ListBox1)
'Coger el valor de fila de la celda activa sobre la variable Fila
Fila = ActiveCell.Row
' Coger el valor de columna de la celda activa sobre la variable Fila
Columna = ActiveCell.Column
ActiveSheet.Cells(Fila, Columna).Value = i
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,2,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,3,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,4,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,5,0)"
ListBox1.ListIndex = -1
Else
ActiveCell = ListBox1
Fila = ActiveCell.Row
Columna = ActiveCell.Column
ActiveSheet.Cells(Fila, Columna).Value = i
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,2,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,3,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,4,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,5,0)"
ListBox1.ListIndex = -1
End If
End Sub
Private Sub TextBox1_Change()
With Sheets("LP")
.[C2] = TextBox1 & "*"
.[a1].CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=.[C1:C2], _
CopyToRange:=.[D1], Unique:=False
If .[D2] = Empty Or TextBox1 = Empty Then
ListBox1.ListFillRange = ""
Else
ListBox1.ListFillRange = .Range(.[D2], .[D65536].End(xlUp)).Address(External:=True)
End If
End With
End Sub
Resulta que tengo una macro que me copia en la columna a la referencia de una base de datos, lo que no eh podido hacer es un ciclo para que con la fórmula BUSCARV me copie, la descripción, marca, precio de lista y descuento.
Este es el código que tengo el me funciona pero no se como hacer para que la fórmula VLOOKUP me acepte una variable como referenica para buscar.
Uno de los intentos:
Option Explicit
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
Dim Fila As Integer
Dim Columna As Integer
If IsNumeric(ListBox1) Then
ActiveCell = Val(ListBox1)
'Coger el valor de fila de la celda activa sobre la variable Fila
Fila = ActiveCell.Row
' Coger el valor de columna de la celda activa sobre la variable Fila
Columna = ActiveCell.Column
ActiveSheet.Cells(Fila, Columna).Value = i
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,2,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,3,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,4,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,5,0)"
ListBox1.ListIndex = -1
Else
ActiveCell = ListBox1
Fila = ActiveCell.Row
Columna = ActiveCell.Column
ActiveSheet.Cells(Fila, Columna).Value = i
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,2,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,3,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,4,0)"
ActiveCell.Offset(0, 1).Select
ActiveCell.Formula = "=VLOOKUP(i,'LISTA DE PRECIOS'!$A$5:$J$18000,5,0)"
ListBox1.ListIndex = -1
End If
End Sub
Private Sub TextBox1_Change()
With Sheets("LP")
.[C2] = TextBox1 & "*"
.[a1].CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=.[C1:C2], _
CopyToRange:=.[D1], Unique:=False
If .[D2] = Empty Or TextBox1 = Empty Then
ListBox1.ListFillRange = ""
Else
ListBox1.ListFillRange = .Range(.[D2], .[D65536].End(xlUp)).Address(External:=True)
End If
End With
End Sub
1 Respuesta
Respuesta de Elsa Matilde
1