Saltar al contenido

MSGBOX POR VALOR REPETIDO


Invitado R3Y468

Recommended Posts

Invitado R3Y468
publicado

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.

Private Sub worksheet_change(ByVal Target As Range)
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

Desde ya muchas gracias...

MACRO TRABAJADORES RETARDO.xlsm

Invitado R3Y468
publicado

Buen día; Aun no he podido resolver el tema de hacer funcionar la macro en diferentes filas, por lo que he tenido que modificar el código y el proyecto , indicando si el valor de la Columna  "K" es mayor a 2 , lanza el msgbox indicando que se superó el máximo de retardos.

Por lo poco que he podido leer necesito crear un bucle, el cual se repita en N numero de filas, pero aun no doy con el clavo espero me puedan ayudar. 

Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("hoja1").Cells(9, 11) > 2 Then
MsgBox ("EL TRABAJADOR SOLO TIENE DERECHO A 2 RETARDOS"), vbCritical, "AVISO"
End If
If Sheets("hoja1").Cells(10, 11) > 2 Then
MsgBox ("EL TRABAJADOR SOLO TIENE DERECHO A 2 RETARDOS"), vbCritical, "AVISO"
If Sheets("hoja1").Cells(11, 11) > 2 Then
MsgBox ("EL TRABAJADOR SOLO TIENE DERECHO A 2 RETARDOS"), vbCritical, "AVISO"
End If
End If
End Sub

Adjunto el libro de trabajo para ser mas especifico.

Gracias.

 

MACRO TRABAJADORES RETARDO.xlsm

Invitado R3Y468
publicado

Buen día , mi tema es de los mas visitados en el foro de macros en excel, pero al parecer es al que menos aportaciones se hicieron , por lo que si alguien llega acá buscando ayuda, de la misma manera que yo, les dejo el código que conseguí al final, esperando que alguien le funcione ...

saludos a todos los colaboradores...

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rCHK As Range

    Dim cRango As String

    

    ' Comprobamos que el valor cambiado está en las columnas H y AL

    cRango = "H:AL"

    Set rCHK = Application.Intersect(Target, Range(cRango))

    If rCHK Is Nothing Then Exit Sub    ' Si no está en el rango, salimos.

    

    ' rCHK.Row = la FILA que queremos comprobar

    ' 1º Comprobamos la fila que nos interesa, suponiendo que los datos están a partir de la 9.

    If rCHK.Row < 9 Then Exit Sub   ' Si estamos ANTES de la 9, no hacemos nada.

    

    If rCHK.Value = "R" Then  ' Si es R, comprobamos que MAXIMO 2!!!

        cRango = "H" & rCHK.Row & ":AL" & rCHK.Row  ' Ponemos la fila que queremos comprobar.

        If Application.WorksheetFunction.CountIf(Range(cRango), rCHK.Value) > 2 Then

            Call MsgBox("EL TRABAJADOR SOLO TIENE DERECHO A 2 RETARDOS!", vbCritical, "HOSPITAL")

            rCHK.Value = ""

        End If

    End If
      
  End Sub    

 

 

publicado
Hace 1 hora, R3Y468 dijo:

 mi tema es de los mas visitados en el foro de macros en excel, pero al parecer es al que menos aportaciones se hicieron

Es exactamente la solución que te di en el otro foro :unsure:. Has tardado mucho en aplicarla

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.