Nombre de una hoja sea el valor de una Celda

Quisiera que el nombre de cada hoja de un libro especifico sea el valor que se coloque en la celda b8 de cada hoja. ¿Cómo lo logro? No soy muy diestro programando macros así que por favor paso a paso si me puede ayudar. Gracias! (xxxxxx)
3

3 respuestas

Respuesta
1
Es sencillo, entras en el editor de Visual Basic (ALT + F11) y en ThisWorkbook, añade este código:
Private Sub Workbook_Open()
For x = 1 To Sheets.Count
Sheets(x).Activate
ActiveCell.Range("b8") = Sheets(x).Name
Next
End Sub
Suerte
Gracias, funciona perfecto, solo que lo que quisiera es hacerlo al revez.
El código que me has pasado, pone el nombre de la hoja en la celda b8, lo que necesito, si es posible es que la hoja tome el nombre que ponga en la celda b8.
Un saludo,
(xxxxxx)
Sustituye el código que te envíe el otro día por este:
Private Sub Workbook_Open()
For x = 1 To Sheets.Count
Sheets(x).Name = Sheets(x).Range("b8")
Next x
End Sub
Respuesta
1
Pues entonces vamos por pasos
1) Abre el editor VBA (ALT + F11)
2) Inserta un módulo
3) Ingresa el siguiente código en el módulo que acabás de crear
        Function nombreHoja() As String
               nombreHoja = ActiveSheet.Name
        End Function
4) Vuelve al libro y en la celda B8 escribes
=nombreHoja()
5) Listo
Gracias GFellay. Por alguna razón no me funciona. También me pregunto: Si pongo la fórmula =nombrehoja() en la celda b8, ¿no podría poner el nombre que necesito para que la hoja tome ese nombre de esa celda no?
Te ruego me aclares un poco.
Atentos saludos,
¿No entiendo la pregunta? Si querés en la celda poner el nombre de la hoja por supuesto que podes, pero si cambiás el nombre NO se actualiza, repito que debe ser algo que no entiendo...
Por tu respuesta a otro experto creo que querés exactamente al revés de lo que te planteo, vos querés que la hoja tenga el valor de una celda y yo te decía para que la celda diga el nombre de la hoja (es parecido pero todo lo contrario ;)
Decime cual de las 2 querés pero creo que ya tendrías la respuesta
Hola, tal vez no explique bien mi problema. Voy de nuevo:
Tengo un libro en el que cada hoja contiene datos generales de cada cliente. En cada hoja en la celda b8 esta el nombre del cliente. Lo que deseo es que el nombre de cada hoja cambie al nombre que se ponga en la celda b8, si tener que hacerlo cada vez manualmente, para poder encontrar a cada cliente más fácilmente y no tener que hacer el cambio manualmente.
Espero que ahora si me puedas ayudar.
Saludos desde Costa Rica, (xxxxxx)
Ok, entonces lo que deberías hacer es ir al editor VBA y en el objeto ThisWorkbook colocar lo siguiente (para que se ejecute cuando habrás el archivo)
Private Sub Workbook_Open()
Dim w As Worksheet
For Each w In ThisWorkbook.Worksheets
w.Name = w.Range("B8")
Next w
End Sub
luego vas a cada una de tus hojas y colocas lo siguiente
If Target.Address = "$B$8" Then
ActiveSheet.Name = Range("B8")
End If
End Sub
Perfecto Gustavo, ahora si funciona. Diferente a lo que me dio otro experto pero sumamente útil. Me salva de un tedioso proceso manual. De nuevo, muchísimas gracias y un saludo desde Costa Rica.
Respuesta
1
Para ponerlo de lo más sencillo y suponiendo que esto lo vas a hacer en una sola hoja (Excel no admite varias hojas con el mismo nombre), ingresas a los eventos de la hoja activa y pones:
Private Sub Worksheet_Activate()
ActiveSheet.Name = Range("B8").Value
End Sub
Con esto, cada vez que te posiciones en la Hoja, tomará el valor de la celda B8 y le asignará ese nombre a la Hoja. Recuerda que da error si existen varias hojas con el mismo nombre.
[email protected]
Excelente JC, Muchas Gracias. Funciona perecto y ahora podre catalogar mis cleitnes sin tener el tedio de hacerlo manualmente.
Saludos desde Costa Rica.
(xxxxxx)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas