En la mayoría de las macros, trabajamos con un rango ya previamente seleccionado o armamos la referencia al rango como una combinación de fila y columna.
Por ejemplo: dire = Range(Cells(1,1), Cells(20,colx))
A continuación veremos el uso de la función INPUTBOX que nos permitirá seleccionar un rango para continuar con un proceso ya iniciado.
Para este ejemplo tendremos:
1 hoja principal y 1 hoja que se agrega para recibir la copia del rango seleccionado:
Se filtra la columna 2 (Fecha) de la tabla principal, por el año que se obtiene de la celda E9.
Sub procesoContinuo()
'hoja activa.
Set hojaTabla = ActiveSheet
'crear una hoja nueva
Set nvaHoja = Sheets.Add
'volver a la hoja principal
hojaTabla.Activate
'en este ejemplo se filtra la tabla x
algún criterio
crit = "12/27/" & Year(Range("E9"))
ActiveSheet.ListObjects("PaymentSchedule3").Range.AutoFilter
Field:=2, _
Operator:=xlFilterValues, Criteria2:=Array(0, crit)
'se selecciona un rango de la tabla
filtrada
On Error Resume Next
Set rgox = Application.InputBox("Seleccione una celda o rango", Type:=8)
'si el rango no está vacío lo
copiamos en la nueva hoja
If Not IsEmpty(rgox) Then
rgox.Copy
nvaHoja.Activate
'se pegan solo valores y formatos de
número
Range("B3").PasteSpecial Paste:=xlPasteValuesAndNumberFormats,
Operation:= _
xlNone, SkipBlanks:=False,
Transpose:=False
Application.CutCopyMode = False
MsgBox "El rango ya fue copiado. El proceso continúa....", ,
"Información"
End If
'otras instrucciones. Por ej:
'1- volver a hoja principal y quitar
los filtros,
hojaTabla.Activate
ActiveSheet.ListObjects("PaymentSchedule3").Range.AutoFilter Field:=2
'2- renombrar la hoja creada,
'3- dar formato al rango copiado, etc
End Sub
Descargar libro de ejemplo desde aquí.
Acceso al VIDEO N° 67 con el desarrollo de 2 ejemplos: macro con selección de rango previo y macro con selección de rango durante un proceso.
No hay comentarios.:
Publicar un comentario