jueves, 13 de septiembre de 2012

VBA: El evento WorkBook open en macros de Excel.

Hace unos días un usuario me consultaba sobre la forma de construir una macro que marcara el color de la etiqueta de la hoja cuyo nombre coincidiera con el año corriente.
...Tengo un libro con varias hojas llamadas 2011-2012-2013-2014-2015 y quiero que la pestaña de la hoja del año en curso se remarque con un color,por ejemplo Rojo, pero de forma automatica, como si le asignaramos un formato condicional., para indicar al usuario de forma visual la hoja a utilizar....

Suponiendo un libro de trabajo, con seis hojas llamadas '2010', '2011', '2012', '2013', '2014' y '2015':

VBA: El evento WorkBook open en macros de Excel


Para ejecutar la acción solicitada insertaremos un evento WorkBook_Open() en la Hoja de trabajo (ThisWorkBook), que recorra los nombres de todas las hojas existentes en el libro, para que cuando encuentre la coincidencia Nombre Hoja con Año presente, le de un color rojo y la deje activa.

VBA: El evento WorkBook open en macros de Excel



El código que insertaremos en ThisWorkBook del Explorador de proyectos del Editor de VBA, formando nuestra macro de Excel, con un evento Open, quedando:

Private Sub Workbook_Open()
'definimos las variables
'para comparar con el nombre de la etiqueta de cada hoja
'definimos el año como cadena de texto - String
Dim numhojas As Long, anyo As String
numhojas = Sheets.Count
anyo = Year(Now())

'recorremos todas las hojas buscando el nombre de la etiqueta
'que coincide con el año presente
For i = 1 To numhojas
    Set etiqueta = ActiveWorkbook.Sheets(i).Tab
    'cuando coincida le damos un color rojo y
    'activamos la hoja
    If Sheets(i).Name = anyo Then
    etiqueta.Color = vbRed
    Sheets(i).Activate
    Else
    etiqueta.Color = xlNone
    End If
Next i
End Sub


Queda una macro sencilla que cada vez que abramos nuestro libro de trabajo la rutina revisará los nombres de la hoja, y marcarña de color rojo aquella que coincida con el año actual.

2 comentarios:

  1. Hola
    Necesito saber cómo puedo programar mis propios tooltips en las funciones personalizadas de Exel que yo haga, igual como se muestran cuando uno digita cualquier función de Excel, que muestra en un recuadro y marcado con negrita los diferentes argumentos que se usan en cada función.
    Ya sé crear mis propias funciones pero solo me falta agregarles ese detalle que lo considero importante.

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola Adrián,
      depende de la versión de Excel con la que trabajes es bastante complejo y largo incorporar a nuestras funciones UDF las ayudas para los diferentes argumentos...
      Por suerte para 2010 y + el asunto se simplifica bastante con el método macrooptions... trataré de escribir un post sobre el tema.

      De momento, de manera sencilla puedes agregar a una categoría diferente y añadirle una descripción general de la función:
      http://excelforo.blogspot.com.es/2009/11/asignar-categoria-una-udf-funcion.html

      La solución pasa por lo expuesto en el link.
      UN saludo

      Eliminar