VBA ListObjects

O que são ListObjects no VBA?

Em uma tabela normalmente, o que vemos é um conjunto de dados, mas na terminologia VBA há muito mais, como o intervalo do intervalo total da lista de dados, a coluna é conhecida como coluna da lista e a linha é conhecida como linha da lista e assim por diante , então, para acessar essas propriedades, temos uma função embutida conhecida como Listobjects e que é usada com a função de planilha.

VBA ListObject é uma forma de se referir às tabelas do Excel ao escrever o código VBA. Usando VBA LISTOBJECTS, podemos criar, excluir tabelas e, totalmente, podemos brincar com tabelas do Excel em código VBA. Tabelas do Excel são complicadas, iniciantes e até mesmo usuários de nível intermediário acham difícil trabalhar com tabelas. Como este artigo fala sobre como fazer referência a tabelas do Excel na codificação VBA, é melhor você ter um bom conhecimento sobre tabelas no Excel.

Quando os dados são convertidos em tabelas, não trabalhamos mais com um intervalo de células, em vez disso, precisamos trabalhar com intervalos de tabelas, portanto, neste artigo, mostraremos como trabalhar com tabelas do Excel para escrever códigos VBA com eficiência.

Criar formato de tabela usando ListObjects no Excel VBA

Por exemplo, observe os dados do Excel abaixo.

Usando o código VBA ListObject, criaremos um formato de tabela para esses dados.

Você pode baixar este modelo VBA ListObjects Excel aqui - VBA ListObjects Excel Template
  • Para esses dados, primeiro precisamos encontrar qual é a última linha e coluna usada, então defina duas variáveis ​​para encontrar isso.

Código:

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

  • Para encontrar a última linha e coluna usadas, use o código abaixo.

Código:

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

  • Agora defina mais uma variável para manter a referência dos dados.

Código:

 Dim Rng como alcance 

  • Agora defina a referência a esta variável usando o código abaixo.

Código:

 Definir Rng = Células (1, 1). Redimensionar (LR, LC)

Agora precisamos usar o método VBA “ListObject.Add” para criar uma tabela e abaixo está a sintaxe da mesma.

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

Fonte: Não é nada para qual intervalo de células estamos inserindo a tabela. Portanto, podemos fornecer dois argumentos aqui, ou seja, “xlSrcRange” e “xlSrcExternal”.

XlListObjectHasHeaders: se a tabela de inserção de dados possui cabeçalhos ou não. Se sim, podemos fornecer “xlSim”, caso contrário, podemos fornecer “xlNão”.

Destino: isso nada mais é do que nosso intervalo de dados.

Estilo de mesa: Se você deseja aplicar qualquer estilo de mesa, podemos fornecer estilos.

  • Ok, agora na planilha ativa estamos criando a tabela, então o código abaixo criaria uma tabela para nós.

Código:

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

  • Depois disso, precisamos dar um nome a esta tabela.

Código:

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

  • Abaixo está o código completo para sua referência.

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 Definir Rng = Células (1, 1) .Resize (LR, LC) Dim Ws como planilha Definir Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destino: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, vamos executar o código e ver a mágica.

Ele criou a tabela para os dados mencionados e deu o nome da tabela como “EmpTable” .

Formatando tabelas do Excel com VBA ListObjects

Uma vez que a tabela Excel foi criada, podemos trabalhar com tabelas usando a coleção ListObject vba.

  • Primeiro, defina a variável como “ListObject”.

Código:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Agora defina a referência a esta variável usando o nome da tabela.

Código:

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

Agora a variável “MyTable” contém a referência para a tabela “EmpTable”.

  • Insira o nome da variável e coloque um ponto para ver as propriedades e métodos do ListObject do VBA.

Por exemplo, se quisermos selecionar a tabela inteira, precisamos usar o objeto “Range” e, sob ele, precisamos usar o método “Select”.

Código:

MyTable.Range.Select

Isso selecionaria toda a tabela de dados, incluindo o título.

  • Se você deseja selecionar apenas o conteúdo da tabela sem cabeçalhos, então precisamos usar “DataBodyRange”.

Código:

MyTable.DataBodyRange.Select

Assim, podemos brincar com as mesas.

  • Abaixo está a lista de códigos de atividade para sua referência.

Código:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange.Select 'Para selecionar o intervalo de dados sem cabeçalhos MyTable.Range.Select' Para selecionar o intervalo de dados com cabeçalhos MyTable.HeaderRowRange.Select ' Selecione as linhas do cabeçalho da tabela MyTable.ListColumns (2) .Range.Select 'Para selecionar a coluna 2, incluindo o cabeçalho MyTable.ListColumns (2) .DataBodyRange.Select' Para selecionar a coluna 2 sem cabeçalho End Sub 

Assim, podemos usar a coleção “ListObject” para brincar com as tabelas do Excel.

Coisas para lembrar

  • VBA ListObject é a coleção de objetos para fazer referência a tabelas do Excel.
  • Para acessar a coleção ListObject primeiro, precisamos especificar a qual planilha estamos nos referindo.