VBA Excel 2003: copiar hasta la última fila donde haya registros

P/ Dante Amor 

La consulta es sobre el siguiente trabajo que realizo de manera manual y quisiera automatizarla:

  1. Los datos se cargan en la columna B, desde B1 en adelante.
  2. Los datos que tengo que copiar están en K1 y L1 (pueden ir variando, pero no se van a mover de estas celdas).
  3. La columna a dónde se van a copiar los datos de K1 y L1, es la columna C desde C1

Lo que sucede es lo siguiente:

  1. Puede suceder que en una primera carga de registros, se complete desde B1 a B3. Entonces copio los valores de K1 y L1 en C1, hasta C3.
  2. En una nueva carga de registros, puede ser que vaya de B4 a B20 y los valores de K1 y L1 cambiaron: necesito que estos nuevos valores de K1 y L1 se copien desde C4 en adelante... ¿hasta dónde? Hasta llegar a la última fila de B (en el ejemplo fila 20)

G r a c i a s

1 Respuesta

Respuesta
1

H o l a:

Pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 200 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        For Each c In Target
            If c.Value <> "" Then
                Cells(c.Row, "C") = [K1]
                Cells(c.Row, "D") = [L1]
            Else
                Cells(c.Row, "C") = ""
                Cells(c.Row, "D") = ""
            End If
        Next
    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. En el panel del lado derecho copia la macro

':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Gracias!!! Podrías explicarme que significa 

If Target.Count > 200 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then

Si modificas más de 20 celdas entonces se sale de la función, es para evitar que excel se bloquee.

If Target.Count > 200 Then Exit Sub

Para verificar si modificaste alguna celda de la columna B, se utiliza lo siguiente:

If Not Intersect(Target, Range("B:B")) Is Nothing Then

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas