Excel - vba cambia color de la fuente según tipo de contenido de la celda

 
Vista:
Imágen de perfil de Ricardo
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

vba cambia color de la fuente según tipo de contenido de la celda

Publicado por Ricardo (3 intervenciones) el 23/04/2020 20:51:21
Estimados , el nuevo Gerente, desea que en todos los archivos que manejamos, el color de la letra sea de acuerdo al contenido, por ejemplo: sin formula (numero o texto plano) color azul, formula color negro, vinculo a otra hoja del libro color verde, vinculo a otro libro color rojo, vinculo a otra base de datos color rojo oscuro.
Como son tantos archivos con múltiples hojas, hacerlo a mano seria muy engorroso,] por lo que necesitaría una macro que seleccionando el rango, me cambie de color según el tipo de contenido de la celda.
Llegue a hacer una macro que me da el color si el contenido tiene formula o no, pero me tranque con el tema vínculos (los 3 tipos)
Adjunto un archivo con lo que necesito, el cual contiene la macro que realice.




Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

vba cambia color de la fuente según tipo de contenido de la celda

Publicado por Antoni Masana (2477 intervenciones) el 24/04/2020 10:07:25
Con lo que he añadido identificas cuando la formula hace referencia a otro libro u otra hoja del mismo libro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Formato_Segun_Contenido()
    For Each Cell In Selection
        If Cell.HasFormula Then
            Cell.Font.Color = 0
            If InStr(Cell.Formula, "'[") > 0 Then
               MsgBox "Otro Libro"
            Else
                If InStr(Cell.Formula, "!") > 0 Then
                    MsgBox "Otra Hoja"
                End If
            End If
        End If
 
        ' --- Sin Formulas
 
        If Not Cell.HasFormula Then
           Cell.Font.Color = 12611584
        End If
    Next Cell
End Sub

El resto lo dejo a tu gusto.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Ricardo
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

vba cambia color de la fuente según tipo de contenido de la celda

Publicado por Ricardo (3 intervenciones) el 24/04/2020 14:58:00
Notable Antoni, muchas gracias, casi, casi la macro logra lo que quiero, hay un pequeño problema, cuando detecta los caracteres "'[", de vinculo a otro libro, me pone la fuente en rojo, pero cuando quiero que me ponga fuente verde a vinculo a una hoja del mismo libro detectando el carácter "!", no solo me cambia esa celda a verde, sino como es un carácter común a los dos tipos de vínculos, me pasa por arriba al que había quedado en rojo.
Intente usar:
If InStr(Cell.Formula, "!") > 0 and not InStr(Cell.Formula, "'[") > 0 Then

pero no me lo tomo.

Alguna idea para solucionar el problema?

Adjunto archivo con la macro que me enviaste y modificado el tema de los colores.
Gracias nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

vba cambia color de la fuente según tipo de contenido de la celda

Publicado por Antoni Masana (2477 intervenciones) el 24/04/2020 19:35:49
El la condicion de otro libro he añadido más casos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Formato_Segun_Contenido()
 
  For Each Cell In Selection
        If Cell.HasFormula Then
            Cell.Font.Color = 0
            If InStr(Cell.Formula, "'[") > 0 Or _
               InStr(Cell.Formula, "\[") > 0 Or _
               InStr(Cell.Formula, ":\") > 0 Then
               MsgBox "Otro Libro"
             'Letra color rojo
             Cell.Font.Color = 255
            Else
                If InStr(Cell.Formula, "!") > 0 Then
                    MsgBox "Otra Hoja"
                 'Letra color verde (como la formula a otro libro tamien tiene ""!" me la cambia de rojo a verde)
                Cell.Font.Color = 5287936
                End If
            End If
        End If
 
        ' --- Sin Formulas
 
        If Not Cell.HasFormula Then
           Cell.Font.Color = 12611584
        End If
    Next Cell
End Sub

En el ejemplo que use para la prueba era:

1
='[Libro.xlsx]Hoja1!A1

En tu caso añado dos referencia (zona subrayada que no se si se distiguida bien)

1
=+'C:\Users\rcuello\Desktop\[Libro 1.xlsx]Hoja1'!$A$1

Espero que esto solucione el problema.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Ricardo
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

vba cambia color de la fuente según tipo de contenido de la celda

Publicado por Ricardo (3 intervenciones) el 24/04/2020 21:23:43
Así funciono perfecto, te quedo muy agradecido por la ayuda.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar