Tabelle VBA e ListObjects

Questo tutorial dimostrerà come lavorare con tabelle e ListObjects in VBA.

Tabelle VBA e ListObjects

Le tabelle sono una delle funzionalità più utili e potenti di Excel, in questo tutorial, esamineremo come utilizzare VBA per creare una tabella, aggiungere un ordinamento semplice a una tabella, filtrare una tabella ed eseguire altre attività relative alla tabella.

Crea una tabella con VBA

Il metodo ListObjects.Add può aggiungere una tabella a un foglio di lavoro, in base a un intervallo in quel foglio di lavoro. Abbiamo l'intervallo mostrato in ($ A $ 1: $ B $ 8) su un foglio di lavoro chiamato Foglio1.

Il codice seguente aggiungerà una tabella, denominata Table1 al foglio di lavoro, in base all'intervallo ($A$1:$B$8) utilizzando lo stile tabella predefinito:

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

Il risultato è:

Inserimento di una colonna alla fine della tabella con VBA

Puoi usare il metodo ListColumns.Add per aggiungere una colonna alla fine della tabella. Abbiamo la nostra tabella chiamata Table1 mostrata di seguito.

Puoi aggiungere una colonna alla tua tabella usando il seguente codice, che aggiungerà sempre una colonna alla fine della tabella:

12345 Sub AddColumnToTheEndOfTheTable()ActiveWorkbook.Sheets("Foglio1").ListObjects("Table1").ListColumns.AddFine sottotitolo

Il risultato è:

Inserimento di una riga in fondo alla tabella con VBA

Puoi usare il metodo ListRows.Add per aggiungere una riga in fondo alla tabella. Abbiamo la nostra tabella chiamata Table1 mostrata di seguito.

Il codice seguente aggiungerà sempre una riga in fondo alla tabella.

12345 Sub AddRowToTheBottomOfTheTable()ActiveSheet.ListObjects("Table1").ListRows.AddFine sottotitolo

Il risultato è:

Aggiunta di un ordinamento semplice con VBA

Puoi ordinare una tabella con VBA. Abbiamo la nostra tabella chiamata Table1 mostrata di seguito e possiamo usare VBA per ordinare la colonna delle vendite dal più basso al più alto.

Il codice seguente ordinerà la colonna Vendite in ordine crescente.

12345678910111213141516171819 Sub SimpleSortOnTheTable()Intervallo("Tabella1[[#Intestazioni],[Vendite]]").SelezionaActiveWorkbook.Worksheets("Foglio1").ListObjects("Table1").Sort.SortFields.ClearActiveWorkbook.Worksheets("Foglio1").ListObjects("Table1").Sort.SortFields.Add _Key:=Range("Table1[[#All],[Sales]]"), SortOn:=xlSortOnValues, Order:= _xlAscending, DataOption:=xlSortNormalCon ActiveWorkbook.Worksheets("Foglio1").ListObjects("Table1").Ordina.Intestazione = xlSì.MatchCase = False.Orientamento = xlTopToBottom.SortMethod = xlPinYin.ApplicareTermina conFine sottotitolo

Il risultato è:

Filtra una tabella con VBA

Puoi anche filtrare una tabella Excel usando VBA. Abbiamo la nostra tabella denominata Table1 e vorremmo filtrare la tabella in modo che vengano mostrate solo le vendite superiori a 1500.

Possiamo usare il metodo Autofilter, che ha cinque parametri opzionali. Poiché vorremmo filtrare la colonna Sales, che è la seconda colonna, impostiamo il campo su 2 e utilizziamo il parametro dell'operatore xlAnd, utilizzato per date e numeri.

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

Il risultato è:

Cancella il filtro con il metodo ShowAllData in VBA

È possibile accedere al metodo ShowAllData della classe Worksheet per cancellare il filtro. Se si desidera cancellare i filtri di una tabella, è necessario prima selezionare una cella nella tabella, operazione che è possibile eseguire in VBA.

Il metodo ShowAllData genererà un errore se non si utilizza la logica condizionale per verificare se è stato applicato un filtro nel foglio di lavoro. Il codice seguente mostra come eseguire questa operazione:

