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

1 respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas