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

1 respuesta

Respuesta
1
Sin entrar a analizar tus rutinas, te explico cómo incluir variables en una fórmula en VBA:
ActiveCell.Formula = "=VLOOKUP(" & i & ",'LISTA DE PRECIOS'!$A$5:$J$18000,2,0)"
Es decir, dejar dentro de las comillas la parte fija, y con & incluir las variables, en este caso solo i
PD) En mi manual 400MacrosPlus encontrarás 1 cap dedicado al tratamiento de funciones en VBA
Sdos. No olvides finalizar la consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas