Nombre hojas después de utilizar este código

Saludos a todos, sucede que encontré este código para darle nombre las hojas en excel
'Sub renombrar() CÓDIGO PARA ASIGNAR UN NOMBRE A LA HOJA DE ACUERDO A UNA CELDA EN LA BASE
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("Desvio Asiste 1").Select
    Range("A1:A1").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
----------------------------------------------------------------------------------------------------------------
Lo utilice y funciona de 10 pero después trato de ejecutar el siguiente código pero no lo hace
'escribe fórmula para comparar datos de mte y asiste en el desvío
    Sheets("Calificacion Desvio").Select
    Range("D6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC2,'DIA1'!C1:C3,3,FALSE)"
    Selection.AutoFill Destination:=Range("D6:D41"), Type:=xlFillDefault
    Range("D6:D41").Select
    Range("C6").Select
Mi pregunta es por que después de utilizar el primer código el segundo ya no funciona, cabe mencionar que si utilizo el segundo código en otro modulo funciona adecuadamente, me podrían indicar por favor que es lo que le debo de borrar o sustituir
Gracias y saludos :)

1 Respuesta

Respuesta
1
Bueno el primer macro cambia el nombre de las hojas eso esta claro
y el segundo macro no te corre sencillamente por que esta referenciado a una hoja especifica Sheets("Calificación Desvío"). Select
eso quiere decir que lo primero que hace el segundo macro es selecionar la hoja "Calificación Desvio", y si antes cambiaste el nombre de las hojas, malamente el macro podria selecionar "Calificacion Desvio".
Debes indicarle al macro cual es el nombre actual de la hoja en donde debe correr.
Si corres ambas macros de forma independiente, elimina la linea Sheets("Calificación Desvío"). Select
y utiliza esto:
sub macro2()
    ActiveSheet.Range("D6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC2,'DIA1'!C1:C3,3,FALSE)"
    Selection.AutoFill Destination:=ActiveSheet.Range("D6:D41"), Type:=xlFillDefault
    ActiveSheet.Range("D6:D41").Select
    ActiveSheet.Range("C6").Select
end sub
Así cada vez que llames el macro2 se ejecutara en cualquier hoja sin importar el nombre, ya que utiliza la hoja activa ActiveSheet
Gracias por la ayuda, ya intente usar el código que me indicas pero no sucede nada solo se ejecuta hasta el código donde cambia el nombre después de eso ya no sucede nada.
Creo que omití una parte de la información sobre la macro que desarrollo, esta macro interactúa con varias hojas del libro por esa razón es que debo de cambiar de hoja después de haber realizado la tabla dinámica buscar una clave y nombrar la hoja, después de nombrar la hoja ya no funciona ningún código ni para cambiar de hoja ni escribir una palabra o fórmula y lo que debe de hacer la macro es cambiarse a la hoja calficacion desvío y escribir una fórmula para traer los datos de la tabla dinámica que creamos.
Ayuda plis es la parte final de la macro y no puedo terminarla
A ver una vez que corres el primer macro que cambia el nombre de las hojas, ¿continua existiendo la hoja "Calificación Desvío"? ¿En el mismo libro?
Si aun continua existiendo la hoja es que creo que el código que utilice es para borrar una hoja pero no necesito borrar. Perdón por ser tan poco eficiente en mi explicación lo único que necesito es el código para nombrar la hoja 2 con la referencia de la hoja 1 en la celda a1 gracias por tu paciencia :)
Si solo necesitas renombrar la hoja2 con el contenido de la celda A1 de la hoja 1 ocupa esto:
Sub renombrar()
Hoja1.Select
Hoja1.Range("A1").Select
If Hoja1.Range("A1").Value = Empty Then Exit Sub
Hoja2.Name = Hoja1.Range("A1").Value
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas