No se activa la macro al copiar y pegar

Buenas queridos amigos,
Un amigo y yo llevamos días intentando finalizar una macro para una aplicación de turnos de nuestro trabajo. Hemos desplegado los días del año en la columna B y los nombres en la fila 6. El caso es que la siguiente macro nos permite variar el color según el indicativo de la celda inferior derecha (rango de cada casilla de turnos 2:3)
Pues bien, hemos conseguido que al indicar en esta celda inferior derecha, "BAJA", "VAC", "L", etc... Copie el valor de la celda que se encuentra a la izquierda de esta, en un rango de celdas que se encuentra mucho más abajo (3000 filas más abajo) para después sumarlos o tratarlos según nos interese. Sin embargo nuestra macro no consigue leer el dato si es copiado y pegado!!! SOS!!! Nos vamos a volver locos!!! Hemos intentado de todo.... Y cuando digo de todo... Es de todo.

Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column / 2) = Int((Target.Column / 2)) And Target.Row <= 2529 Then
Select Case Target.Value
Case Is = "BAJA", "baja"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 27
'OLI: ESTE CASE HACE REFERENCIA A LAS HORAS INDICADAS EN EL CUADRO
Case Is = "BAJAH", "bajah"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 27
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 27
'OLI: ESTE CASE HACE REFERENCIA A LAS HORAS INDICADAS EN EL CUADRO
Case Is = "HSH", "hsh"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 45
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 45
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 45
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 45
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 45
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 45
'OLI: ESTE CASE HACE REFERENCIA A LAS HORAS INDICADAS EN EL CUADRO
Case Is = "CUH", "cuh"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 37
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 37
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 37
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 37
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 37
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 37
Case Is = "VAC", "vac"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 35
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 35
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 35
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 35
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 35
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 35
Case Is = "EXC", "exc"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 16
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 16
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 16
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 16
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 16
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 16
Case Is = "NO", "no"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 15
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 15
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 15
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 15
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 15
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 15
Case Is = "LR", "lr"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 38
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 38
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 38
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 38
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 38
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 38
Case Is = "LNR", "lnr"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 46
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 46
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 46
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 46
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 46
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 46
Case Is = "ABS", "abs"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 3
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 3
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 3
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 3
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 3
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 3
Case Is = "SES", "ses"
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 9
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 9
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 9
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 9
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 9
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 9
Case Is = "L", "l", " "
Cells(LTrim(Str(Target.Row)), Target.Column).Interior.ColorIndex = 2
Cells(LTrim(Str(Target.Row)) - 1, Target.Column).Interior.ColorIndex = 2
Cells(LTrim(Str(Target.Row)), Target.Column - 1).Interior.ColorIndex = 2
Cells(LTrim(Str(Target.Row)) - 1, Target.Column - 1).Interior.ColorIndex = 2
Cells(LTrim(Str(Target.Row)) - 2, Target.Column).Interior.ColorIndex = 2
Cells(LTrim(Str(Target.Row)) - 2, Target.Column - 1).Interior.ColorIndex = 2
Case Is = "JT", "OFI", "SUP", "GES", "RRHH", "jt", "ofi", "sup", "ges",...

1 Respuesta

Respuesta
1

Lamentablemente Excel no tiene un evento que se ejecute al copiado y pegado de celdas.

El evento Change solo se ejecuta cuando modificas algún dato manualmente.

Podrías intentar con el evento calculate pero se ejecutará con cualquier cálculo y será peor.

Mejor colocá las instrucciones en una subrutina (insertando un módulo) y luego le asignás un atajo de teclado o un botón. (Pueden leer más sobre el tema en la sección Macros de mi sitio)

PD) Si colocas la rutina en un módulo, por ej: Sub coloreando() ya no podrás utilizar Target sino la ref de la celda.

Si el tema quedó resuelto no olvides finalizar la consulta

Sdos

Elsa

Si necesitas mayores detalles presiona la opción Aclaración, sino FINALIZA la consulta.

PD) Encontrarás más detalles de cómo agregar atajos de teclado o botones en la sección Macros de mi sitio (no necesitas registrarte)

Sdos

Elsa

http://aplicaexcel.galeon.macros.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas