Macro que revise el contenido de una celda y de acuerdo a su contenido ejecute la macro pretederminada según el contenido

Tengo la siguiente solicitud. Tengo una hoja llamada "COLORES" en la cual registro en la celda "D21" unos artículos con su color de una lista desplegable de colores ejemplo: Carro Rojo, Nube Azul, Sol Amarillo, Vestido Rojo, etc.

Luego en la celda D22 coloco un número ejemplo: 1, 2, 3, 4, etc.

Y tengo una macro para cada color. (Son 9 colores por lo tanto tengo 9 Botones para 9 macros según color).

Ejemplo: 1 boton para azul, 1 boton para rojo, 1 boton para amarillo, etc.

Entonces actualmente lo que hago, es señalo de la lista desplegable, el articulo que deseo con su respectivo color ejemplo: Carro Azul, luego la cantidad en la siguiente celda y luego el botón de la macro correspondiente al azul.

Entonces mi solicitud es la siguiente:

Una sola macro, que verifique si en la Celda "D21" esta contenida la palabra rojo, azul, amarillo, verde, morado, café, gris, negro, blanco.

Dependiendo del color que este contenido en la celda D21 se ejecute su macro correspondiente es decir:

Rojo macro1

Azul macro2

Amarillo macro3

Verde macro4

Morado macro5

Café macro6

Gris macro7

Negro macro8

Blanco macro9

1 Respuesta

Respuesta
1

H o l a:

Pon la siguiente macro en los eventos de la hoja "colores", si estás modificando la celda D21 entonces, la macro se ejecutará en automático y realizará el llamado a la macro según el color.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, [D21]) Is Nothing Then
        colores = Array("", "ROJO", "AZUL", "AMARILLO", "VERDE", _
                        "MORADO", "CAFÉ", "GRIS", "NEGRO", "BLANCO")
        For i = 1 To UBound(colores)
            If InStr(1, UCase(Target), colores(i)) > 0 Then
                Run "macro" & i
                Exit Sub
            End If
        Next
    End If
End Sub

Si en la D21 tienes una fórmula entonces me tienes que decir qué fórmula tienes en esa celda. Prueba y me comentas.


Hola Dante, pero me la puedes regalar que se ejecute con un boton?

Es que para este caso no me sirve que se ejecute automáticamente al poner el dato en la celda 

Gracias

Sale para un botón:

Sub ColorGeneral()
'Por.Dante Amor
    cs = Array("", "ROJO", "AZUL", "AMARILLO", "VERDE", "MORADO", "CAFÉ", "GRIS", "NEGRO", "BLANCO")
    For i = 1 To UBound(cs)
        If InStr(1, UCase([D21]), cs(i)) > 0 Then Run "macro" & i
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas