VBA Excel 2003: Copiar en una celda, si se cambia algún valor en esa fila

Para Dante Amor

Buenas tardes, como bien dice el título necesito una macro para copiar el valor de una celda, de la siguiente manera:

  1. La celda a copiar está en D2 (su contenido puede llegar a variar)
  2. El rango donde se escribe (y el cual debo observar si se modificó algo) es C7:W36 (en este rango tengo fórmulas, ¿influye en algo esto?)
  3. Si se modifica algún valor en la fila C7:W7, debe copiar el valor de D2 en D7.
  4. Si se modifica algún valor en la fila C8:W8, debe copiar el valor de D2 en D8, y así sucesivamente...

1 Respuesta

Respuesta
1

H o l a:

Si influye lo de las fórmulas, envíame tu archivo para revisar cuál sería la mejor forma para hacer la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Abel Rodrigo” y el título de esta pregunta.

¡Gracias! Te agradezco la respuesta, pero para simplificar la situación tomé una decisión:

  1. La celda a copiar está en D2 (su contenido puede llegar a variar, ya que aquí tengo el nombre del usuario que actualmente está usando la planilla)
  2. El rango donde se escribe y ORIGINALMENTE ESTA VACÍO (y el cual debo observar si se modificó algo) es E7:E36  (de nuevo, no existen fórmulas en este rango)
  3. Si se modifica el valor de E7 (es decir que se escribe algo),  la macro debe copiar el valor de D2 en D7.
  4. Si se modifica algún valor en la fila E8, la macro debe copiar el valor de D2 en D8, y así sucesivamente...

Espero haber aclarado la situación.

M u c h a s       g r a c i a s.

Pon la siguiente macro en los eventos de tu hoja:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E7:E36")) Is Nothing Then
        If Target = "" Then Exit Sub
        Target.Offset(0, -1) = [D2]
    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. Del lado derecho copia la macro

¡Gracias! Excelente la macro!

Un último favor, podrías explicarme en sencillas palabras que significa:

  • Target.Count > 1
  • If Not Intersect(Target, Range("E7:E36")) Is Nothing Then

Gracias

H o l a:

Target es la celda o celdas que modificaste.

Entonces, en Target, tenemos todo lo que modificaste, pudo ser una celda o varias celdas o insertar una fila o borrar una columna.

En Target. Count, tenemos cuántas celdas modificaste, si Target. Count es mayor a 1, es decir, si modificaste más de una celda al mismo tiempo, entonces la macro se sale.

Esto:

  • If Not Intersect(Target, Range("E7:E36")) Is Nothing Then

Significa si la modificación que hiciste a una celda, está en el rango de E7 a E36 que continúe la macro, de lo contrario que termine la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas