Copiar automáticamente un valor en una celda y pegarla en otra

Felicidades por su colaboración: Estoy trabajando en Excel y Busco una macro, para que, al cambiar el contenido de una celda origen, también cambie el contenido de una celda destino. Pero que lo haga automáticamente, sin más eventos que el propio cambio en la celda origen.

Respuesta

Don Ultraseven, para el caso propongo dos soluciones.

Solución 1: Si lo que deseas es que se pase el mismo valor de una celda a otra, ¿por qué no formular la celda destino? Bastaría con colocar en C1 "=A1", por ejemplo.

Incluso si es un valor diferente al de la celda origen, también puede formularse la celda destino con un condicional. Como el caso de formular C1 así:

$$\begin{align}&=Si(A1<>"";"Valor";"")\end{align}$$

Solución 2: Si es un valor diferente el que debe asignarse a la celda destino y se desea hacer mediante macros, se puede utilizar el evento Change de la hoja así:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Set Modificada= Range("A1")
    Set AModificar= Range("C2")
    If Not Intersect(Target, Activador) Is Nothing Then
        AModificar.value="Valor" ' Aquí se define el valor que debe tener la celda destino
    End If
End Sub

Explanation:

Lo que se hace es, cada vez que se modifica la hoja, verificar que la celda que se modificó fue el rango Modificada (definido en este caso como la celda "A1") y si es así, le asigna al Rango AModificar (Como C1) un valor preestablecido (por ejemplo, "Valor").


Si te ha servido no olvides valorar la respuesta. Buen viento y Buena mar.

Buena Tarde. Gracias por el envío del código, ya lo probé y me pidio las variables. se las declare. y me funciono. pero lo que realmente necesito. es que en la celda AModificar, se copie el valor que se escriba en la celda Modificada. cada vez que se cambie el mismo.  no lo hago con funciones porque tengo otras macros que modifican la misma celda y  al hacer esto, eliminaría la función.   espero me haya explicado bien.  y quedo altamente agradecido por el tiempo que se ha tomado en contestar.  buena suerte.

Sería

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Set Modificada = Range("A1")
    Set AModificar = Range("C2")
    If Not Intersect(Target, Modificada) Is Nothing Then
        AModificar.Formula = Modificada.Formula
    End If
End Sub

Si te ha servido no olvides valorar la respuesta. Buen viento y Buena mar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas