Macro, depende el contenido de D2 el nombre de la hoja
Tenemos un libro de excel con 26 hojas ///quiero un macro que depende el contenido de la celda $2$D asigne el nombre de la hoja y el color ///es decir://si el contenido de la celda $2$D ES "160418" entonces ponle nombre ECII y color rojo, si el contenido de la celda $2$D es "160666" entonces ponle nombre SPEED y color verde, tengo unas 20 variables más pero creo que con las dos primeras sera suficiente...
Saludos
Perdona que no te haya respondido, me han puesto tantas preguntas que la tuya estaba en el último lugar, aquí te dejo un pequeño ejemplo de cómo puedes hacerlo, tienes que modificarlo para que cubras todas las opciones que necesites. Sub CopiaDato() Dim SheetNames() As String Dim SheetHidden() As Boolean Dim i As Integer Dim SheetCount As Integer Dim VisibleWins As Integer Dim Item As Object Dim OldActive As Object If ActiveWorkbook Is Nothing Then Exit Sub ' No hay Libro abierto SheetCount = ActiveWorkbook.Sheets.Count ' Verificar la protección del Libro If ActiveWorkbook.ProtectStructure Then MsgBox ActiveWorkbook.Name & " está protegido.", _ vbCritical, "No se puede copiar el dato." Exit Sub End If ' Desabilitar Ctrl+Break Application.EnableCancelKey = xlDisabled ' Obtener el número de Hojas SheetCount = ActiveWorkbook.Sheets.Count ' Redimensionar el arrays ReDim SheetNames(1 To SheetCount) ReDim SheetHidden(1 To SheetCount) ' Almacenar la dirección de la hoja en uso actualmente Set OldActive = ActiveSheet ' Llenar el array con los nombres de las hojas. For i = 1 To SheetCount SheetNames(i) = ActiveWorkbook.Sheets(i).Name Next i ' Llenar un Array con Hojas que esten ocultas For i = 1 To SheetCount SheetHidden(i) = Not ActiveWorkbook.Sheets(i).Visible ' Desocultar las hojas If SheetHidden(i) Then ActiveWorkbook.Sheets(i).Visible = True Next i ' Apagar el parpadeo Application.ScreenUpdating = False ' Copiar el dato requerido For i = 1 To SheetCount If ActiveWorkbook.Sheets(SheetNames(i)).Range("D2").Value = 160418 Then ActiveWorkbook.Sheets(SheetNames(i)).Range("D2").Value = "ECII" ActiveWorkbook.Sheets(SheetNames(i)).Range("D2").Interior.ColorIndex = 3 End If Next i ' Oculatar las hojas nuevamente For i = 1 To SheetCount If SheetHidden(i) Then ActiveWorkbook.Sheets(i).Visible = False Next i ' Reactivar la Hoja dónde estabamos OldActive.Activate End Sub Espero te sirva.
Esta de pelos el macro pero lo que necesito que cambie es el nombre de la hoja Es decir "ecii" en lugar de hoja1 Saludos...
No eres muy específico. Aquí tienes la parte que tienes que modificar para que haga lo que necesitas, solo déjame aclararte que no pueden existir varias hojas con le mismo nombre por lo que tienes que nombrarlas como ECII1, ECII2, etc. Dim a As Integer ' Copiar el dato requerido For i = 1 To SheetCount If ActiveWorkbook.Sheets(SheetNames(i)).Range("D2").Value = 160418 Then a = a + 1 ActiveWorkbook.Sheets(SheetNames(i)).Range("D2").Interior.ColorIndex = 3 Sheets(SheetNames(i)).Name = "ECII" & a End If Next i