Вот пример, который объяснит вещи:

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

Итак, как вы можете видеть выше, Field:=2 является относительной ссылкой на второе поле в таблице с именем "tPDJuly". Так что теперь, если я добавлю больше столбцов, это число не будет обновлено. Поле фактически называется "Оценка" в таблице. Так есть ли способ кодировать это так, что независимо от того, в каком столбце он находится, "Оценка" всегда обновляется?

Я полагаю, что одним из решений является то, что мы добавляем строку, которая находит номер столбца для "Оценка"?

ОБНОВЛЕНИЕ: это полное заявление

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

где Field:=4 на самом деле поле Exclude в этой таблице, т.е. tPDJuly[Exclude] и аналогично Field:=2 - Grade

Поэтому я хочу изменить эти фиксированные ссылки на 2 и 4 на что-то более гибкое.

2 ответа2

2

Перетаскивая эту нить в жизнь. Сегодня я пытался достичь чего-то сам, используя грубую силу, метод проб и ошибок, я нашел ответ, который не включает в себя грязное выражение выбора или наличие активированного листа.

TableName.Range.Autofilter Field:=TableName.ListColumns("Column Name").Index, _
    Criteria1:="SearchString"
1

Вы должны быть в состоянии выбрать столбец, используя свойства таблицы со следующим:

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

Это должно выбрать ваш столбец оценки. Кавычки, кажется, важны при объединении значений в ссылку.

Если вам нужны оба столбца, вам нужно немного их изменить:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .