Utilizar la funcion Buscarv en Macros VB
Estoy realizando una macro con VB, para uno de los casos ya resolví el problema, les copio mi macro y después les explico que realiza.-
Sub busquedavertical()
Dim cont As Long 'Controla cual es la ultima linea
Dim ultlinea As Long
Dim CTA As Variant 'Extrae el numero de cuenta
Dim NivelSCBS As Variant 'va a traer el numero de cuenta
Dim rango As Variant 'es el maestro de cuentas
'extrae la ultima fila que tiene datos
ultlinea = Sheets("VENTASdw").Range("C" & Rows.Count).End(xlUp).Row
'define el rango que vamos a buscar
Set rango = Sheets("MAECTA").Range("A2:R217")
'ciclo que me recorre las filas para buscar las cuentas
For cont = 2 To ultlinea 'empieza a contar desde la fila 2
NivelSCBS = Sheets("VENTASdw").Cells(cont, 3) 'la cuenta que busco
'buscamos la cuenta en el maestro de cuentas
CTA = Application.VLookup(NivelSCBS, rango, 8, False)
'sino encuentra que me de cero
If IsError(NivelSCBS) Then
NivelSCBS = 0
End If
Sheets("VENTASdw").Cells(cont, 7) = CTA
Next cont
MsgBox "Buscarv ejecutada exitosamente", vbInformation, "Buscarv"
End Sub
Lo que realiza esta macro es buscar un numero de cliente determinado en mi hoja de ventas en otra hoja llamada maestro de cuenta y trae la cuenta madre de este cliente. Para esto me funciona correctamente.
Lo que necesito saber es como hacer que la funcion "CTA = Application.VLookup(NivelSCBS, rango, 8, False)" no me busque en la posición 8 que hay, sino que sea una posición variable, por ejemplo y con la funcion buscarv escribo, " BUSCARV(A2,MACTA,$A$1,FALSO) " donde "$A$1" es una celda donde yo voy cambiando y así le indico la columna donde tiene que ir a buscar.-
Esto mismo necesito que me haga " "CTA = Application.VLookup(NivelSCBS, rango, 8, False)" en lugar del 8 que le ponga una celda donde va estar la columna donde tiene que buscar.