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 SubPorque 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