sintassi:
comandi generali:
esempio: se ci sono tabelle scorri tutte le tabelle e visualizza il nome della tabella
If scheda.ListObjects().Count > 0 Then solo se ci sono tabelle
For Each tabella In scheda.ListObjects scorri tutte le tabelle del foglioEnd IfMsgBox (tabella.Name)Next tabella
esempio: nome della tabella 1
ActiveSheet.ListObjects(1).Name
esempio: nome della seconda colonna della tabella 1 della scheda DB
Sheets("DB").ListObjects(1).ListColumns(2).Name
esempio: posizone colonna "Cognome" nella tabella 1
ActiveSheet.ListObjects(1).ListColumns("Cognome").Index
esempio:
ActiveSheet.ListObjects(1).QueryTable.Refresh BackgroundQuery:=False
gestione dei dati della tabella:
a questi comandi si aggiungono i comandi Range o Cells per gestire i dati
- .Range("")
- .Cells(,)
esempio: restituisce il valore della cella della riga 2 colonna 1 dei dati della tabella senza intestazioni
ActiveSheet.ListObjects(x).DataBodyRange.Cells(2,1)
il conteggio delle righe partono dalla prima riga dei dati senza l'intestazioni
esempio: restituisce il valore dell'ultima cella dei dati della seconda colonna della tabella
ActiveSheet.ListObjects(x).DataBodyRange.Range("B1").End(xlDown).Value
gestione righe e colonne:
esempio: nome della colonna 2
ActiveSheet.ListObjects(1).ListColumns(2).Name
esempio: seleziono i dati della colonna 3
ActiveSheet.ListObjects(1).ListColumns(3).DataBodyRange.Select
esempio: restituisce il valore dell'ultima cella dati in basso della colonna "Stato"
ActiveSheet.ListObjects(1).ListColumns("Stato").DataBodyRange.End(xlDown).Value
attento potrebbe non funzionare se ci sono celle vuote
ActiveSheet.ListObjects(1).ListColumns("Stato").DataBodyRange.Cells(ActiveSheet.ListObjects(1).ListRows().Count)
usa questo
esempio: se la tabella ha righe sostutisci i valori di una colonna con un ciclo for
If Sheets("scheda").ListObjects("tabella").ListRows().Count > 0 Then
For riga = 1 To Sheets("scheda").ListObjects("tabella").ListRows().CountEnd IfSheets("scheda").ListObjects("tabella").ListColumns("colonna").DataBodyRange.Cells(riga) = "testo " & rigaNext riga
esempio: conto il numero delle righe
ActiveSheet.ListObjects(1).ListRows().Count
ActiveSheet.ListObjects(1).ListRows.Count puoi anche omettere le ()
a questi comandi si aggiungono i comandi per gestire le righe e colonne
- .Add
aggiunge una riga/colonnaesempio: aggiungo una riga
ActiveSheet.ListObjects(1).ListRows.Add
esempio: aggiungo una riga + inserisci nella ultima riga aggiunta la data di oggi (usando Range)
ActiveSheet.ListObjects(1).ListRows.Add
ActiveSheet.ListObjects(1).ListColumns(1).DataBodyRange.Range("A" & ActiveSheet.ListObjects(1).ListRows().Count) = Date
esempio: aggiungo una riga + inserisci nella ultima riga alcuni dati in base al nome della colonna (usando Cells)
Sheets("scheda").ListObjects("tabella").ListRows.Add
ultimariga = Sheets("scheda").ListObjects("tabella").ListRows().Count se si inseriscono più dati nella riga creata meglio memorizzare prima il numero della riga e poi usarlo senza doverlo ricalcolare ogni volta
Sheets("scheda").ListObjects("tabella").ListColumns("colonna").DataBodyRange.Cells(ultimariga) = "testo da inserire"
- .Delete
- singola riga
elimina una riga/colonna
va indicata la riga o la colonnaesempio: cancello la riga 12
ActiveSheet.ListObjects(1).ListRows(12).Delete
esempio: cancello la colonna "Cognome"
ActiveSheet.ListObjects(1).ListColumns("Cognome").Delete
- tutte le righe
per cancellare tutte le righe si usa DataBodyRange
ActiveSheet.ListObjects(1).DataBodyRange.Rows.Delete