123456789 Sub ClearingTheFilter()Intervallo("Tabella1[[#Intestazioni],[Vendite]]").SelezionaSe ActiveWorkbook.Worksheets("Sheet1").FilterMode = True ThenActiveSheet.ShowAllDataFinisci seFine sottotitolo

Cancella tutti i filtri da una tabella di Excel

È possibile accedere al metodo ShowAllData della classe ListObject senza dover prima selezionare una cella nella tabella. Il codice seguente mostra come eseguire questa operazione:

123 Sub ClearAllTableFilters()ActiveWorkbook.Worksheets("Foglio1").ListObjects("Table1").AutoFilter.ShowAllDataFine sottotitolo

Eliminazione di una riga con VBA

Puoi eliminare una riga nel corpo dati della tabella utilizzando il metodo ListRows.Delete. Devi specificare quale riga utilizzando il numero di riga. Abbiamo la seguente tabella chiamata Table1.

Supponiamo che tu voglia eliminare la seconda riga nel corpo dati della tua tabella, il seguente codice ti consentirebbe di farlo:

12345 Sub EliminaARow()ActiveWorkbook.Worksheets("Foglio1").ListObjects("Table1").ListRows(2).EliminaFine sottotitolo

Il risultato è:

Eliminazione di una colonna con VBA

Puoi eliminare una colonna dalla tabella usando il metodo ListColumns.Delete. Abbiamo la seguente tabella chiamata Table1 mostrata di seguito:

Per eliminare la prima colonna, dovresti utilizzare il seguente codice:

12345 Sotto EliminaAColonna()ActiveWorkbook.Worksheets("Foglio1").ListObjects("Table1").ListColumns(1).EliminaFine sottotitolo

Il risultato è:

Conversione di una tabella in un intervallo in VBA

Puoi riconvertire una tabella in un intervallo normale usando VBA. Il codice seguente mostra come riconvertire una tabella denominata Table1 in un intervallo:

12345 Sub ConvertingATableBackToANormalRange()ActiveWorkbook.Sheets("Foglio1").ListObjects("Table1").UnlistFine sottotitolo

Aggiunta di colonne a bande e formattazione a tutte le tabelle in un foglio di lavoro utilizzando VBA

Puoi accedere a tutte le tabelle nel tuo foglio di lavoro utilizzando la raccolta ListObjects. Nel foglio sottostante abbiamo due tabelle e vorremmo aggiungere una colonna a bande a entrambe le tabelle contemporaneamente e cambiare il carattere della sezione dati di entrambe le tabelle in grassetto, usando VBA.

12345678910111213 Sub AddingBandedColumns()Dim tbl As ListObjectDim sht come foglio di lavoroImposta sht = ThisWorkbook.ActiveSheetPer ogni tbl In sht.ListObjectstbl.ShowTableStyleColumnStripes = Truetbl.DataBodyRange.Font.Bold = Trueprossimo tblFine sottotitolo

Il risultato è:

Creazione di una tabella in Access in VBA utilizzando DoCmd.RunSQL

Uno dei modi principali per creare una tabella in Access in VBA consiste nell'utilizzare il metodo DoCmd.RunSQL per eseguire una query di azione con un'istruzione SQL.

Abbiamo un pulsante nel nostro modulo di esempio e quando facciamo clic sul pulsante vorremmo creare una tabella chiamata ProductsTable con due campi o colonne, uno sarebbe il campo della chiave primaria chiamato ProductsID e l'altro sarebbe un campo chiamato Sales.

Per creare questa tabella utilizzeremmo il seguente codice:

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

Il risultato è:

Filtraggio di una tabella in Access utilizzando VBA

Puoi anche filtrare una tabella in Access usando il metodo DoCmd.ApplyFilter. Abbiamo la nostra semplice tabella mostrata di seguito in Access chiamata ProductsTable.

Vorremmo premere questo pulsante sul nostro modulo e quindi vedere solo le vendite superiori a 1500.

Quindi, useremmo il seguente codice per farlo:

1234567 Sotto privato cmdFilter_Click()DoCmd.OpenTable "ProdottiTable"DoCmd.ApplyFilter , "[Vendite]>1500"Fine sottotitolo

Il risultato è:

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave