Creé un módulo de clase para obtener el último dato en una fila o columna específica, hasta hace unos días funcionaba a la perfección, la exporté a mi disco duro y en cada nuevo proyecto la incluía dentro de los módulos de clase. Desde el módulo principal defino la respectiva variable que hace uso del módulo de clase con DIM y SET sin tener problemas, el módulo de clase original lo desarrolle desde abril de este año, y como comenté no me había dado ningún problema.
El código del módulo de clase se llama clsUltimoDato, y el código es el siguiente:
Private Fila As Integer
Private Columna As Integer
---------------------------------------------------------------------
Public Property Let clsFila(FilaBusca As Integer)
Fila = ActiveSheet.Cells(Rows.Count, FilaBusca).End(xlUp).Row
End Property
---------------------------------------------------------------------
Public Property Get clsFila() As Integer
clsFila = Fila
End Property
---------------------------------------------------------------------
Public Property Let clsColumna(ColumnaBusca As Integer)
Columna = ActiveSheet.Cells(ColumnaBusca, Columns.Count).End(xlToLeft).Column
End Property
---------------------------------------------------------------------
Public Property Get clsColumna() As Integer
clsColumna = Columna
End Property
Y para llamarlo desde algún módulo del proyecto hago las siguientes declaraciones:
Dim mUltimoDato As New clsUltimoDato
Dim FilaFinal As Integer
Set mUltimoDato = New clsUltimoDato
FilaFinal = mUltimoDato.clsFila = 1
MsgBox FilaFinal
Debo aclarar que el dato "1" se refiere a la fila de la cual quiero obtener el último dato, 1=A, 2=B... etc.
Hace unos días empecé a desarrollar un nuevo proyecto, así que importé el módulo de clase, e hice las declaraciones respectivas, pero el módulo no devuelve el dato, en el caso de mi proyecto debería de devolver 5 y en vez de eso me regresa valor 0, hice una prueba mandando una ventana MsgBox con el valor directo del módulo de clase, de la siguiente manera:
MsgBox mUltimoDato.clsFila = 1
El valor que devuelve la ventana es "Falso"
Hice otra prueba y agregué directamente la línea de cálculo al módulo, quedando de la siguiente manera:
Dim FilaFinal As Integer
FilaFinal = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox FilaFinal
Al correr el módulo me devuelve el valor esperado, 5; no entiendo qué puede estar pasando, porqué ya no funciona mi módulo. Otra cosa extraña es que abrí un proyecto antiguo que corría a la perfección con el módulo de clase ahora ya no corre y monitoreando el módulo de clase también devuelve el valor "Falso"
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Hola!!
Creé un módulo de clase para obtener el último dato en una fila o columna específica, hasta hace unos días funcionaba a la perfección, la exporté a mi disco duro y en cada nuevo proyecto la incluía dentro de los módulos de clase. Desde el módulo principal defino la respectiva variable que hace uso del módulo de clase con DIM y SET sin tener problemas, el módulo de clase original lo desarrolle desde abril de este año, y como comenté no me había dado ningún problema.
El código del módulo de clase se llama clsUltimoDato, y el código es el siguiente:
Private Fila As Integer Private Columna As Integer --------------------------------------------------------------------- Public Property Let clsFila(FilaBusca As Integer) Fila = ActiveSheet.Cells(Rows.Count, FilaBusca).End(xlUp).Row End Property --------------------------------------------------------------------- Public Property Get clsFila() As Integer clsFila = Fila End Property --------------------------------------------------------------------- Public Property Let clsColumna(ColumnaBusca As Integer) Columna = ActiveSheet.Cells(ColumnaBusca, Columns.Count).End(xlToLeft).Column End Property --------------------------------------------------------------------- Public Property Get clsColumna() As Integer clsColumna = Columna End Property
Y para llamarlo desde algún módulo del proyecto hago las siguientes declaraciones:
Dim mUltimoDato As New clsUltimoDato Dim FilaFinal As Integer Set mUltimoDato = New clsUltimoDato FilaFinal = mUltimoDato.clsFila = 1 MsgBox FilaFinal
Debo aclarar que el dato "1" se refiere a la fila de la cual quiero obtener el último dato, 1=A, 2=B... etc.
Hace unos días empecé a desarrollar un nuevo proyecto, así que importé el módulo de clase, e hice las declaraciones respectivas, pero el módulo no devuelve el dato, en el caso de mi proyecto debería de devolver 5 y en vez de eso me regresa valor 0, hice una prueba mandando una ventana MsgBox con el valor directo del módulo de clase, de la siguiente manera:
MsgBox mUltimoDato.clsFila = 1
El valor que devuelve la ventana es "Falso"
Hice otra prueba y agregué directamente la línea de cálculo al módulo, quedando de la siguiente manera:
Dim FilaFinal As Integer FilaFinal = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row MsgBox FilaFinal
Al correr el módulo me devuelve el valor esperado, 5; no entiendo qué puede estar pasando, porqué ya no funciona mi módulo. Otra cosa extraña es que abrí un proyecto antiguo que corría a la perfección con el módulo de clase ahora ya no corre y monitoreando el módulo de clase también devuelve el valor "Falso"