Tablas de VBA y ListObjects

Tabla de contenido

Este tutorial demostrará cómo trabajar con Tablas y ListObjects en VBA.

Tablas de VBA y ListObjects

Las tablas son una de las características más útiles y poderosas de Excel, en este tutorial, repasaremos cómo usar VBA para crear una tabla, agregar una ordenación simple a una tabla, filtrar una tabla y realizar otras tareas relacionadas con la tabla.

Crear una tabla con VBA

El método ListObjects.Add puede agregar una tabla a una hoja de trabajo, según un rango en esa hoja de trabajo. Tenemos el rango que se muestra en ($ A $ 1: $ B $ 8) en una hoja de trabajo llamada Hoja1.

El siguiente código agregará una tabla, llamada Table1 a su hoja de trabajo, basada en el rango ($ A $ 1: $ B $ 8) usando el Estilo de tabla predeterminado:

123456 Sub CreateTableInExcel ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects.Add (xlSrcRange, Range ("$ A $ 1: $ B $ 8"),, xlYes) .Name = _"Tabla 1"End Sub

El resultado es:

Insertar una columna al final de la tabla con VBA

Puede usar el método ListColumns.Add para agregar una columna al final de su tabla. Tenemos nuestra tabla llamada Tabla1 que se muestra a continuación.

Puede agregar una columna a su tabla usando el siguiente código, que siempre agregará una columna al final de la tabla:

12345 Sub AddColumnToTheEndOfTheTable ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). ListColumns.AddEnd Sub

El resultado es:

Insertar una fila en la parte inferior de la tabla con VBA

Puede usar el método ListRows.Add para agregar una fila al final de su tabla. Tenemos nuestra tabla llamada Tabla1 que se muestra a continuación.

El siguiente código siempre agregará una fila al final de su tabla.

12345 Sub AddRowToTheBottomOfTheTable ()ActiveSheet.ListObjects ("Tabla1"). ListRows.AddEnd Sub

El resultado es:

Agregar una ordenación simple con VBA

Puede ordenar una tabla con VBA. Tenemos nuestra tabla llamada Tabla1 que se muestra a continuación y podemos usar VBA para ordenar la columna de ventas de menor a mayor.

El siguiente código clasificará la columna Ventas en orden ascendente.

12345678910111213141516171819 Sub SimpleSortOnTheTable ()Rango ("Tabla1 [[# encabezados], [Ventas]]"). SeleccioneActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.ClearActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.Add _Clave: = Rango ("Tabla1 [[# Todos], [Ventas]]"), SortOn: = xlSortOnValues, Order: = _xlAscending, DataOption: = xlSortNormalCon ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Ordenar.Encabezado = xl Sí.MatchCase = Falso.Orientación = xlTopToBottom.SortMethod = xlPinYin.SolicitarTerminar conEnd Sub

El resultado es:

Filtrar una tabla con VBA

También puede filtrar una tabla de Excel usando VBA. Tenemos nuestra tabla llamada Tabla1 y nos gustaría filtrar la tabla para que solo se muestren las ventas superiores a 1500.

Podemos utilizar el método Autofilter, que tiene cinco parámetros opcionales. Como nos gustaría filtrar la columna Ventas, que es la segunda columna, establecemos el Campo en 2 y usamos el parámetro del operador xlAnd, que se usa para fechas y números.

123456 Sub SimpleFilter ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). Range.AutoFilter Field: = 2, Criteria1: = _"> 1500", Operador: = xlAndEnd Sub

El resultado es:

Borrar el filtro con el método ShowAllData en VBA

Puede acceder al método ShowAllData de la clase Worksheet para borrar el filtro. Si desea borrar los filtros de una tabla, primero debe seleccionar una celda de la tabla, lo que puede hacer en VBA.

El método ShowAllData generará un error si uno no usa la lógica condicional para verificar si se ha aplicado un filtro en la hoja de trabajo. El siguiente código le muestra cómo hacer esto:

