Alerta en excel

¿Hola, cómo está?, tengo en una hoja un listado de valores que cotizan en bolsa con sus respectivas subidas y bajadas (%), necesitaría un evento en vba, que cuando alcanzen un determinado % ya sea positivo o negativo, me saltara una alerta de dicho acontecimiento.
Gracias por la ayuda

1 Respuesta

Respuesta
1
¿Los valores que quieres monitorear son asignados por fórmula o de que forma?
¿Los valores están en una columna o fila específica?
Hola nuevamente, los valores están una columna (A2:A20) y sus valores en (B2:B20), vienen todos desde una consulta web.
Gracias nuevamente
Ok, según lo que entendí, me dices que los valores que deseas monitorear están en A2:A20 y que sus límites están en B2:B20.
Voy a suponer que en B están los límites superiores para los valores de A, por tanto, cuando los valores en A tomen un valor igual o superior a B, te lanzará una alerta (estos supuestos, porque tu pregunta no es suficiente mente clara)
Para ello, en la sección de código de la hoja en la que vas a trabajar, debes agregar esto
'-----------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'Validar que la celda modificada este en la columna A, entre las filas 2 y 20
    If Target.Row >= 2 And Target.Row <= 20 And Target.Column = 1 Then
'Verificar si el valor de la columna A ha superado al de la columna B
        If Target.Value >= Cells(Target.Row, 2) Then
            MsgBox "Se ha sobrepasado el límite", vbExclamation, "Límite"
        End If
    End If
End Sub

'-------------------------

Esto lo puedes adaptar a tus requerimientos específicos.
Cualquier consulta, no dudes en preguntar.
Hola nuevamente, no era eso precisamente pero me vale para otro tipo de cálculo, en el ejemplo que nos lleva, (A2:A20) Repsol, telefónica, bbva. Etc, (B2:B20) 0.04%, -0.10%, 0.7%, etc. Lo que necesito por ejemplo que cuando Repsol alcance la cuota de 0.05% me salte la alerta o cuando telefónica alcance el valor de -0.15% también me salte la alerta.
Gracias nuevamente
Con la palabra "alcance" ¿te refieres a que tome un valor: mayor que, menor que, igual que, menor igual que o mayor igual que?
Ej:
Que Repsol alcance la una cuota de 0.5 quiere decir que la alerta tiene que aparecer cuando Repsol tome un valor menor o igual que -0.15%.
¿Los valores límite los tendrás en una tabla o los establecerás por código nada más?
El código podría ser casi el mismo o variar bastante, pero sin antes aclarar lo anterior, no puedo hacer mucho más.
Hola de nuevo, yo le quiero poner un tope max y un tope min, ejemplo "Repsol cotiza a +0.04% de su precio de cierre anterior, pues cuando llegue a la cota de +0.05% me salte la alarma de comprar y cuando llegue a la cota de -0.01% me salte la alarma de vender" y lo mismo con el resto de valores, soy muy malo para explicarme je je. Los topes tanto max como min se establecerán mediante código, por que cada valor cotizará diferente.
Saludos y gracias
Ok, ya estamos más claros.
Definiremos un arreglo con los topes máximos y mínimos.
Private Sub Worksheet_Change(ByVal Target As Range)
     'Definir Cotas
     Dim Cotas(2 To 20, 1 To 2) As Double

'Ahora tienes que definir cada una de las cotas, para cada item.
'En la posición con índice 2, estarán los valores para el item de la fila 2, en la 3 los valores para el item 3 y así.
'Supongamos que tenemos Repsol en la 2 y telefónica en la 3

Cotas(2,1) = -0.01   'Mínima Repsol
Cotas(2,2) = 0.05  'Máxima Repsol

Cotas(3,1) = 0.1  'Mínima Telefónica
Cotas(3,2) = 0     'Máxima Telefónica

'Lo de telefonica es un supuesto


    'Validar que la celda modificada este en la columna A, entre las filas 2 y  20
    If Target.Row >= 2 And Target.Row <= 20 And Target.Column = 1 Then
        'Verificar si el valor de la columna A ha superado al de la columna B
        If Target.Value <= Cotas(Target.Row, 1) Then
            MsgBox "Vender", vbExclamation, "Límite"
        End If

        If Target.Value >= Cotas(Target.Row, 2) Then
            MsgBox "Comprar", vbExclamation, "Límite"
        End If
    End If
End Sub
Perfecto¡, pero ahora me surge otra duda, hemos puesto las mínimas fijas, ¿podrían ser aleatorias con referencia a alguna celda en particular?, me explico, en el valor 'repsol' desde que abre el mercado bursátil hasta que cierra, el precio sufre diferentes variaciones tanto positivas como negartivas, habría alguna forma de fijar ese precio mínimo o máximo, cuando aparezca, ¿se quede fijo y se cambie cuando nuevamente el precio lo rebase?
Gracias otra vez
En la misma hoja o en otra, has una lista con las mínimas y las máximas de cada item. Luego, en lugar de comparar con la matriz Cotas, comparas con el contenido de la lista que hiciste (la mariz cotas se elimina)
Supongamos que la Hoja3 en H pones la mínima y en I, la máxima y que las filas que utilizas son las mismas que utrilizas para cada item.
'Ahora tienes que definir cada una de las cotas, para cada item.
'En la posición con índice 2, estarán los valores para el item de la fila 2, en la 3 los valores para el item 3 y así.
'Lo de telefonica es un supuesto
    'Validar que la celda modificada este en la columna A, entre las filas 2 y  20
    If Target.Row >= 2 And Target.Row <= 20 And Target.Column = 1 Then
        'Verificar si el valor de la columna A es inferior que la columna H
        If Target.Value <= Sheets("Hoja3").Cells(Target.Row, 8).Value Then
            MsgBox "Vender", vbExclamation, "Límite"
            'Reajustar valor
             Sheets("Hoja3").Cells(Target.Row, 8).Value = Target.Value
        End If
        'Verificar si el valor de la columna A es inferior que la columna I      
        If Target.Value >= Sheets("Hoja3").Cells(Target.Row, 9).Value Then
            MsgBox "Comprar", vbExclamation, "Límite"
            'Reajustar valor             
            Sheets("Hoja3").Cells(Target.Row, 9).Value =          Target.Value
        End If
    End If
End Sub
Todo lo que está en negrita es lo que cambió.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas