Como posso usar referências estruturadas a uma coluna em uma macro do Excel?

0

Veja um exemplo que explica as coisas:

Sheets("Plot Data July").Select
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=2
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=4

Como você pode ver acima, Field:=2 é uma referência relativa ao segundo campo da tabela chamada "tPDJuly". Então agora, se eu adicionar mais colunas, esse número não será atualizado. O campo é na verdade chamado de "Grade" na tabela. Então, existe uma maneira de codificar isso para que, não importa em qual coluna esteja, "Grade" está sempre atualizada?

Suponho que uma solução é adicionar uma linha que encontre o número da coluna para "Grade"?

UPDATE: esta é a declaração completa

Sheets("Plot Data July").Select
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=4, Criteria1:="0"
    ActiveSheet.ListObjects("tPDJuly").Range.AutoFilter Field:=2, Criteria1:="J4"

em que Field:=4 é realmente o campo Exclude nessa tabela, ou seja, tPDJuly[Exclude] e, da mesma forma, Field:=2 é Grade

Por isso, quero alterar essas referências fixas para 2 e 4 em algo mais flexível.

    
por Eshwar 17.09.2012 / 11:05

2 respostas

2

Arrastando esse segmento de volta à vida. Eu tenho tentado conseguir algo hoje mesmo e através de força bruta e tentativa e erro, eu encontrei uma resposta que não envolve uma declaração de seleção confusa ou ter uma folha ativada.

TableName.Range.Autofilter Field:=TableName.ListColumns("Column Name").Index, _
    Criteria1:="SearchString"
    
por 29.05.2015 / 16:57
1

Você deve poder selecionar uma coluna usando as propriedades da tabela com o seguinte:

sheets("Plot Data July").select    
range("tPDJuly[Grade]").select

Isso deve selecionar sua coluna de notas. As citações parecem ser importantes quando se concatena os valores em uma referência.

Se você quiser as duas colunas, precisará alterá-las um pouco:

sheets("Plot Data July").select    
range("tPDJuly[Grade],tPDJuly[Column4]").select
    
por 17.09.2012 / 19:35