30 Macros Útiles y Sencillas: Impedir cambio del Nombre de las Hojas

Ahora vamos a ver un código sencillo con el cual podemos impedir que se cambie el nombre de las hojas. Desde la opción Proteger hoja podemos aplicar esta restricción pero supongamos que no deseamos bloquear la hoja mediante esta herramienta (Ficha Inicio, menú Formato, opción Proteger hoja) ya que para el correcto uso de esta herramienta primero es necesario desbloquear las celdas que no deben quedar bloqueadas y si se trata de muchas celdas puede ser un trabajo un poco tedioso. Así que vamos a ver cómo podemos utilizar las Macros de Excel para aplicar un código que cumpla el mismo objetivo. Tenemos un archivo con dos hojas con nombres Enero y Febrero:

La idea es que siempre nos quede estos mismo nombre para estas dos hojas, así que primero vamos a ingresar al Editor de Visual Basic y para ello desde la primera hoja utilizaremos la combinación de teclas Alt + F11:

Nos ubicamos en la ventana del Explorador de Proyectos que tenemos en el panel izquierdo de la ventana del Editor de Visual basic y damos doble clic a la Hoja 1 (Enero) que es donde queremos aplicar la macro y pegamos el siguiente código en el espacio de edición de código:

Private Sub Worksheet_Deactivate()

Nombrehoja = "Enero"

If Hoja1.Name <> Nombrehoja Then Hoja1.Name = Nombrehoja

End Sub

La primea línea marca el principio de la macro y vamos a desglosar esta línea para entender un poco mejor esta macro:

Private Sub: significa Subrutina (Sub) o macro de acceso Privado (Private) y este acceso se aplica cuando se intenta ejecutar desde otra macro.

Worsheet: Corresponde a una macro que se aplicará a la hoja de Excel (Worksheet) sobre la que estemos ubicados desde la venta de explorador de proyectos

Deactivate(): Corresponde al evento desactivar. Es importante marcar que hay varios eventos o acciones que se pueden dar en la interacción de las hojas de un libro de Excel como es Activar, Calcular, Cambiar Selección, entre otras y es precisamente desde la aplicación de estos eventos que se pueden ejecutar macros, en este caso, vamos a programar Excel para que ejecute una macro de manera automática cuando cambiemos de hoja.

En resumen, esta primera línea se interpreta como macro que se ejecutará una vez se desactive la hoja.

La segunda línea es una variable a la que estamos dando el texto con el cual queremos que siempre sea el nombre de la hoja y para la primera hoja va a ser “Enero”.

La tercera línea es una validación que compara si (If) el nombre de la hoja (Hoja1.Name) es diferente del texto que tenemos en la variable Nombrehoja que configuramos en el paso anterior no sea idéntica, entonces (Then) a la propiedad nombre (Name) de la Hoja1 le damos el texto que hay en la variable Nombrehoja (Hoja1.Name = Nombrehoja).

La última línea End Sub marca el final de la macro

Ahora, este código se ejecuta una vez se desactive la Hoja1, es decir, si seleccionamos otra hoja veamos:

Ahora solo queda aplicar la misma macro en la hoja Febrero:

Solo es necesario cambiar el nombre de la hoja a “Febrero” en la variable Nombrehoja y queda listo.

Descargar archivo de trabajo.

MÁS SOBRE

Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.

Siéntase libre de opinar

Una opinión
  1. JoaoM dice:

    Tengo esto
    'CUALQUIER de las siguientes macros que siguen debe ser colocada en ThisWorkbook para que funcione

    'Las 2 siguientes macros actuan Antes de guardar Libro
    'Una o otra deben colocarse en el codigo de ThisWorkbook
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If DescripGastos.Name "Descripcion Gastos" Then
    DescripGastos.Name = "Descripcion Gastos"
    End If
    If Entrada_Salida.Name "Cobra_Gastos" Then
    Entrada_Salida.Name = "Cobra_Gastos"
    End If
    If Gráfico1.Name "Evolución de la cuenta" Then
    Gráfico1.Name = "Evolución de la cuenta"
    End If
    'ect
    'ect
    End Sub

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Hoja1.Name "Gerson" Then Hoja1.Name = "Gerson"
    If Hoja2.Name "Pineda" Then Hoja2.Name = "Pineda"
    If Hoja3.Name "Joao" Then Hoja3.Name = "Joao"
    'ect
    'ect
    End Sub

En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc. Lo que no está permitido es insultar o escribir palabras ofensivas o soeces. Si lo hace, su comentario será rechazado por el sistema o será eliminado por el administrador. Por último, trate de no escribir en mayúscula sostenida, resulta muy difícil leerle.