Saltar al contenido

Celda cambie valor según el valor de otra


Recommended Posts

publicado
Buenos días:

Estoy trabajando en un archivo en el que necesito que cuando cambie el valor de una celda se cambie automáticamente el valor de otra.

He conseguido que funcione usando el evento Change en la Hoja en cuestión.
 
Código:
 
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Set h1 = Sheets("LISTADO")

 For i = h1.Range("c" & Rows.Count).End(xlUp).Row To 6 Step -1
        If (h1.Cells(i, "c")) <> "" Then
            h1.Cells(i, "d").Value = "BAJA"
          Else
           h1.Cells(i, "d").Value = "ACTIVO"
    
        End If
    Next
    
       Application.EnableEvents = True
End Sub
Me funciona correctamente en una hoja con 3 columnas de datos, pero se "engancha" y ralentiza mucho el proceso si hay más columnas con datos. (que es lo que necesito). Siempre que se cambia de celda seleccionada tiembla el cursor y hay que esperar para introducir datos lo que es incómodo.

Quizás no estoy usando la manera más eficiente.

La columna "Estado" puede tener 3 valores posibles: "ACTIVO", "PAUSADO" y "BAJA". Lo que necesito es que cuando ponga la fecha de baja el estado pase a ser "BAJA". Otra cosa que me planteo es cómo poder cambiar de nuevo al estado anterior en caso de hacer completado, por error, la fecha de baja, por ejemplo y rectifique.




Gracias por vuestra ayuda de antemano.

Un saludo
 

 

 

publicado
Hace 15 minutos , isauma dijo:
Buenos días:

Estoy trabajando en un archivo en el que necesito que cuando cambie el valor de una celda se cambie automáticamente el valor de otra.

He conseguido que funcione usando el evento Change en la Hoja en cuestión.
 
Código:
 

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Set h1 = Sheets("LISTADO")

 For i = h1.Range("c" & Rows.Count).End(xlUp).Row To 6 Step -1
        If (h1.Cells(i, "c")) <> "" Then
            h1.Cells(i, "d").Value = "BAJA"
          Else
           h1.Cells(i, "d").Value = "ACTIVO"
    
        End If
    Next
    
       Application.EnableEvents = True
End Sub
Me funciona correctamente en una hoja con 3 columnas de datos, pero se "engancha" y ralentiza mucho el proceso si hay más columnas con datos. (que es lo que necesito). Siempre que se cambia de celda seleccionada tiembla el cursor y hay que esperar para introducir datos lo que es incómodo.

Quizás no estoy usando la manera más eficiente.

La columna "Estado" puede tener 3 valores posibles: "ACTIVO", "PAUSADO" y "BAJA". Lo que necesito es que cuando ponga la fecha de baja el estado pase a ser "BAJA". Otra cosa que me planteo es cómo poder cambiar de nuevo al estado anterior en caso de hacer completado, por error, la fecha de baja, por ejemplo y rectifique.




Gracias por vuestra ayuda de antemano.

Un saludo
 

 

 

 

publicado

Recuerda que tienes la misma consulta abierta en otro foro, no la dejes colgada aunque te la solucionen aquí.

  • 2 weeks later...
publicado

 

En 23/4/2020 at 17:44 , Toldeman dijo:

Hola.

No te valdria con una sola linea de codigo.

 


If Target.Address Like "$C$*" Then Target.Offset(, 1) = "Baja"

 

 

Saludos.

Gracias Toldeman.

En cuanto tenga un rato probaré con tu propuesta.

De momento estoy funcionando con el código que Antoni me facilitó en el otro foro.Creo que tu opción podría servir pero no he tenido tiempo de probar.

Gracias a ambos.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Row > 5 Then
   If Target.Address Like "$B$*" Or _
      Target.Address Like "$C$*" Then
      Range("D" & Target.Row) = ""
      If IsDate(Range("C" & Target.Row)) Then
         Range("D" & Target.Row) = "BAJA"
      Else
         If IsDate(Range("B" & Target.Row)) Then
            Range("D" & Target.Row) = "ACTIVO"
         End If
      End If
   End If
End If
Application.EnableEvents = True
End Sub

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.