¿cómo cambiar el nombre de una hoja usando vba en excel?
Cuando agrega una nueva hoja a un libro de trabajo, tiene la opción de ponerle un nombre. Pero también puedes cambiarle el nombre en cualquier momento usando la propiedad de nombre de la hoja de trabajo. En este tutorial, veremos diferentes formas de cambiar el nombre de una hoja o varias hojas usando código VBA.
Pasos para cambiar el nombre de una hoja usando código VBA
- Primero, defina la hoja a la que desea cambiarle el nombre utilizando el objeto de hoja de trabajo.
- Después de eso, debe usar (.Name) para acceder a la propiedad del nombre que desea modificar.
- A continuación, escriba un signo igual para indicarle a VBA el valor que desea utilizar para cambiar el nombre de la hoja.
- Al final, escriba el nombre de la hoja que desea utilizar.
Enlaces útiles: Ejecutar una macro – Grabador de macros – Editor de Visual Basic – Manual de macros personales
Cambiar nombre de hoja activa
Si desea cambiar el nombre de la hoja activa, en este caso no necesita establecer el nombre de la hoja, en su lugar necesita usar el objeto ActiveSheet que le dice a VBA que haga referencia a la hoja activa en este momento. Aquí está el código.
Activesheet.Name = "mySheet"
Nota: Para cambiar el nombre de una hoja, no es necesario activarla.
Cambiar el nombre de una hoja usando el número de hoja
Como sabes, cada hoja tiene un número dependiendo de su posición en el libro. Digamos que quieres cambiar el nombre de la hoja que tienes en el quinto número, el código sería.
Sheets(5).Name = "mySheet5"
Cuando ejecuta la macro anterior , cambia el nombre de la hoja que está en el quinto número.
Compruebe si la hoja existe antes de cambiarle el nombre
Si intenta cambiar el nombre de una hoja de trabajo que no existe, VBA le mostrará un error, como se muestra a continuación.
La solución a este problema es el siguiente código que utiliza FOR EACH , que puede recorrer todas las hojas de trabajo para encontrar la hoja que usted define y luego cambiarle el nombre.
Sub check_sheet_rename() Dim ws As Worksheet Dim mySheet As String Dim SheetName As String mySheet = InputBox("enter the name of the sheet that you want to rename.") SheetName = InputBox("Enter new name for the sheet.") For Each ws In ThisWorkbook.Worksheets If mySheet = ws.Name Then ws.Name = SheetName End If Next ws End Sub
Cambiar el nombre de una hoja usando el valor de una celda o rango
También puedes cambiar el nombre de una hoja tomando el valor de una celda. Digamos que el valor está en la celda A1.
Sheets("Sheet1").name = Range("A1").Value
Pero digamos que desea nombrar varias hojas según los valores de un rango de celdas. En este caso deberías tener un código como este.
Sub vba_sheet_rename_multiple() Dim wsCount As Long Dim rCount As Long Dim ws As Worksheet Dim name As Range Dim i As Long wsCount = ThisWorkbook.Worksheets.Count rCount = Range("A1:A10").Rows.Count 'Checks if the count of the names provided is less _ or more than the sheets in the workbook If wsCount <> rCount Then MsgBox "There's some problem with the names provided." Exit Sub Else 'Check if any of the cells in the name range is empty. For Each name In Range("A1:A10") If IsEmpty(name) = True Then i = i + 1 End If Next name If i > 0 Then MsgBox "There's is a blank cell in the names range." Exit Sub End If End If 'rename each sheet using the value from the range cell by cell. i = 1 For Each ws In ThisWorkbook.Worksheets ws.name = Range("A1:A10").Cells(i, 1).Value i = 1 + i Next ws End Sub
Cuando ejecuta este código VBA, primero verifica si las celdas en el rango son iguales a la cantidad de hojas que tiene en el libro. Después de eso, comprobará si todas las celdas del rango que especificó tienen valores o no. Y al final cambie el nombre de todas las hojas usando estos nombres.
Verificará dos condiciones usando IF THEN ELSE y luego cambiará el nombre de todas las hojas.