Poner el nombre de la hoja con el valor de una celda

En una hoja (denominada datos) tengo en la columna A hoja1, hoja2, hoja3, etc en la columna B tengo una series de datos, (b1, b2, b3, etc) y quiero que las hojas 1, 2, 3, etc se llamen según lo que aparece en (b1, 2, b3, etc) y si cambio algún dato en estas celdas, la hoja se cambie de nombre automáticamente al valor nuevo que figura en (b1, o b2, o b2, etc don de se haya variado el dato).

1 respuesta

Respuesta
2

Te mando mi solución con esta macro-evento

La tienes que copiar dentro del objeto hoja llamado datos

Cuando modifiques algún dato de la columna B de la hoja datos se disparará la macro que hacer lo que pides

Private Sub Worksheet_Change(ByVal Target As Range)
'por luismondelo
If Target.Column = 2 Then
Range("a1").Select
Do While ActiveCell.Value <> ""
valor = ActiveCell.Value
For Each hoja In ActiveWorkbook.Sheets
If UCase(hoja.Name) = UCase(valor) Then
hoja.Name = ActiveCell.Offset(0, 1).Value
End If
Next
ActiveCell.Offset(1, 0).Select
Loop
End If
End Sub

recuerda finalizar la consulta

Hola Luis gracias por contestar, esta bien lo que me has enviado, pero habría alguna forma de que cuando se cambie el nombre a la hoja este se ponga automáticamente en la celda donde estaba el antiguo nombre es decir, en la celda A1 por ejemplo pone luis, y la hoja se llama también luis, en la celda B1 pongo jose y se cambia, pero si luego en la misma celda pongo después pepe, como en A1 había antes luis pues no la cambia claro, entonces seria posible que si en la celda B1 pongo juan, al darle al intro se cambie la hoja de nombre y después se ponga juan también en A1 de forma que quede preparada por si cambio después de nuevo la hoja, he puesto nombres de ejemplo pero luego en realidad son fechas concretas y claro al final tengo que cambiar en dos sitios.

¿se puede?

gracias.-

claro.. ahora tu macro queda así:

Private Sub Worksheet_Change(ByVal Target As Range)
'por luismondelo
If Target.Column = 2 Then
Range("a1").Select
Do While ActiveCell.Value <> ""
valor = ActiveCell.Value
For Each hoja In ActiveWorkbook.Sheets
If UCase(hoja.Name) = UCase(valor) Then
hoja.Name = ActiveCell.Offset(0, 1).Value
End If
Next
ActiveCell.Value = ActiveCell.Offset(0, 1).Value
ActiveCell.Offset(1, 0).Select
Loop
End If
End Sub

Luis, casi esta he puesto los nombres de 5 hojas en la columna A y en la columna B empiezo a cambiar datos y la macro se para en la linea: hoja.Name = ActiveCell.Offset(0, 1).Value

y da error 1004 aunque cambia las hojas.

??

En el siguiente enlace te dejo el archivo con mi macro funcionando.

Te he puesto unas indicaciones

http://share.cx.com/rMBQ7y

Recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas