Diferencia entre hojas y hojas de trabajo en VBA

Índice
  1. La diferencia entre Hojas y Hojas de Trabajo
  2. ¿Qué tipo de hoja es?
  3. Objetos y colecciones
  4. Recorriendo hojas, hojas de trabajo y gráficos
    1. Ejemplo 1: recorrer cada hoja de trabajo de la colección de hojas de trabajo
    2. Ejemplo 2: recorrer cada gráfico de la colección de gráficos
    3. Ejemplo 3: recorrer cada objeto de la colección Hojas
    4. Ejemplo 4: recorrer cada hoja de la colección Hojas

Utilizo los términos Hoja y Hoja de cálculo indistintamente cuando hablo de Excel, creo que la mayoría de los usuarios lo hacen. Google también parece pensar que son lo mismo; Si busco "Cómo recorrer hojas de trabajo con Excel VBA", todos los resultados devueltos en la primera página se refieren a Hojas de trabajo.

Sin embargo, las hojas de cálculo y las hojas de trabajo desde la perspectiva de VBA definitivamente no son lo mismo. Desafortunadamente, la mayor parte del código VBA que escribo realmente no considera las diferencias... malos hábitos, lo sé. Con suerte, escribir esta publicación me inspirará a corregir mis malos hábitos y evitará que tú crees malos hábitos.

La diferencia entre Hojas y Hojas de Trabajo

En esencia, todas las hojas de trabajo son hojas de trabajo, pero no todas las hojas de trabajo son hojas de trabajo. Existen diferentes tipos de Hojas:

  • Hoja de trabajo: la hoja con las líneas de cuadrícula y las celdas.
  • Gráfico: la hoja que contiene un único gráfico.
  • DialogSheet: una hoja de diálogo de Excel 5. Estos están efectivamente desaparecidos ya que han sido reemplazados por VBA UserForms
  • Hojas de macros: una hoja que contiene macros de Excel 4 . Estos fueron reemplazados por VBA en 1995.
  • Hoja de macro internacional: una hoja que contiene una macro de Excel 4 compatible internacionalmente (también reemplazada en 1995).

Dado que las DialogSheets y ambas formas de hojas de macros fueron reemplazadas en los años 90, prácticamente podemos ignorarlas. Eso deja sólo dos tipos de hojas que es probable que encontremos: gráficos y hojas de trabajo.

Entonces, en resumen, cuando nos referimos a Hojas en VBA, estamos hablando de Gráficos y Hojas de Trabajo. Y cuando nos referimos a Hojas de trabajo, excluimos los Gráficos.

¿Qué tipo de hoja es?

Los diferentes tipos de hojas tienen sus propias propiedades. Por ejemplo, en una hoja de trabajo puede seleccionar celdas, pero no en una hoja de gráfico porque no hay celdas. Entonces, si queremos realizar determinadas acciones en la hoja activa, necesitamos saber en qué tipo de hoja nos encontramos.

SubtipoDeActiveSheet()MsgBox TypeName(ActiveSheet)End Sub

Al ejecutar el código anterior se generará un cuadro de mensaje con "Hoja de trabajo" o "Gráfico", según el tipo de hoja.

Objetos y colecciones

Comprender objetos y colecciones nos ayudará a dominar el uso de gráficos, hojas de trabajo y hojas.

Hoja de trabajo : una hoja de trabajo es un objeto que hace referencia a una sola hoja de trabajo. Cada hoja de trabajo es miembro de los objetos de la colección Hojas de trabajo y Hojas.

Hojas de trabajo : Hojas de trabajo es un objeto de colección que contiene todos los objetos de Hoja de trabajo individuales en un libro de trabajo.

Gráfico : un gráfico es un objeto que hace referencia a un único gráfico. El gráfico:

  • Puede estar contenido dentro de un Objeto de gráfico para un gráfico contenido en el anverso de la hoja de trabajo (fuera del alcance de esta publicación).
  • Puede ser miembro de los objetos de la colección Charts and Sheets.

Gráficos : los gráficos son un objeto de colección que contiene todos los objetos de la hoja de gráficos individuales dentro de un libro de trabajo. Esto no debe confundirse con el objeto ChartObjects, que es la colección de gráficos contenidos en la parte frontal de la hoja de trabajo.

Hojas : Hojas es un objeto de colección que contiene todos los objetos individuales Hoja de trabajo y Hoja de gráfico en un libro de trabajo.

Recorriendo hojas, hojas de trabajo y gráficos

Cuando usamos el bucle For Each, recorremos cada objeto dentro de una colección.

Ejemplo 1: recorrer cada hoja de trabajo de la colección de hojas de trabajo

El siguiente código VBA recorrerá cada hoja de trabajo de la colección de hojas de trabajo.

Sub LoopThroughWorksheets()'Cree una instancia del objeto Worksheet llamado "ws"Dim ws As Worksheet'Recorra cada objeto Worksheet en la colección Worksheets para cada ws en ActiveWorkbook.Worksheets MsgBox ws.NameNext wsEnd Sub

Ejemplo 2: recorrer cada gráfico de la colección de gráficos

El siguiente código recorrerá cada gráfico de la colección de gráficos.

Sub LoopThroughCharts()'Crea una instancia del objeto Chart llamada "cht"Dim cht As Chart'Recorre cada objeto Chart en la colección ChartsPara cada cht en ActiveWorkbook.Charts MsgBox cht.NameNext chtEnd Sub

Ejemplo 3: recorrer cada objeto de la colección Hojas

Para recorrer cada hoja, no podemos declarar un objeto Hoja porque no existe. El siguiente ejemplo recorre cada objeto (es decir, incluirá objetos Gráfico y Hoja de trabajo) contenidos en la colección Hojas.

Sub LoopThroughSheets()'Crea una variable para contener cualquier objeto llamado "obj"Dim obj As Object'Recorre cada objeto en la colección SheetsPara cada obj en ActiveWorkbook.Sheets MsgBox obj.NameNext objEnd Sub

Ejemplo 4: recorrer cada hoja de la colección Hojas

Como alternativa al Ejemplo 3, podríamos contar las hojas y luego realizar un bucle For.

Sub LoopThroughSheets()Dim i As Integer'Cuenta todas las hojas y recorre cada una de ellasFor i = 1 To Sheets.Count MsgBox Sheets(i).NameNext iEnd Sub

Este método de bucle contando los objetos funcionará igualmente bien con gráficos y hojas de trabajo.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...