123456789 Sub ClearingTheFilter ()Rango ("Tabla1 [[# encabezados], [Ventas]]"). SeleccioneSi ActiveWorkbook.Worksheets ("Sheet1"). FilterMode = True EntoncesActiveSheet.ShowAllDataTerminara siEnd Sub

Borrar todos los filtros de una tabla de Excel

Puede acceder al método ShowAllData de la clase ListObject sin tener que seleccionar primero una celda de la tabla. El siguiente código le muestra cómo hacer esto:

123 Sub ClearAllTableFilters ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). AutoFilter.ShowAllDataEnd Sub

Eliminar una fila con VBA

Puede eliminar una fila en el cuerpo de datos de su tabla usando el método ListRows.Delete. Tienes que especificar qué fila usando el número de fila. Tenemos la siguiente tabla llamada Table1.

Supongamos que desea eliminar la segunda fila en el cuerpo de datos de su tabla, el siguiente código le permitiría hacer esto:

12345 Sub DeleteARow ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListRows (2) .DeleteEnd Sub

El resultado es:

Eliminar una columna con VBA

Puede eliminar una columna de su tabla utilizando el método ListColumns.Delete. Tenemos la siguiente tabla llamada Tabla1 que se muestra a continuación:

Para eliminar la primera columna, usaría el siguiente código:

12345 Sub DeleteAColumn ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListColumns (1) .DeleteEnd Sub

El resultado es:

Convertir una tabla de nuevo a un rango en VBA

Puede convertir una tabla a un rango normal usando VBA. El siguiente código le muestra cómo convertir una tabla llamada Table1 de nuevo a un rango:

12345 Conversión secundariaATableBackToANormalRange ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). UnlistEnd Sub

Agregar columnas con bandas y formatear todas las tablas en una hoja de trabajo usando VBA

Puede acceder a todas las tablas en su hoja de trabajo usando la colección ListObjects. En la hoja a continuación, tenemos dos tablas y nos gustaría agregar una columna con bandas a ambas tablas a la vez y cambiar la fuente de la sección de datos de ambas tablas a negrita, usando VBA.

12345678910111213 Sub AddingBandedColumns ()Dim tbl como ListObjectDim sht como hoja de trabajoEstablecer sht = ThisWorkbook.ActiveSheetPara cada tbl en sht.ListObjectstbl.ShowTableStyleColumnStripes = Verdaderotbl.DataBodyRange.Font.Bold = TrueSiguiente tblEnd Sub

El resultado es:

Creando una tabla en Access en VBA usando DoCmd.RunSQL

Una de las principales formas de crear una tabla en Access en VBA es mediante el uso del método DoCmd.RunSQL para ejecutar una consulta de acción con una declaración SQL.

Tenemos un botón en nuestro formulario de muestra y cuando hacemos clic en el botón nos gustaría crear una tabla llamada ProductsTable con dos campos o columnas, uno sería el campo de clave principal llamado ProductsID y el otro sería un campo llamado Ventas.

Para crear esta tabla usaríamos el siguiente código:

123456 Sub privado cmdCreateProductsTable_Click ()DoCmd.RunSQL "CREATE TABLE ProductsTable" _& "(ProductID INTEGER PRIMARY KEY, Sales Integer);"End Sub

El resultado es:

Filtrar una tabla en Access usando VBA

También puede filtrar una tabla en Access mediante el método DoCmd.ApplyFilter. Tenemos nuestra tabla simple que se muestra a continuación en Access llamada ProductsTable.

Nos gustaría presionar este botón en nuestro formulario y luego solo ver las Ventas que sean superiores a 1500.

Entonces, usaríamos el siguiente código para hacer esto:

1234567 Sub privado cmdFilter_Click ()DoCmd.OpenTable "ProductsTable"DoCmd.ApplyFilter, "[Ventas]> 1500"End Sub

El resultado es:

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave