Causal de error en el método Range de objeto global

Estoy haciendo un pequeño programa en excel para depurar información, obteniendo los datos desde un libro y pasándola a otro.

He hecho muchas prueba y la macro parece funcionar, excepto en este paso. Tengo un modulo de clase llamodo monetizacion, con un método o función llamado analizarMonetizacion. Todo funciona perfecto hasta que trato de ejecutal la función:

Sub DepurarContatos()
    '1 Abrimos libro a Depurar
    Dim ArBase As Workbook
    Application.ScreenUpdating = False
    Set ArBase = Workbooks.Open(DirBook())
    With ArBase
        '2Compruebo que sea el libro apropiado
        If Not .Worksheets.Count = 2 Then
            MsgBox "El libro no cumple con los requerimientos"
            GoTo Finalizar
        End If
        Dim Buscar(1) As String
        Buscar(0) = "Monetizacion"
        Buscar(1) = "Contratos"
        For i = LBound(Buscar) To UBound(Buscar)
            For Each Sheet In .Worksheets
                Con = -2
                Eval = Coincidencia(Sheet.Name, Buscar(i), 2)
                Con = WorksheetFunction.Max(Con, Eval)
            Next
            If Con <= -2 Then
                MsgBox "No se encontro la hoja de " & Buscar(i)
                GoTo Finalizar
            End If
        Next
        '2 Comienzo Proceso de Importacion con monetizacion
        Dim HojaMon As Worksheet
        Dim Filas As Integer
        Dim monInicio As Range
        Set HojaMon = .Sheets(SetSheet("Monetizacion", ArBase))
        Set monInicio = HojaMon.Cells(2, 1)
        HojaMon.Activate
        monInicio.Cells(1, 1).Select
        Filas = HojaMon.Cells(1, 1).CurrentRegion.Rows.Count
        Dim Monet(1 To 50) As New Monetizacion
        For i = 1 To Filas - 1
            Monet(i).AnalizarMonetizacion monInicio.Cells(i, 1) '<---EROR AQUI
        Next
        MsgBox Monet(1).Cantidad
    End With
Finalizar:
    'Cerramos el libro
    ArBase.Close False
    Application.ScreenUpdating = True
End Sub

Porque me dice que ha habido un error en el metodo 'Range' del Objeto _'Global'.

El codigo del modulo de clase es este:

Public Periodo, FechaPago As Date
Public Transacción As String
Public PagoNeto, Intereses, PagoTotal, SMLV As Long
Public Cantidad As Integer
Public Function AnalizarMonetizacion(iFila As Range)
    With iFila
        Periodo = DateSerial(CInt(Left(.Cells(1, 1). Value, 4)), CInt(Right(.Cells(1, 1).Value, 2)), 1)
        FechaPago = CDate(.Cells(1, 2).Value)
        Transacción = .Cells(1, 3).Value
        PagoNeto = CLng(.Cells(1, 4).Value)
        Intereses = CLng(.Cells(1, 5).Value)
        PagoTotal = CLng(.Cells(1, 6).Value)
        SMLV = CLng(Range("SMLV").Find(Year(Periodo)).Cells(1, 2).Value)
        Cantidad = PagoNeto / SMLV
    End With
End Function
Public Function FnEnsayo()
    AnalizarMonetizacion Range("Monetizacion").Cells(1, 1)
    MsgBox Periodo & FechaPago & Transacción & PagoNeto & Intereses & PagoTotal & SMLV & Cantidad
End Function

1 Respuesta

Respuesta
1

El problema era que tenia que activar el libro oirginal (ThisWorkbook. Activate) antes de usar la clase ya que esta contiene una referencia de rango al libro original, como no lo hacia, la macro trataba de encontrar el rango en el libro activo que es el libro que estaba consultando, el cual no contenía esa referencia de rango, produciendo un error en el método.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas