¿Cuál es el alcance predeterminado de las hojas de trabajo, las celdas y el rango?

Resuelto CodeCamper asked hace 9 años • 1 respuestas

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.

CodeCamper avatar Feb 11 '15 01:02 CodeCamper
Aceptado

En un módulo estándar, un no calificado Worksheets()siempre hará referencia al ActiveWorkbook. En el ThisWorkbookmódulo, el calificador implícito es Mey 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 Mey 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, Cellso Namesreferencia.

Califique la llamada del miembro Mecuando se haga referencia ThisWorkbooken el código subyacente de ese módulo o cuando se haga referencia Sheet1en el código subyacente de ese módulo.

Tim Williams avatar Feb 10 '2015 19:02 Tim Williams