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 de Cristian David Mondragon
1