Es el . en .Rango necesario cuando está definido por .Cells?
Es ampliamente aceptado que esta no es la "mejor práctica".
dim rng as range
with thisworkbook '<~~ possibly set an external workbook
with .worksheets("sheet1")
set rng = .range(cells(2, 1), cells(rows.count, 1).end(xlup))
end with
end with
Los dosRange.Cells propiedades que definen el alcance de laObjeto de rango por defecto a laPropiedad ActiveSheet. Si esto no es Sheet1 (definido como el.Padre en elCon ... Finalizar con la declaración), la asignación fallará con,
Run-tim error '1004': Application-defined or object-defined error
Solución: uso.Cells
noCells
. Caso cerrado.
Es el.
necesario en estoObjeto de rango definición cuando tanto elRange.Cells las propiedades heredan el.Padre propiedad de hoja de trabajo que se define en elCon ... Finalizar con la declaración?
¿Cómo puede esto?
dim rng as range
with thisworkbook '<~~ possibly set an external workbook
with .worksheets("sheet1")
' define rng as Sheet1!A2 to the last populated cell in Sheet1!A:A
set rng = .range(.cells(2, 1), .cells(rows.count, 1).end(xlup)) '<~~ .range
end with
end with
debug.print rng.address(0, 0, external:=true)
... ser diferente de esto,
dim rng as range
with thisworkbook '<~~ possibly set an external workbook
with .worksheets("sheet1")
' define rng as Sheet1!A2 to the last populated cell in Sheet1!A:A
set rng = range(.cells(2, 1), .cells(rows.count, 1).end(xlup)) '<~~ range not .range
end with
end with
debug.print rng.address(0, 0, external:=true)
Usamos.range
cuando los parámetros que definen el alcance del rango son ambiguos; p.ej..range([A1])
losA1
la celda podría ser de cualquier hoja de trabajo y se establecerá de manera predeterminadaPropiedad ActiveSheet sin el.
. Pero, ¿por qué necesitamos hacer referencia al elemento primario de un objeto de rango cuando el ámbito que lo define ha hecho referencia a su hoja de cálculo principal?