Macro para elegir e insertar n cantidad de filas y columnas en Excel
En mis labores diarias requiero elegir n cantidad de filas y columnas para posteriormente copiarlas a otro lugar, de la misma manera, requiero insertar n cantidad de filas y/o columnas.
Mediante el método InputBox recojo la cantidad de filas y columnas a seleccionar, para posteriormente tener la opción de insertarlas. InputBox me facilitará la manera de recoger información evitando el uso de Formularios, los cuales por esta ocasión dejaré descansar.
Elegir filas o columnas
Ejecutamos la macro y lo primero que nos pedirá es la cantidad de filas a elegir.
Figura 1. Elegir cantidad de filas a seleccionar.
Ahora te pide la cantidad de columnas a elegir.
Figura 2. Elegir cantidad de columnas a seleccionar.
Insertar filas o columnas
Cuando ingresamos las cantidades de filas y columnas, se seleccionarán el rango correspondiente a las filas y columnas, además de que veremos un resumen del rango elegido y nos preguntará si deseamos insertar la misma cantidad de filas y columnas.
Figura 3. Confirmación sobre filas y columnas elegidas.
En la Figura 3 vemos que se eligieron 10 filas y cero columnas. En la Figura 4 vemos cómo se insertan la mismas 10 filas a partir de la celda activa.
Figura 4. Vemos cómo se insertaron las 10 filas.
Código vba de la Macro
'--------------------------------------------------------------------------------------- ' Module : Módulo1 ' Author : MVP, Sergio Alejandro Campos ' Date : 22/04/2016 ' Purpose : Elegir e insertar n' cantidad de filas y columnas ' Website : http://www.exceleinfo.com ' Subscribe : https://www.youtube.com/user/sergioacamposh '--------------------------------------------------------------------------------------- ' Option Explicit ' Sub ElegirInsertarFilasColumnas() ' 'Declaración de variables ' Dim CeldaActiva As String Dim FilasElegir As Integer Dim ColumnasElegir As Integer Dim FilaActiva, ColumnaActiva Dim RangoElegido As String Dim PreguntaIns As String Dim NFilaActiva As String Dim NColumnaActiva ' On Error GoTo ErrorHandler '[Opcional] 'Range("A9").Select CeldaActiva = ActiveCell.Address ' 'Elegir cantidad de filas. ' FilasElegir = InputBox(" A partir de " & CeldaActiva & _ " Cuántas filas deseas seleccionar?", "Número de filas", 0) ' 'Elegir cantidad de columnas. ' ColumnasElegir = InputBox(" A partir de " & CeldaActiva & _ " Cuántas columnas deseas seleccionar?", "Número de columnas", 0) ' FilaActiva = ActiveCell.Row ColumnaActiva = ActiveCell.Column ' If FilasElegir > 1 Then NFilaActiva = FilaActiva + FilasElegir - 1 Else NFilaActiva = FilaActiva If ColumnasElegir > 1 Then NColumnaActiva = ColumnaActiva + ColumnasElegir - 1 Else NColumnaActiva = ColumnaActiva ' 'Seleccionar la cantidad de filas y columnas antes ingresadas. ' Range(Cells(FilaActiva, ColumnaActiva), Cells(NFilaActiva, NColumnaActiva)).Select RangoElegido = Selection.Address ' 'Una vez elegidas las filas y columnas, se pregunta si se requiere insertar. ' PreguntaIns = MsgBox("Rango: " & RangoElegido & vbNewLine & vbNewLine & "Se eligieron " & _ FilasElegir & " filas y " & ColumnasElegir & " columnas." & vbNewLine & vbNewLine & _ "Deseas insertar esa misma cantidad de filas y columnas?", vbQuestion + vbYesNo, "EXCELeINFO") ' If FilasElegir = 0 And ColumnasElegir = 0 Then Exit Sub ' 'Se insertan la misma cantidad de filas y columnas antes ingresadas. ' If PreguntaIns = vbYes Then If FilasElegir = 0 Then Range(Cells(FilaActiva, ColumnaActiva), Cells(NFilaActiva, NColumnaActiva)).EntireColumn.Insert Else If ColumnasElegir = 0 Then Range(Cells(FilaActiva, ColumnaActiva), Cells(NFilaActiva, NColumnaActiva)).EntireRow.Insert Else Range(Cells(FilaActiva, ColumnaActiva), Cells(NFilaActiva, NColumnaActiva)).EntireColumn.Insert Range(Cells(FilaActiva, ColumnaActiva), Cells(NFilaActiva, NColumnaActiva)).EntireRow.Insert End If End If End If ' Exit Sub ' 'En caso de error, por lo regular no ingresar un número válido. ' ErrorHandler: MsgBox "Error: " & Err.Description & "." & vbNewLine & vbNewLine & _ "Debes ingresar un número válido.", vbExclamation, "Error de número" End Sub
Descarga el ejemplo
Descarga el archivo usado en este ejemplo: Elegir e insertar n cantidad de filas y columnas.xlsm.