MSGBOX POR CONTEO DE RANGO
Publicado por R3Y468 (2 intervenciones) el 26/02/2019 23:03:11
Buenas tardes, soy nuevo en esto del visual basic, espero me puedan echar un cable, he conseguido una macro la cual la he ido adaptando a las necesidades, lo que requiero es que el rango que especifico, al pasar a la siguiente fila se mantenga el conteo, la macro funciona de la columna D9:J9 al repetir el valor "R" mas de 2 veces despliega el MsgBox y borra el ultimo valor Introducido limitandolo a 2 valores.
Es una tabla que consta de los retardos de los trabajadores de lunes a domingo, el primer trabajador se ubica en D9 : J9, el siguiente en D10 : J10 el tercer trabajador de D11: J11 Y así sucesivamente, la macro solo me funciona con el primer trabajador, que al introducir un tercer retardo "R" lanza un msgbox indicando que se alcanzo el máximo de retardos por trabajador en la semana.
Requiero que la macro funcione en la siguiente fila, que es otro trabajador, y realice la misma operación contar, de D:J, Pero en la siguiente fila.
Espero me puedan ayudar, Gracias.
Es una tabla que consta de los retardos de los trabajadores de lunes a domingo, el primer trabajador se ubica en D9 : J9, el siguiente en D10 : J10 el tercer trabajador de D11: J11 Y así sucesivamente, la macro solo me funciona con el primer trabajador, que al introducir un tercer retardo "R" lanza un msgbox indicando que se alcanzo el máximo de retardos por trabajador en la semana.
Requiero que la macro funcione en la siguiente fila, que es otro trabajador, y realice la misma operación contar, de D:J, Pero en la siguiente fila.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("D9:J9")) Is Nothing Then
If Application.CountIf(Range("D9:J9"), Target) > 2 Then
If Target.Value = "R" Then
MsgBox "EL TRABAJADOR SOLO TIENE DERECHO A 2 RETARDOS!", vbCritical, "HOSPITAL"
Target.Value = ""
End If
End If
End If
'---------------------------------------------------------------------
If Not Intersect(Target, Range("D9:J9")) Is Nothing Then
If Application.CountIf(Range("D9:J9"), Target) > 2 Then
If Target.Value = "OE" Then
MsgBox "EL TRABAJADOR SOLO TIENE DERECHO A 2 OMISIONES!", vbCritical, "HOSPITAL"
Target.Value = ""
End If
End If
End If
End Sub
Espero me puedan ayudar, Gracias.
Valora esta pregunta
0