Esto funciona, pero ¿ hay una manera mas fácil ?

25/10/2007 - 16:36 por erbuson | Informe spam
Hola a todos:
Necesito saber desde un procedimiento vba si hay alguna hoja activa,
podría alguien indicarme si hay una manera mas facil que esta. He
comprobado que está sirve para dos opciones y parece que funciona pero
quisiera saber si hay algun modo que desconozca.

Public Function HojaVisible(Optional NombreHoja As String) As Boolean
' Comprueba si está visible la Hoja Indicada.
' Si no se indica Hoja, devuelve si hay Visible una hoja activa
Dim Nulo As String
On Error GoTo NoVisible
Nulo = ActiveSheet.Name 'Si no hay Hoja activa, saltará hacia el
error
If NombreHoja = "" Then NombreHoja = Nulo
Nulo = Worksheets(NombreHoja).Cells(1, 1) 'Si no puede tomar valor,
saltará al error
HojaVisible = True 'Si hemos llegado aquí, hay una Hoja visible.
On Error GoTo 0
Exit Function
NoVisible:
On Error GoTo 0
End Function

Gracias por vuestra inestimable ayuda, entre este grupo y el de Visual
Basic estoy aprendiendo un monton.

Joan
 

Leer las respuestas

#1 Héctor Miguel
25/10/2007 - 20:33 | Informe spam
hola, Joan !

Necesito saber desde un procedimiento vba si hay alguna hoja activa
podria alguien indicarme si hay una manera mas facil que esta.
He comprobado que esta sirve para dos opciones y parece que funciona pero quisiera saber si hay algun modo que desconozca.



considera que no es lo mismo comprobar si "X" hoja esta "visible" a comprobar si esta como hoja "activa"
si solo requieres comprobar si la hoja "X" esta como activa (en la ventana activa) saltando algun error por libro con ventana oculta

Function Hoja_activa(Nombre_hoja As String) As Boolean
On Error Resume Next
If Len(ActiveWindow.Caption) Then _
Hoja_activa = LCase(ActiveSheet.Name) = LCase(Nombre_hoja)
End Function

tambien es posible consultar cual es la hoja activa de "otro" libro (calificando el nombre del libro)
sin importar si el otro libro es el libro activo (en la ventana activa) p.e.

MsgBox Workbooks("otro libro NO activo").ActiveSheet.Name

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Public Function HojaVisible(Optional NombreHoja As String) As Boolean
' Comprueba si esta visible la Hoja Indicada.
' Si no se indica Hoja, devuelve si hay Visible una hoja activa
Dim Nulo As String
On Error GoTo NoVisible
Nulo = ActiveSheet.Name ' Si no hay Hoja activa, saltara hacia el error
If NombreHoja = "" Then NombreHoja = Nulo
Nulo = Worksheets(NombreHoja).Cells(1, 1) ' Si no puede tomar valor, saltara al error
HojaVisible = True ' Si hemos llegado aqui, hay una Hoja visible.
On Error GoTo 0
Exit Function
NoVisible:
On Error GoTo 0
End Function

Preguntas similares