¿Cuál es el alcance predeterminado de las hojas de trabajo, las celdas y el rango?
Cuando simplemente escribe hojas de trabajo (), ¿cuál es el alcance predeterminado ActiveWorkbook o ThisWorkbook? Para aquellos que no conocen estas distinciones, son extremadamente importantes, especialmente en Excel 2013, cuando desea que se ejecuten macros al cambiar a diferentes libros.
En un módulo estándar, un no calificado Worksheets()
siempre hará referencia al ActiveWorkbook. En el ThisWorkbook
módulo, el calificador implícito es Me
y que hará referencia al libro que lo contiene.
Del mismo modo, un no calificado Range()
o Cells()
(o Rows()
/ Columns()
) en un módulo estándar hará referencia a ActiveSheet, pero en un módulo de código de hoja el calificador implícito es Me
y hará referencia a la hoja de trabajo correspondiente.
Unqualified... | Where | Implicit Qualifier
-----------------------------------------------------------------------
Worksheets(), | ThisWorkbook | Containing workbook (Me)
Sheets() | --------------------------------------------------
| Any other module | Active workbook (via [_Global])
-----------------------------------------------------------------------
Range(), Cells(), | Sheet module | Containing sheet (Me)
Rows(), Columns(),| --------------------------------------------------
Names() | Any other module | Active sheet (via [_Global])
-----------------------------------------------------------------------
La manera fácil de evitar tener que recordar nada de esto es calificar siempre completamente cualquier Worksheets
, Sheets
, Range
, Cells
o Names
referencia.
Califique la llamada del miembro Me
cuando se haga referencia ThisWorkbook
en el código subyacente de ese módulo o cuando se haga referencia Sheet1
en el código subyacente de ese módulo.