ListObjects VBA

Cosa sono ListObjects in VBA?

In una tabella normalmente ciò che vediamo è un set di dati, ma nella terminologia VBA ce ne sono molti di più, ad esempio c'è un intervallo dell'intervallo dell'elenco di dati totale, la colonna è nota come colonna dell'elenco e la riga è nota come riga dell'elenco e così via , quindi per accedere a queste proprietà abbiamo una funzione incorporata nota come Listobjects e che viene utilizzata con la funzione del foglio di lavoro.

VBA ListObject è un modo per fare riferimento alle tabelle Excel durante la scrittura del codice VBA. Usando VBA LISTOBJECTS possiamo creare, eliminare tabelle e totalmente possiamo giocare con le tabelle Excel nel codice VBA. Le tabelle di Excel sono complicate, i principianti e anche gli utenti di livello intermedio trovano difficile lavorare con le tabelle. Poiché questo articolo parla del riferimento alle tabelle Excel nella codifica VBA, è meglio che tu abbia una buona conoscenza delle tabelle in Excel.

Quando i dati vengono convertiti in tabelle, non lavoriamo più con un intervallo di celle, ma dobbiamo lavorare con intervalli di tabelle, quindi in questo articolo ti mostreremo come lavorare con le tabelle Excel per scrivere codici VBA in modo efficiente.

Crea formato tabella utilizzando ListObjects in Excel VBA

Ad esempio, guarda i dati di Excel di seguito.

Utilizzando il codice ListObject di VBA creeremo un formato tabella per questi dati.

Puoi scaricare questo modello Excel ListObjects VBA qui - Modello Excel ListObjects VBA
  • Per questi dati prima dobbiamo trovare qual è l'ultima riga e colonna utilizzata, quindi definisci due variabili per trovarla.

Codice:

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

  • Per trovare l'ultima riga e colonna utilizzate, utilizzare il codice seguente.

Codice:

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

  • Ora definisci un'altra variabile per contenere il riferimento dei dati.

Codice:

 Dim Rng As Range 

  • Ora imposta il riferimento a questa variabile utilizzando il codice seguente.

Codice:

 Imposta Rng = Celle (1, 1). Ridimensiona (LR, LC)

Ora dobbiamo utilizzare il metodo VBA "ListObject.Add" per creare una tabella e di seguito è riportata la sintassi della stessa.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)

Origine: questo non è nulla per l'intervallo di celle che stiamo inserendo nella tabella. Quindi possiamo fornire due argomenti qui, cioè "xlSrcRange" e "xlSrcExternal".

XlListObjectHasHeaders: se la tabella che inserisce i dati ha intestazioni o meno. Se sì, possiamo fornire "xlYes", altrimenti possiamo fornire "xlNo".

Destinazione: questo non è altro che la nostra gamma di dati.

Stile tabella: se desideri applicare qualsiasi stile di tabella, possiamo fornire stili.

  • Ok, ora nel foglio attivo stiamo creando la tabella, quindi il codice sottostante creerebbe una tabella per noi.

Codice:

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

  • Dopodiché, dobbiamo dare un nome a questa tabella.

Codice:

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

  • Di seguito è riportato il codice completo come riferimento.

Codice:

 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, eseguiamo il codice e vediamo la magia.

Ha creato la tabella con i dati menzionati e ha dato il nome della tabella come "EmpTable" .

Formattazione di tabelle Excel con ListObjects VBA

Una volta creata la tabella Excel, possiamo lavorare con le tabelle utilizzando la raccolta ListObject di vba.

  • In primo luogo, definire la variabile come "ListObject".

Codice:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Ora imposta il riferimento a questa variabile utilizzando il nome della tabella.

Codice:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

Ora la variabile “MyTable” contiene il riferimento per la tabella “EmpTable”.

  • Immettere il nome della variabile e inserire un punto per visualizzare le proprietà e i metodi di VBA ListObject.

Ad esempio, se vogliamo selezionare l'intera tabella, dobbiamo utilizzare l'oggetto "Range" e sotto questo, dobbiamo utilizzare il metodo "Select".

Codice:

MyTable.Range.Select

Questo selezionerebbe l'intera tabella di dati inclusa l'intestazione.

  • Se si desidera selezionare solo il contenuto della tabella senza intestazioni, è necessario utilizzare "DataBodyRange".

Codice:

MyTable.DataBodyRange.Select

In questo modo, possiamo giocare con i tavoli.

  • 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.