Cómo copiar una fila en Excel VBA

Usar VBA para programar Excel no es tan popular como lo era antes. Sin embargo, todavía hay muchos programadores que lo prefieren cuando trabajan con Excel. Si eres una de esas personas, este artículo es para ti.

Copiar una fila en Excel VBA es el tipo de cosas para las que Excel VBA es realmente útil. Por ejemplo, es posible que desee tener un archivo de todos sus recibos con fecha, cuenta, categoría, proveedor, producto / servicio, y el costo ingresó una línea a la vez, a medida que ocurren, una instancia de contabilidad en evolución en lugar de contabilidad estática Para hacer esto, debe poder copiar una fila de una hoja de trabajo a otra.

Un programa Excel VBA de ejemplo que copia una fila de una hoja de trabajo a otra, usando solo tres columnas para simplificar, contiene:

  • Una columna alfa para texto
  • Una columna numérica: se crea una suma automática en la hoja de trabajo de destino
  • Una columna de fecha: la fecha y hora actuales se completan automáticamente

Consideraciones para escribir código Excel VBA

instagram viewer

Para desencadenar un evento que copia la fila, vaya con el estándar: un control de formulario Botón. En Excel, haga clic en Insertar en la pestaña Desarrollador. Luego, seleccione el control de formulario Botón y dibuje el botón donde lo desee. Excel muestra automáticamente un cuadro de diálogo para darle la oportunidad de seleccionar un macro activado por el evento de clic del botón o para crear uno nuevo.

Hay varias formas de encontrar la última fila en la hoja de trabajo de destino para que el programa pueda copiar una fila en la parte inferior. Este ejemplo elige mantener el número de la última fila en la hoja de trabajo. Para mantener el número de la última fila, debe almacenar ese número en algún lugar. Esto puede ser un problema porque el usuario puede cambiar o eliminar el número. Para evitar esto, colóquelo en la celda directamente debajo del botón de formulario. De esa manera, es inaccesible para el usuario. (Lo más fácil es ingresar un valor en la celda y luego mover el botón sobre ella).

Código para copiar una fila con Excel VBA

Sub Add_The_Line () Dim currentRow As Integer Sheets ("Sheet1"). Seleccione currentRow = Range ("C2"). Valor Filas (7). Seleccione Selección. Copiar hojas ("Sheet2"). Seleccione Filas (currentRow). Seleccione ActiveSheet. Pegue Dim theDate As Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3) .Activete Dim rTotalCell As Range Set rTotalCell = _ Sheets ("Sheet2"). Cells ( Filas Recuento, "C"). Fin (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Suma _ (Rango ("C7", rTotalCell. Offset (-1, 0))) Hojas ("Sheet1"). Rango ("C2"). Valor = currentRow + 1 End Sub 

Este código usa xlUp, un "número mágico", o más técnicamente una constante enumerada, que es reconocida por el método End. Offset (1,0) simplemente se mueve una fila hacia arriba en la misma columna, por lo que el efecto neto es seleccionar la última celda en la columna C.

En palabras, la declaración dice:

  • Vaya a la última celda en la columna C (equivalente a Fin + Flecha abajo).
  • Luego, regrese a la última celda no utilizada (equivalente a Fin + Flecha arriba).
  • Luego, sube una celda más.

La última declaración actualiza la ubicación de la última fila.

VBA es probablemente más difícil que VB.NET porque debe conocer los objetos VB de Excel y VB. El uso de xlUP es un buen ejemplo del tipo de conocimiento especializado que es crítico para poder escribir macros VBA sin buscar tres cosas diferentes para cada declaración que codifique. Microsoft ha hecho un gran progreso en la actualización del editor de Visual Studio para ayudarlo a descubrir la sintaxis correcta, pero el editor de VBA no ha cambiado mucho.

instagram story viewer