Copiar y renombrar una hoja en excel

Necesito el código de una macro que realice lo siguiente. Me copie una hoja (madre) y después me la renombre con el string que hay en una celda en la misma hoja (copia). Mi problema es que al mover o copiar hoja me la renombra automáticamente como hoja(2) y después al intentar renombrar no me la encuentra. Muchas gracias. Un saludo
Sheets("Config").Select     'Hoja madre
ActiveSheet.Buttons.Add(436.5, 10.5, 76.5, 24.75).Select
Sheets("Config").Copy Before:=Sheets(1)
Range("F1").Select
Selection.Copy
Sheets("Config (2)").Select
Sheets("Config (2)").Name = "ZDT7"
Range("B22").Select

1 respuesta

Respuesta
1
Reeemplaza por estas lineas, y te cambia el nombre de la hoja creada...
Sheets("Config").Select     'Hoja madre
ActiveSheet.Buttons.Add(436.5, 10.5, 76.5, 24.75).Select
Sheets("Config").Copy Before:=Sheets(1)
Sheets("Config (2)").Range("F1").Select
Selection.Copy
Sheets("Config (2)").Select
Sheets("Config (2)").Name = "ZDT7"
Sheets("ZDT7").Range("B22").Select
Saludos y espero haber entendido bien la pregunta..
Hola de nuevo! Gracias por responderme.
He reemplazado mi código por el tuyo y la primera vez me lo ha hecho bien (aunque mi botón de ejecutar se ha renombrado como Botón 63 no se porque)... El problema es que cuando quiero volver a copiar la misma config (siendo la hoja madre) más veces, me crea otra hoja que en este caso se llamará distinta a "config (2)"... seguramente "config (3)", "config (4)", "config (5)"... y al intentar buscar esas nuevas hojas no las encuentra y da un fallo.
Mi pregunta es: ¿Hay alguna forma de copiar una hoja y renombrarla a la vez con el nombre que hay en una variable?
Espero haberme explicado mejor que antes. Muchas gracias de nuevo por todo
Prueba esto
Dim nombre As String
nombre = Application.InputBox("Nombre de la nueva hoja")
For x = 1 To Sheets.Count
If Sheets(x).Name = nombre Then nombre = ""
Next x
If nombre <> "" Then
Sheets("Config").Select     'Hoja madre
ActiveSheet.Buttons.Add(436.5, 10.5, 76.5, 24.75).Select
Sheets("Config").Copy Before:=Sheets(1)
Sheets("Config (2)").Range("F1").Select
Selection.Copy
Sheets("Config (2)").Select
Sheets("Config (2)").Name = nombre
Sheets(nombre).Range("B22").Select
Else
MsgBox ("No se ha creado hoja nueva," & vbCrLf & "*- por no tener un nombre," & vbCrLf & "*- o estar el nombre repetido")
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas