Excel VBA сортировка в таблице Ошибка 1004 «Метод« Диапазон »объекта« _Worksheet »не удалось - PullRequest
2 голосов
/ 27 сентября 2019

Я работаю с таблицей в Excel и хотел бы отсортировать данные в ней по дате отправки.Тем не менее, я получаю сообщение об ошибке

"Метод 'Range' объекта '_Worksheet' не удался.

Я пробовал множество способов сделать это, но все возвращают одно и то жеошибка.

Код пишется на отдельном листе от листа, содержащего таблицу, поскольку это может быть источником ошибки.

Ниже приведен краткий обзор моей последней попыткирешить эту проблему.

Sheets("Database").ListObjects("DatabaseTable").Sort.SortFields.Clear
Sheets("Database").ListObjects("DatabaseTable").Sort.SortFields.Add Key:=Range("DatabaseTable[Date Submitted]"), Order:=xlAscending
Sheets("Database").ListObjects("DatabaseTable").Sort.Apply

1 Ответ

4 голосов
/ 27 сентября 2019

При неквалифицированных вызовах Range в модуле кода листа неявный квалификатор равен Me, то есть лист, содержащий код, или Sheet1 - см. этот вопрос .

Итак

Range("DatabaseTable[Date Submitted]")

эквивалентно

Me.Range("DatabaseTable[Date Submitted]")

или

Sheet1.Range("DatabaseTable[Date Submitted]")

Так как таблица на Sheet2, вам необходимо:

Sheet2.Range("DatabaseTable[Date Submitted]")

В итоге (из связанного вопроса):

Самый простой способ избежать необходимости помнить что-либо из этого - всегда полностью квалифицироваться любой Worksheets, Sheets, Range, Cells или Names ссылка. *

NB Columns и Rows тоже нуждаются в квалификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...