Necesito un macro en donde me genera un mensaje de alerta cuando el valor de una columna "O" sea menor o igual a 10

Necesito un macro en donde me genera un mensaje de alerta cuando el valor de una columna "O" sea menor o igual a 10, la celda esta basada en un contador que depende de la columna "A".

2 Respuestas

Respuesta
2

Hay dos formas de hacerlo una que la macro recorra la columna O fila por fila y te muestre el mensaje por cada vez que encuentre un numero menor 0 igual a 10, o con un countif que en un solo paso te diga cuantos números menores o iguales a 10 hay en la columna O. te pongo la primera opción que creo es la que ocupas, nota es solo un ejemplo

Sub menor_10()
Set datos = Range("o1").CurrentRegion
With datos
    f = .Rows.Count
    For i = 1 To f
        valor = .Cells(i)
        If valor <= 10 Then MsgBox ("valor menor de 10 " & valor), vbCritical, "AVISO"
    Next i
End With
End Sub
Respuesta
1

¿En la columna "O" tienes una fórmula? ¿Puedes poner la fórmula?

¿Realmente capturas un dato en la columna "A"? ¿O en la columna "A" también tienes una fórmula?

hola, si, esta es la formula =CONTAR.SI(L$2:L$710;L2) era la columna "L" no la "A", me equivoque, en la columna O muestra el conteo de la columna "L", lo que necesito es que cuando en la columna L el numero sea igual a 10 me genere un mensaje de alerta

En la columna O tienes esta fórmula:

=CONTAR.SI(L$2:L$710;L2) 

¿Pero esa fórmula la tienes en toda la columna? ¿O solamente en la celda O2?

Entonces, ¿capturas valores en la columna L? ¿O en la L también tienes fórmulas?

Podrías explicar con un ejemplo lo que realizas.

Por ejemplo, me imagino que estás en la celda L22 y capturas el número 7, supongo también que en la celda O22 tienes esta fórmula: =CONTAR.SI(L$2:L$710;L22), lo que hace la fórmula es revisar cuándo números 7 existen desde L2 hasta L710, si contar es igual a 10, entonces quieres que aparezca la alerta?

Si no es así, podrías describir tu proceso.

Si en toda la columna esta esa fórmula.

En la celda L son códigos, que se generan de otras 2 columnas los códigos son así; 0045S o 0055N, si por ejemplo "0045S" se repite 10 veces, va a aparecer u 10 en O, quiero que me aparezca un mensaje de alerta.

En el ejemplo que tu me das esta bien, por ejemplo la base la tengo hasta L710, los datos para atrás no me interesan, pero cuando ingrese un nueva fila 721 o 722, y en la columna O me da como resultado 10, me aparezca un mensaje de alerta.

Ojala me haya explicado bien

Hay algo que es muy importante y no me has respondido.

En la columna L capturas datos o en la columna L tienes otra fórmula. Si tienes otra fórmula debes decirme cuál es la fórmula.

Para que se genere un mensaje de alerta en automático, se debe activar un evento de la hoja, para que este evento de la hoja se active es necesario capturar un dato, pero si en la columna L tienes una fórmula, realmente no estás capturando un dato, en la columna L tienes el resultado de una fórmula y por este motivo no se puede activar el evento.

Entonces, regresando a mi duda, ¿En la columna L capturas datos o en la columna L tienes otra fórmula?

la formula de L es la siguiente  =DERECHA("0000"&B2;4)&C2, y que da como resultado un codigo como este 0045S

en donde:

B2: 45 y C2:S

Lo que estoy intentando hacer, es rastrear en cuál de tus celdas realmente capturas datos.

Según tu fórmula en la columna L, tienes esto: =DERECHA("0000"&B2;4)&C2

La siguiente pregunta es, capturas datos en las celdas B2 y C2 o también tienes fórmulas, si tienes fórmulas, cuáles son las fórmulas.

Si ya no tienes fórmulas, entonces pon la siguiente macro en los eventos de tu hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("B:C")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Row = 1 Then Exit Sub
        If Cells(Target.Row, "O") >= 10 Then
            MsgBox "Tienes un 10", vbInformation, "ALERTA"
        End If
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

Funciona de la siguiente manera:

Cada que captures datos en la columna B o C, la macro se activa, revisa el resultado en la columna O en la misma fila donde metiste datos, si el valor es >= 10 entonces te envía la Alerta.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Feliz Año 2018

.

primero muchas gracias por su tiempo

me funciono perfecto muchas gracias te pasaste

Estimado disculpa el abuso pero se me olvido una cosa

En el mensaje de alerta puede ir el valor que corresponda a "L" osea el código del que te había mencionado en el ejemplo "0045S" que seria la suma de la columna B y C, resumiendo el mensaje seria "Alerta código 0045S"

De ante mano muchas gracias

Saludos

Cambia la macro por esta:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("B:C")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Row = 1 Then Exit Sub
        If Cells(Target.Row, "O") >= 10 Then
            MsgBox "Alerta código " & Cells(Target.Row, "L"), vbInformation, "ALERTA"
        End If
    End If
End Sub

Al final de mi respuesta hay un botón para valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas