Dejar abierto el rango de "autofill" en una macro

Me estoy iniciando con las macros y el problema que me surgió fue que realizo un autofill para pegar una fórmula hacia abajo, pero el rango se queda fijo, y yo necesito que el rango se quede abierto, ya que la macro la aplicaría en archivos cuyo formato es el mismo, pero el numero de celdas hacia abajo varia, ¿cómo lo puedo hacer?
' Formatoventasfinal Macro
' Formato final de la venta
'
' Acceso directo: CTRL+e
'
Range("C3").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[7],'[Catalogo de clientes Junio 2011 (2).xlsx]Catalogo'!R3C1:R2861C6,5,0)"
Range("C3").Select
Selection.AutoFill Destination:=Range("C3:C2269")
Range("C3:C2269").Select
Range("D3").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[6],'[Catalogo de clientes Junio 2011 (2).xlsx]Catalogo'!R3C1:R2861C6,6,0)"
Range("D3").Select
Selection.AutoFill Destination:=Range("D3:D2269")
Range("D3:D2269").Select
Range("G3").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[3],'[Catalogo de clientes Junio 2011 (2).xlsx]Catalogo'!R3C1:R2861C6,3,0)"
Range("G3").Select
Selection.AutoFill Destination:=Range("G3:G2269")
Range("G3:G2269").Select
Range("H3").Select
ActiveCell.FormulaR1C1 = "=RC[-2]=RC[-1]"
Range("H3").Select
Selection.AutoFill Destination:=Range("H3:H2269")
Range("H3:H2269").Select
End Sub

3 Respuestas

Respuesta
4

Esto les puede ayudar a determinar el rango que les esta variando en el autofill observen que el Autofill esta definido por 2 partes, la 1ra que va desde selection hasta (doble punto ":") hay se define la celda donde esta la fórmula y la segunda es el recorrido o largo de la columna o fila, en su caso columna.

Les sugiero, borren ". select" y "selection." quedando de esta forma; "Range("C3").AutoFill Destination:Range("C3").AutoFill Destination:" (ok con esto la primera parte)

Resolvamos la segunda que es la que les esta dando dolores de cabeza =Range("C3:C" & Range("B" & Rows.Count).End(xlUp).Row), aqui lo unico que hicimos fue colocarle un contador de celdas definidos por esta instrucción "("B" & Rows.Count).End(xlUp).Row.End(xlUp).Row" le coloque la columna "B", porque presumo que es la columna que se quiere emparejar, donde esta la B pueden colocar la letra de la columna que quieran, pero tomen en cuenta que es la que les va a definir el largo de la ecuación, en resumido la instruccion completa queda así;

Range("C3").AutoFill Destination:=Range("C3:C" & Range("B" & Rows.Count).End(xlUp).Row)

Espero le sirva y perdonen lo largo de la explicación.

Respuesta
1
Osea que en esta linea
Selection.AutoFill Destination:=Range("C3:C2269") , debe ser variable C2269
utiliza el modo concatenado asi:
Selection.AutoFill Destination:=Range("C3" & ":" & "C" & fila)
En donde fila es una variable numérica que contiene el valor de la fila hasta donde debe realizar el autofill.
Ahora como determinas ese valor, eso va por tu cuenta.
Bye
Respuesta

Yo tengo un caso similar como arreglaron lo variable numérica

'Dim fila As String
'Range("E2").End(xlDown).Select
'lista = Selection.Cells(1, 1).Address
Rows("2:2").Select
Selection.AutoFilter
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("G:G").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("H:H").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("P:P").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D3").Select
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],3)"
Range("D3").Select
'Selection.AutoFill Destination:=Range("D3" & ":" & "D" & fila)
Selection.AutoFill Destination:=Range("D3:D13816")
Range("D3:D13816").Select
Range("G3").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],base.xlsm!cc,4,0)"
Range("G3").Select
Selection.AutoFill Destination:=Range("G3:G13816")
Range("G3:G13816").Select
Range("H3").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-6],base.xlsm!cuentas,8,0)"
Range("H3").Select
Selection.AutoFill Destination:=Range("H3:H13816")
Range("H3:H13816").Select
Range("P3").Select
ActiveCell.FormulaR1C1 = "=DATEDIF(RC[-1],TODAY(),""d"")"
Range("P3").Select
Selection.AutoFill Destination:=Range("P3:P13816")
Range("P3:P13816").Select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas