‘1004’: «Ссылка на сортировку недействительна».

#excel #vba

Вопрос:

Я пытаюсь отсортировать диапазон на отдельном листе. Тем не менее, я продолжаю получать это сообщение:

  '1004': "The sort reference is not valid. Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank. 
 

Я проверил диапазоны, и все они существуют и работают.

Код приведен ниже:

 Dim EmpBRange As String

EmpBRange = Sheets("EmployeeData").Cells(Cells.Rows.Count, "B").End(xlUp).Row

Worksheets("EmployeeData").Range("K3:K" amp; EmpBRange).Sort Key1:=Range("K3:K" amp; EmpBRange), Order1:=xlAscending, Header:=xlGuess, _
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
       DataOption1:=xlSortNormal
 

Заранее спасибо

Ответ №1:

Я подозреваю, что вам нужно полностью определить Key1 диапазон, потому что вы вызываете код с другого листа:

 Worksheets("EmployeeData").Range("K3:K" amp; EmpBRange).Sort Key1:=Worksheets("EmployeeData").Range("K3:K" amp; EmpBRange)
 

Как правило, это хорошая идея.

Комментарии:

1.При вводе этого кода вручную редактор VBA предлагает xlSortRows или xlSortColumns для ориентации и не включает xlTopToBottom в свои предложения. xlTopToBottom = xlSortColumns , нет xlSortRows . Я был сбит с толку этим, что и стало причиной моей ошибки.

Ответ №2:

Я пытался использовать этот Sort метод, но из Powershell. И я получил только The sort reference is not valid часть без Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank части. Вот как я сюда попал.

Моя проблема заключалась в том, что я проигнорировал аргумент в ответ на Sort вызов. Если вы посмотрите ближе к документации, вы увидите Type , что в середине ключа есть параметр, и закажите параметры:

выражение.Сортировка(Ключ1, Заказ1, Ключ2, Тип, Заказ2, Ключ3, Заказ3, Заголовок, Заказ, Портфель, Ориентация, Сортировка, Выбор данных 1, Выбор данных 2, выбор данных 3)

Я прошел $null для этого, и мой вызов метода начал работать. Следующей странной вещью было то, что по какой-то причине Key2 / Order2 было проигнорировано. Я использую все 3 ключа для сортировки своих данных. Исправление состояло в том, чтобы поменять Key2 / Order2 Key3 / Order3 местами аргументы в вызове метода. Как ни странно, это сработало.