Enviar este Articulo
|
Ya comente en articulos anteriores como insertar varias filas en Excel y tambien les explique como insertar mas de 1 columna o fila en Excel … ¿recuerdan?
El dia de hoy vamos a revisar una macro que nos permitira tambien insertar filas tal como la anterior, con la diferencia de que esta nueva macro ademas de insertar las celdas nos copiara (en caso de que existan) las formulas contenidas en dichas filas.
Es decir, si en la hoja donde queremos insertar flas ilas, contiene ademas celdas formuladas, esta macro nos permitira que las filas que insertemos ya vengan formuladas tambien.
Como siempre he comentado, es aconsejable guardar sus macros favoritas dentro del libro PERSONAL.XLS (o PERSONAL.XLSB si es que utilizan Office 2007).
Ahora bien, lo unico que tienen que definir en el codigo de la macro es indicarle la columna en la que se encuentra ubicada la primer celda formulada, ubiquen las siguientes lineas del codigo y cambien el dato marcado en rojo.
Cells(Rows.Count, "B").End(xlUp).Select
'Se agrega esta linea para ir al último dato de la columna B
Aqui les dejo el codigo VBA que deben copiar dentro del editor de Visual Basic, recuerden que para acceder al editor pueden hacerlo presionando al mismo tiempo las teclas Alt + F11 o bien, mediante el menu Herramientas opcion Macros y seleccionan la opcion Editor de Visual Basic.
‘ Inicia Macro para Insertar Filas con formulas en la celda seleccionada ‘
Dim vRows As Integer
Sub Agrega_fila_Y_llena_Formulas()
Application.ScreenUpdating = False
Cells(Rows.Count, "B").End(xlUp).Select 'Se agrega esta linea para ir al último dato de la columna B
ActiveCell.EntireRow.Select
If Application.WorksheetFunction.CountIf(ActiveCell.EntireRow, "<>") = 0 Then Exit Sub
If vRows <> 1 Then
vRows = Application.InputBox(prompt:= _
"Cuantas filas quiere añadir?", Title:="Agregar Filas", _
Default:="", Type:=1)
If vRows = False Then GoTo Salir
End If
Dim sht As Worksheet, shts() As String, i As Integer
ReDim shts(1 To Worksheets.Application.ActiveWorkbook. _
Windows(1).SelectedSheets.Count)
i = 0
For Each sht In _
Application.ActiveWorkbook.Windows(1).SelectedSheets
Sheets(sht.Name).Select
i = i + 1
shts(i) = sht.Name
Selection.Resize(rowsize:=2).Rows(2).EntireRow. _
Resize(rowsize:=vRows).Insert Shift:=xlDown
Selection.AutoFill Selection.Resize( _
rowsize:=vRows + 1), xlFillDefault
On Error Resume Next
Selection.Offset(1).Resize(vRows).EntireRow. _
SpecialCells(xlConstants).ClearContents
Next sht
Worksheets(shts).Select
Application.ScreenUpdating = True
Salir:
End Sub
Cualquier duda respecto del codigo de la macro o como aplicarlo en su libro de excel dejen sus comentarios.
























