Excel - COLOR SOBRE FORMATO CONDICIONAL

 
Vista:
sin imagen de perfil

COLOR SOBRE FORMATO CONDICIONAL

Publicado por luis (14 intervenciones) el 24/08/2017 14:25:34
Buenos dias:
tengo una tabla con unas filas coloreadas con formato condicional y posteriormente en determinadas celdas de esas filas otro formato condicional que se suporpone.
He pasado este ultimo formato condicional a codigo por la complejidad de hacerlo formulado, pero al hacerlo formulado en vez de con formato condicional lo he hecho rellenando el color de las celdas con lo que no funciona.
¿Hay alguna manera de al rellenar el color de una celda el formato condiconal de esa fila se quede en el fondo?


captura-colgar


captura-colgar-2

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sub ORDEN_CODIGOTRAMO1()
 
ActiveSheet.Unprotect Password:=""
With Application
      .ScreenUpdating = False
      .Calculation = xlCalculationManual
      .EnableEvents = False
      .DisplayStatusBar = False
Dim totalcodigo As Integer
Dim numero As Integer
Dim x As Range
Dim titul As String
Dim codigo As String
Dim fila As Integer
Dim columna As Integer
Dim tramoporfila As Range
fila = 7
columna = 35
For fila = 7 To 230
        titul = Cells(fila, 14).Value
        If titul = "TITULO" And Cells(fila, 10).Value <> "" Then
        codigo = Cells(fila, 8).Value 'ES EL CODIGO QUE TIENE QUE CAPTURAR PARA CONTAR
For columna = 35 To 63
    Set tramoporfila = Range(Cells(7, columna), Cells(230, columna))
    totalcodigo = Application.WorksheetFunction.CountIf(tramoporfila, codigo) 'CUENTA CUANTOS HAY EN LA COLUMNA
    numero = Cells(fila, columna).Value ' NUMERO PUESTO DE FORMA MANUAL
    Set x = Cells(fila, columna)
    Select Case numero
        Case Is = totalcodigo
            x.Interior.Color = RGB(247, 150, 70)
        Case Is <= totalcodigo
            x.Interior.Color = vbGreen
        Case Is > totalcodigo
            x.Interior.Color = vbRed
        End Select
Next columna
        End If
Next fila
      .Calculation = xlCalculationAutomatic
      .EnableEvents = True
       ActiveSheet.DisplayPageBreaks = False
End With
ActiveSheet.Protect Password:=""
 
End Sub
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

COLOR SOBRE FORMATO CONDICIONAL

Publicado por Antoni Masana (1804 intervenciones) el 25/08/2017 11:13:57
En respuesta a tu pregunta: Sí que la hay.

Un comentario a tu código las instrucciones de la línea 17 y 18 no tienen sentido.

Para que funcione tu código en primer lugar de un subproceso crealo como Function que devuelva un nulo ( "" ) y llámala desde una celda. Cuando realice el calculo automático ejecutara tu codigo.

Otra cuestión es: si tu código no hace lo que quieres que haga y no consigues saber el por qué, sube el libro y explica las condiciones.

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Sub ORDEN_CODIGOTRAMO1()
    Dim totalcodigo As Integer
    Dim numero As Integer
    Dim x As Range
    Dim titul As String
    Dim codigo As String
    Dim fila As Integer
    Dim columna As Integer
    Dim tramoporfila As Range
 
    ActiveSheet.Unprotect Password:=""
    With Application
      .ScreenUpdating = False
      .Calculation = xlCalculationManual
      .EnableEvents = False
      .DisplayStatusBar = False
    End With
 
    For fila = 7 To 230
        titul = Cells(fila, 14).Value
        If titul = "TITULO" And Cells(fila, 10).Value <> "" Then
            codigo = Cells(fila, 8).Value 'ES EL CODIGO QUE TIENE QUE CAPTURAR PARA CONTAR
            For columna = 35 To 63
                Set tramoporfila = Range(Cells(7, columna), Cells(230, columna))
                totalcodigo = Application.WorksheetFunction.CountIf(tramoporfila, codigo) 'CUENTA CUANTOS HAY EN LA COLUMNA
                numero = Cells(fila, columna).Value ' NUMERO PUESTO DE FORMA MANUAL
                Set x = Cells(fila, columna)
                Select Case numero
                    Case Is = totalcodigo : x.Interior.Color = RGB(247, 150, 70)
                    Case Is < totalcodigo:  x.Interior.Color = vbGreen
                    Case Is > totalcodigo : x.Interior.Color = vbRed
                End Select
            Next columna
        End If
    Next fila
 
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        ActiveSheet.DisplayPageBreaks = False
    End With
    ActiveSheet.Protect Password:=""
End Sub

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