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.

Elegir cantidad de filas a seleccionar

Figura 1. Elegir cantidad de filas a seleccionar.

Ahora te pide la cantidad de columnas a elegir.

Elegir cantidad de columnas a seleccionar

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.

Confirmación sobre filas y columnas elegidas

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.

Vemos cómo se insertaron las 10 filas

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.

You may also like...