ListObjects de VBA

¿Qué son ListObjects en VBA?

En una tabla, normalmente, lo que vemos es un conjunto de datos, pero en la terminología de VBA hay muchos más, ya que hay un rango del rango total de la lista de datos, la columna se conoce como la columna de la lista y la fila se conoce como la fila de la lista y así sucesivamente. , por lo que para acceder a estas propiedades tenemos una función incorporada conocida como Listobjects y que se usa con la función de hoja de trabajo.

VBA ListObject es una forma de hacer referencia a las tablas de Excel mientras se escribe el código VBA. Al usar VBA LISTOBJECTS, podemos crear, eliminar tablas y, por completo, podemos jugar con tablas de Excel en código VBA. Las tablas de Excel son complicadas, principiantes e incluso, hasta cierto punto, a los usuarios de nivel intermedio les resulta difícil trabajar con tablas. Dado que este artículo habla sobre hacer referencia a tablas de Excel en la codificación VBA, es mejor que tenga un buen conocimiento sobre las tablas en Excel.

Cuando los datos se convierten en tablas, ya no trabajamos con un rango de celdas, sino que tenemos que trabajar con rangos de tablas, por lo que en este artículo, le mostraremos cómo trabajar con tablas de Excel para escribir códigos VBA de manera eficiente.

Crear formato de tabla usando ListObjects en Excel VBA

Por ejemplo, mire los datos de Excel a continuación.

Usando el código ListObject de VBA crearemos un formato de tabla para estos datos.

Puede descargar esta plantilla de Excel de VBA ListObjects aquí - Plantilla de Excel de VBA ListObjects
  • Para estos datos, primero debemos encontrar cuál es la última fila y columna utilizada, así que defina dos variables para encontrar esto.

Código:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long End Sub 

  • Para encontrar la última fila y columna utilizada, utilice el siguiente código.

Código:

LR = Celdas (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column

  • Ahora defina una variable más para contener la referencia de los datos.

Código:

 Dim Rng como rango 

  • Ahora establezca la referencia a esta variable utilizando el siguiente código.

Código:

 Establecer Rng = Celdas (1, 1). Redimensionar (LR, LC)

Ahora necesitamos usar el método VBA “ListObject.Add” para crear una tabla y debajo está la sintaxis de la misma.

ListObject.Add (Origen, XlListObjectHasHeaders, Destino, TableStyleName)

Fuente: Esto no es nada para qué rango de celdas estamos insertando la tabla. Por lo tanto, podemos proporcionar dos argumentos aquí, es decir, "xlSrcRange" y "xlSrcExternal".

XlListObjectHasHeaders: si la tabla que inserta datos tiene encabezados o no. Si es así, podemos proporcionar "xlYes", si no, podemos proporcionar "xlNo".

Destino: esto no es más que nuestro rango de datos.

Estilo de tabla: si desea aplicar cualquier estilo de tabla, podemos proporcionar estilos.

  • Ok, ahora en la hoja activa estamos creando la tabla, por lo que el siguiente código crearía una tabla para nosotros.

Código:

 Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Después de esto, necesitamos darle un nombre a esta tabla.

Código:

Ws.ListObjects (1) .name = "EmpTable"

  • A continuación se muestra el código completo para su referencia.

Código:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column Dim Rng As Range Set Rng = Cells (1, 1) .Resize (LR, LC) Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, ejecutemos el código y veamos la magia.

Ha creado la tabla con los datos mencionados y le ha dado el nombre de la tabla como “EmpTable” .

Formateo de tablas de Excel con ListObjects VBA

Una vez que se ha creado la tabla de Excel, podemos trabajar con tablas usando la colección vba ListObject.

  • Primero, defina la variable como "ListObject".

Código:

 Sub List_Objects_Example2 () Atenuar MyTable como ListObject End Sub 

  • Ahora establezca la referencia a esta variable usando el nombre de la tabla.

Código:

 Sub List_Objects_Example2 () Atenuar MyTable como ListObject Establecer MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

Ahora la variable "MyTable" contiene la referencia para la tabla "EmpTable".

  • Ingrese el nombre de la variable y coloque un punto para ver las propiedades y métodos de VBA ListObject.

Por ejemplo, si queremos seleccionar toda la tabla, entonces debemos usar el objeto "Rango" y debajo de este, debemos usar el método "Seleccionar".

Código:

MyTable.Range.Select

Esto seleccionaría toda la tabla de datos, incluido el encabezado.

  • Si desea seleccionar solo el contenido de la tabla sin encabezados, entonces debemos usar "DataBodyRange".

Código:

MyTable.DataBodyRange.Select

De esta forma, podemos jugar con las mesas.

  • Below is the list of activity codes for your reference.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") MyTable.DataBodyRange.Select 'To Select data range without headers MyTable.Range.Select 'To Select data range with headers MyTable.HeaderRowRange.Select 'To Select table header rows MyTable.ListColumns(2).Range.Select 'To select column 2 including header MyTable.ListColumns(2).DataBodyRange.Select 'To select column 2 without header End Sub 

Like this, we can use the “ListObject” collection to play around with excel tables.

Things to Remember

  • VBA ListObject is the collection of objects to reference excel tables.
  • To access ListObject collection first we need to specify what worksheet we are referring to is.