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.

Respuesta
1

H o l a : Te anexo la macro actualizada

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")
    col = Sheets("VENTASdw").Range("A1")
    '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, col, 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

En VBA no es necesario declarar las variables, puede revisar el siguiente enlace:

Macro que al hacer clic en agregar una hoja nueva me aparezca un mensaje que diga estas seguro que deseas agregar una nueva hoja


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas