Ayuda con función para obtener última celda con valor...

21/05/2013 - 18:21 por Wally | Informe spam
Buen día, estoy tratando de implementar la siguiente función para recorrer columnas hacia la derecha y que me devuelva la posición de la última celda que contiene un valor, hace el recorrido bien y me devuelve la posición pero al salir de la función siempre me marca el error (91)-Variable de objeto o bloque with no establecido.

Observación, si este código lo ejecuto como Sub y muestro el resultado con MsgBox funciona, pero si lo pongo como Function el resultado de la llamada es el que genera el error...

Podrían hacerme el favor de indicarme ¿cuál podría ser el error?

Public Function getLastCol(initCell As String) As String
Dim iCont As Byte
Dim strTmp As String

iCont = 1
Range(initCell).Select 'También se puede con Activate
While ActiveCell.Value <> "" And iCont <= 31
strTmp = ActiveCell.Address
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select
iCont = iCont + 1
Wend
getLastCol = strTmp
End Function
 

Leer las respuestas

#1 Wally
22/05/2013 - 16:07 | Informe spam
Ya encontré solución a mi problema, la solución fue llamar la función antes de la línea donde activo el gráfico que tengo en la misma hoja, que es la siguiente:

ActiveSheet.ChartObjects("1 Gráfico").Activate

Si lo pongo después de la línea me genera el problema, después indagaré sobre ¿por qué marca el error después de esta línea?, supongo que será por cuestiones del foco de los objetos o algo así...



El martes, 21 de mayo de 2013 11:21:58 UTC-5, Wally escribió:
Buen día, estoy tratando de implementar la siguiente función para recorrer columnas hacia la derecha y que me devuelva la posición de la última celda que contiene un valor, hace el recorrido bien y me devuelve la posición pero al salir de la función siempre me marca el error (91)-Variable de objeto o bloque with no establecido.



Observación, si este código lo ejecuto como Sub y muestro el resultado con MsgBox funciona, pero si lo pongo como Function el resultado de la llamada es el que genera el error...



Podrían hacerme el favor de indicarme ¿cuál podría ser el error?



Public Function getLastCol(initCell As String) As String

Dim iCont As Byte

Dim strTmp As String



iCont = 1

Range(initCell).Select 'También se puede con Activate

While ActiveCell.Value <> "" And iCont <= 31

strTmp = ActiveCell.Address

Cells(ActiveCell.Row, ActiveCell.Column + 1).Select

iCont = iCont + 1

Wend

getLastCol = strTmp

End Function

Preguntas similares