Macros con valor asignado en celda

en celda a1 =0  b1=5, columna c se marcaran c1, c2, c3, c4, c5. (color azul)

                a2=5   b2=8, columna c se marcaran c6, c7, c8. (¿Color rojo) se podrá?

El color es indistinto.

1 Respuesta

Respuesta
1

.24.05.17

Buenas, Tango

Podría resolverse simplemente con formato condicional

Pero como pediste una macro, te paso esta rutina de VBA basada en el evento Cambio para que haga lo que indicás estrictamente.

Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y en el panel de la izquierda busca la hoja donde quieres que esto ocurra. Da doble click sobre ella. (otra forma de llegar a este punto es hacer click derecho sobre la solapa de esta hoja y elegir la opción "Ver Código).                                                         

Allí pegá el siguiente procedimiento de VBA:

Private Sub Worksheet_Change(ByVal Target As Range)
'---- Variables modificables ----
'=== TANGO, modificá estos datos de acuerdo a tu proyecto:
Crit1 = Array("a1", "b1", "c1", "c2", "c3", "c4", "c5") ' primeras dos direcciones son las de referencia. El resto son las que se pintan
Col1 = 33 'azul claro. 5 para azul oscuro
Crit2 = Array("a2", "b2", "c6", "c7", "c8") ' primeras dos direcciones son las de referencia. El resto son las que se pintan
Col2 = 3 'rojo
'---- fin Variables
'
' VBA coding by FeJoAl
'
'---- inicio de rutina:
'  
Select Case LCase(Target.Address(False, False))
Case LCase(Crit1(0)), LCase(Crit1(1))
    For Lacelda = 2 To UBound(Crit1)
        Range(Crit1(Lacelda)).Interior.ColorIndex = -4142
    Next
    If Range(Crit1(0)).Value = 0 And Range(Crit1(1)) = 5 Then
        For Lacelda = 2 To UBound(Crit1)
            Range(Crit1(Lacelda)).Interior.ColorIndex = Col1
        Next
    End If
Case LCase(Crit2(0)), LCase(Crit2(1))
    For Lacelda = 2 To UBound(Crit2)
        Range(Crit2(Lacelda)).Interior.ColorIndex = -4142
    Next
    If Range(Crit2(0)).Value = 5 And Range(Crit2(1)) = 8 Then
        For Lacelda = 2 To UBound(Crit2)
            Range(Crit2(Lacelda)).Interior.ColorIndex = Col2
        Next
    End If
End Select

Como verás, al principio del código están los dos criterios que mencionaste en dos matrices que guardan tanto las celdas de referencia como las celdas a pintar.

Cuando haya cambios en esas cuatro celdas, se pintarán las otras que mencionaste.

Comentame si mi solución resuelve lo que buscás -y, en tal caso, agradeceré que califiques mi contribución- o escribime de nuevo aquí, si necesitás más apoyo con esto.

Un saludo

Fernando

.

(Buenos Aires, Argentina)

.

.

Hola, Tango

Entiendo que sos nuevo por aquí.
Una vez que recibiste la respuesta deberías asignarle una valorización con el botón de opciones (Excelente, Util, Etc) que está al pie, para que quede finalizada. En caso de que tuvieras alguna duda, preguntame de nuevo.

Cordialmente,
Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas