Error 1004 al nombrar hojas de un libro

Hola experto (a), Le agradezco pueda ayudarme con esta pregunta, ya que soy nuevo en esto de las macros y no sé como resolver este problema.
Tengo un libro con 11 hojas (10 hojas llamadas: hoja 1, hoja 2, etc hasta 10) y 1 hoja llamada resumen.
El asunto es que quiero darle nombre a cada una de las 10 hojas del libro, pero tomando los valores que se encuentran en el rango "A1:A10" de la hoja resumen y luego eliminar la hoja resumen.
He estado tratando de hacerlo con el siguiente código que encontré y funciona bien siempre y cuando todo el rango este lleno con valores diferentes. El problema está en que cuando hay valores repetidos en el rango "A1:A10" o hay 2 o más celdas seguidas en blanco, se presenta un error 1004 "No se puede nombrar una hoja como otra hoja del libro de excel.
    Sheets("").Select
    Range("A1:A10").Select
    Dim c As Range
    Dim s As Worksheet
    Dim i As Integer
    i = 1
    For Each c In Selection
    Sheets(i).Name = c
    i = i + 1
    Next c
No se como puedo resolver este problema. De pronto utilizando un On error GoTo, pero no sé como.
Saludos y muchas gracias por la ayuda que pueda prestarme.
Lalito

1 Respuesta

Respuesta
1
Primero es que excel no te dejará nombrar una hoja con el nombre de otra entonces sería interesante que si tiene que tener el mismo nombre que le pongas un número Ejemplo: Maquina, Maquina1, Maquina2 ...
Bueno prueba esta macro y me cuentas
Sub renombrar()
On Error GoTo fin ' si se produce un error se va a la etiqueta fin
Dim N As Integer
Dim hojas As Integer
Dim Encontrado As Boolean
Sheets("Resumen").Select
    Range("A1:A10").Select
    Dim c As Range
    Dim s As Worksheet
    Dim i As Integer
    i = 1
    For Each c In Selection
    Sheets(i).Name = c
    i = i + 1
    Next c
    Exit Sub
fin: ' etiqueta fin
' aquí es donde buscaremos el nombre con un número para que no se dupliquen
For N = 1 To ActiveWorkbook.Sheets.Count
Encontrado = False
    For hojas = 1 To i - 1
        If Sheets(hojas).Name = c & N Then
            Encontrado = True
            Exit For
        End If
    Next hojas
    If Encontrado = False Then
        Sheets(i).Name = c & N
        Exit For
    End If
Next N
    Resume Next ' vuelve a donde produjo el error
End Sub
Siento no poder ponerte las explicaciones, pero tengo bastante prisa, de todas formas pruébalo y si aun está abierta la pregunta mañana te voy explicando que hacen todas la líneas.
Lo siento y

Añade tu respuesta

Haz clic para o