Cambiar entre hojas al activar la hoja necesaria puede ralentizar drásticamente el código. En su lugar puedes hacer referencia a una hoja que no está activa al hacer referencia primero al objeto Worksheet:
Worksheet(“Hoja1”).Range(“A1”)
Esta línea de código hace referencia a la Hoja1 del libro activo incluso si la Hoja2 es la hoja activa.
Si necesitas hacer referencia a un rango en otro libro, entonces incluye el objeto Workbook, el objeto Worksheet y luego el objeto Range:
Workbooks(“Facturas.xls”).Worksheets(“Hoja1”).Range(“A1”)
Ten cuidado si utilizes la propiedad Range como argumento dentro de otra propiedad Range. Debes identificar el rango de forma completa cada vez. Digamos que Hoja1 es la hoja activa y tienes que mostrar los datos totales en Hoja2:
WorksheetsFuncion.Sum(Worksheets(“Hoja2”).Range(Range(“A1”),Range(“A7”)))
Esta línea no funciona. ¿Por qué? Porque Range(Range(”A1”),Range(“A7”)) hace referencia a un rango adicional al principio de la línea de código. Excel no supone que quieres llevar la referencia del objeto Worksheet por encima de los otros objetos Range. Así que ¿qué podemos hacer? Podríamos escribir esto:
WorksheetFunction.Sum(Worksheets(“Hoja2”),Range(Worksheets(“Hoja2"). _
Range(“A1”),Worksheets(“Hoja2”).Range(“A7”)))
Observa que hay un .Range en el código, pero sin la referencia al objeto anterior. Esto es así porque With Worksheets(“Hoja2”) implica que el objeto de Range es Worksheet.
Technorati Tags: 