Congelar celda una vez cumplida una condición

Estimados buenas con todos:

El problema es que tengo una función condicional "SI" que depende de un determinado valor que varia con el tiempo. Por ejemplo tengo en la celda A1 un valor variable y cuando se cumpla que A1>5, la celda A2 debe señalar "OK" y este ultimo valor no se modifique con el tiempo, osea se quede como "OK" así la condición ya no se cumpla.

1 respuesta

Respuesta
1

Pon lo siguiente en los eventos de tu hoja

Private Sub Worksheet_Calculate()
    If Range("A1").Value > 5 Then
        If Range("A2").Value = "" Then
            Range("A2").Value = "Ok"
        End If
    End If
End Sub

Cambia las A1 y A2 por las celdas reales


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


.

.

Gracias por tu ayuda Dante, pero tengo una consulta más: Hice lo que me indicaste pero para que se ejecute la orden tengo que colocar el botón "Sub/Userform (F5)" en la macro ¿Habría una opción para que lo haga automático, como lo hacen las funciones de excel?

No sé a qué te refieres con "colocar el botón "Sub/Userform (F5)" en la macro "

La macro se ejecuta en automático. Supongo que en la celda A1 tienes un fórmula, entonces cada vez que el resultado de la fórmula cambie, la macro se activa.

Tienes que seguir los pasos para colocar el código. La macro no va ni en un módulo, ni en un form. La macro va en los eventos de la hoja. Sigue las indicaciones:

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

Si tienes razón, muchas gracias nuevamente Dante, lo codifique de la siguiente forma:

Private Sub Worksheet_Calculate()
If Range("K93").Value > Range("F93") Then
If Range("N93").Value = "" Then
Range("N93").Value = "Ok"
End If
End If
End Sub

Una ultima consulta, ¿sabes cómo puedo hacer para que compare un rango de celdas osea con K93, F93, N93 - K94, F94, N94 - K95, F95, N95 y así sucesivamente? Disculpa las molestias.

Te anexo la macro con los cambios

Private Sub Worksheet_Calculate()
    For i = 93 To Range("K" & Rows.Count).End(xlUp).Row
        If Range("K" & i).Value > Range("F" & i).Value Then
            If Range("N" & i).Value = "" Then
                Range("N" & i).Value = "Ok"
            End If
        End If
    Next
End Sub

[No olvides valorar la respuesta.]

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas