Problema con búsqueda en VBA Excel

Recurro a Ustedes nuevamente para ver si es posible que me ayuden en una porción de código que no termino de resolver.

El siguiente código inserta una fila completa en un listado de cuentas contables agrupados por cada cambio en la cuenta. En la primera columna de la fila insertada coloco el código del "grupo madre" y en la segunda columna si correspondiente descripción. Hago la prueba con los primeros pero con el último no consigo que coloque el código del grupo madre correctamente. Me coloca el inmediato anterior. ¿Qué estoy haciendo mal?

Sub AgruparCuentasComprobacion_1()
Dim Fila As Long
Dim Final As Long
Hoja7.Activate ' Balance de Comprobación
    Final = nReg(Hoja7, 12, 1) - 1
    With Hoja7
        For Fila = Final To 12 Step -1
            If Left(.Cells(Fila + 1, 1), 10) <> Left(.Cells(Fila, 1), 10) Then
                Rows(.Cells(Fila + 1, 1).Row & ":" & .Cells(Fila + 1, 1).Row).Insert
                .Cells(Fila + 1, 1) = Left(.Cells(Fila - 1, 1), 10)
                .Cells(Fila + 1, 2) = Application.VLookup("1.1.1.1.01", Sheets("Plan de Cuentas").Range("a2:a20000"), 2)
            End If
        Next
   End With
End Sub

Adicionalmente otro problema que tengo es que el Vlookup arroja un error #¡REF!

¿

¿Podrían ayudarme en la revisión?

1 Respuesta

Respuesta
2

No entiendo cómo es tu proceso de

Inserta una fila completa en un listado de cuentas contables agrupados por cada cambio en la cuenta

Tendrías que explicar con imágenes lo que tienes antes de la macro, qué esperas de resultado después de la macro; cuál es el código de esta función y qué te regresa de resultado.

Final = nReg(Hoja7, 12, 1) - 1

En cuanto al BuscarV, si no encuentra el dato, te regresa error, para tener control sobre el posible error, cambia esta línea:

.Cells(Fila + 1, 2) = Application. VLookup("1.1.1.1.01", Sheets("Plan de Cuentas"). Range("a2:a20000"), 2)

Por estas:

        Set h = Sheets("Plan de Cuentas")
        Set b = h.Range("a2:a20000").Find("1.1.1.1.01", lookat:=xlWhole)
        If Not b Is Nothing Then
            .Cells(Fila + 1, 2) = h.Cells(b.Row, "B").Value
        End If

¡Gracias! La línea:

Final = nReg(Hoja7, 12, 1) - 1

pude llegar a resolverla, sin embargo la solución que me indicas para el BuscarV funcionó a la perfección.

Muy agradecido!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas