VBA Obtener el nombre de la Hoja / Cambiar el nombre de la Hoja
In this Article
Este tutorial cubrirá la interacción con los nombres de las hojas en VBA.
Obtener el nombre de la hoja
Los nombres de las hojas se almacenan en la propiedad Name del objeto Sheets o Worksheets. El Nombre de la hoja es el nombre de la «pestaña» que es visible en la parte inferior de Excel, en este caso, ‘Hoja1’:
Obtener el Nombre de la Hoja Activa
Esto mostrará el nombre de la Hoja Activa en un cuadro de mensaje:
MsgBox ActiveSheet.Name
Obtener el nombre de la hoja por número de índice
Esto mostrará el nombre de la primera hoja de trabajo en un cuadro de mensaje:
MsgBox Sheets(1).Name
Esto mostrará el nombre de la última hoja de trabajo en el libro de trabajo:
MsgBox Sheets(Sheets.Count).Name
Obtener el nombre de la hoja por el nombre del código
En el Editor VBA, hay una opción para cambiar el «nombre de código» de una Hoja. El nombre de código no es visible para el usuario de Excel y sólo puede verse en el Editor VBA:
En VBA, cuando se trabaja con Hojas, se puede hacer referencia al nombre habitual de la Pestaña:
Sheets("Hoja1").Activate
o el nombre del código VBA:
NombreCodigo.Activate
Hacer referencia al nombre del código es deseable en caso de que el nombre de la pestaña de la Hoja cambie alguna vez. Si usted permite que el usuario de Excel tenga acceso a los nombres de las hojas que cambian, debe hacer referencia al nombre del código en su código VBA para que una falta de coincidencia del nombre de la pestaña de la hoja no cause un error. Los nombres de los códigos de las hojas se discuten con más detalle aquí. Para obtener el nombre de la hoja utilizando el nombre del código VBA, haga lo siguiente:
MsgBox NombreCodigo.Name
Cambiar el nombre de la hoja
Puede renombrar las hojas ajustando la propiedad name del objeto Sheets o Worksheets.
Cambiar el nombre de ActiveSheet
ActiveSheet.Name = "NuevoNombre"
Cambiar el nombre de la hoja por el nombre
Sheets("HojaVieja").Name = "NuevoNombre"
Cambiar el nombre de la hoja por el número de índice de la hoja
Aquí usamos 1 para renombrar la primera Hoja del Libro de Trabajo.
Sheets(1).Name = "NuevoNombre"
Cambiar el nombre de la hoja por el nombre del código
Este código renombrará una hoja usando su nombre de código VBA (discutido anteriormente):
NombreCodigo.Name = "NuevoNombre"
Comprobar si el nombre de la hoja existe
Creamos una función para comprobar si ya existe una Hoja con un nombre determinado.
'Comprueba si existe un rango en una Hoja.
'Deja el rango en blanco para probar si la hoja existe
'Entradas:
' hoja - Nombre de cadena de la Hoja (ej. "Hoja1")
' rango (Opcional, Por defecto = "A1") - Cadena de nombre del rango (por ejemplo "A1")
Function ExisteHoja(hoja As String, Optional ByVal rango As String = "A1") As Boolean
Dim prueba As Range
On Error Resume Next
Set prueba = ActiveWorkbook.Sheets(hoja).Range(rango)
ExisteHoja = Err.Number = 0
On Error GoTo 0
End Function
La función devolverá TRUE si la Hoja existe, o FALSE si no existe.
Sub pruebaHojaExiste()
msgbox ExisteHoja("Configurar")
End Sub
Copiar Hoja y Renombrar
Este ejemplo es de nuestro artículo sobre la copia de hojas. Después de copiar y pegar una Hoja, la nueva hoja creada se convierte en la Hoja Activa. Así que para renombrar una hoja copiada, simplemente usa ActiveSheet.Name:
Sub CopiarRenombrarHoja()
Sheets("Hoja1").Copy After:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = "Ultima Hoja"
On Error GoTo 0
End Sub
Nota: Hemos añadido el manejo de errores para evitar errores si el nombre de la hoja ya existe.