Cambiar de color pestanas de excel compartido, con condicional

Manejo un archivo en excel compartido, el cual tiene distintos datos en cada hoja, ¿es posible programar una condicional para que dependiendo de un valor en determinada celda cambie de color la pestana?

Grabe 3 macros con botones para los colores ya sea rojo, verde o amarillo, pero al tener compartido el archivo de excel no me permite hacer el cambio.

2 respuestas

Respuesta
1

Si tienes compartido el libro y lo tienes protegido, entonces hay que desproteger el libro y volver a proteger.

Te anexo la macro, en mi ejemplo estoy poniendo en la "Hoja1" en la celda "D5" el valor 1 para amarillo, el 2 para verde o el 3 para el rojo. Si tiene otro valor, la pestaña quedará sin color.

Sub Macro3()
'Por.Dante Amor
    Select Case Sheets("Hoja1").Range("D5")
        Case 1: colorp = 65535 'amarillo
        Case 2: colorp = 5287936 'verde
        Case 3: colorp = 255 'rojo
        Case Else: colorp = xlNone
    End Select
    ActiveWorkbook.Unprotect "abc"
    With ActiveWorkbook.Sheets("Hoja1").Tab
        .Color = colorp
        .TintAndShade = 0
    End With
    ActiveWorkbook.Protect "abc"
End Sub

Si quieres que sea en automático, pon la macro en los eventos de tu hoja. Cambiar "abc" por el password que desees.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("D5")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Select Case Target
            Case 1: colorp = 65535 'amarillo
            Case 2: colorp = 5287936 'verde
            Case 3: colorp = 255 'rojo
            Case Else: colorp = xlNone
        End Select
        ActiveWorkbook.Unprotect "abc"
        With ActiveWorkbook.ActiveSheet.Tab
            .Color = colorp
            .TintAndShade = 0
        End With
        ActiveWorkbook.Protect "abc"
    End If
End Sub

Saludos.Dante Amor

Ya pude usar tu código, gracias. Funciona perfectamente ; sin embargo no me explique bien.

Lo que busco es que al comparar por ejemplo si E4>C4 entonces color de pestaña verde

E4<C4 entonces color de pestana rojo y si son iguales amarillo. Y de ser posible que sea en un archivo que este compartido. Utilizando tu código al ponerlo compartido me marca error. Pero bueno supongo algo haría mal.

Te envié el código para que te funcione en todas las hojas.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("D4:E4")) Is Nothing Then
        If [E4] < [D4] Then ActiveSheet.Tab.Color = 255 'rojo
        If [E4] = [D4] Then ActiveSheet.Tab.Color = 5287936 'verde
        If [E4] > [D4] Then ActiveSheet.Tab.Color = 65535 'amarillo
    End If
End Sub

Excelente solo tuve que adaptarlo a la celda que quería C4 en vez de D4 pero muy bien funciono. ¿Creo qué cuando el libro esta share no se puede cambiar el color cierto?

Yo lo probé con el libro compartido y protegido y me funciona.

Te envié la macro para el caso en que el libro estuviera protegido.

Respuesta
1

Carlos pon este código en el evento Change de la hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
    Select Case Target
        Case 1: ActiveWorkbook.Sheets("Hoja2").Tab.Color = vbRed 'Rojo
        Case 2: ActiveWorkbook.Sheets("Hoja2").Tab.Color = vbGreen 'Verde
        Case 3: ActiveWorkbook.Sheets("Hoja2").Tab.Color = vbYellow 'Amarillo
    End Select
End If
End Sub

Lo que hace es controlar la celda A1 (cambia y pon la que deseas), y dependiendo del valor que tenga, en este caso controlo 1,2 y 3, cambia el color de la hoja2 (pon el nombre de tu hoja).

Si te ha valido la respuesta.

¡Gracias! Marcial, básicamente es lo mismo que con Dante,

Lo que busco es que al comparar por ejemplo si E4>C4 entonces color de pestaña verde

E4<C4 entonces color de pestana rojo y si son iguales amarillo.

Entonces usa este código:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C4", "E4")) Is Nothing Then
    Select Case True
        Case [c4] < [e4]: ActiveWorkbook.Sheets("Hoja2").Tab.Color = vbRed 'Rojo'
        Case [c4] > [e4]: ActiveWorkbook.Sheets("Hoja2").Tab.Color = vbGreen 'Verde'
        Case [c4] = [e4]: ActiveWorkbook.Sheets("Hoja2").Tab.Color = vbYellow 'Amarillo'
    End Select
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas