#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
местами аргументы в вызове метода. Как ни странно, это сработало.