Метод сортировки VBA класса Range не удался

Я знаю, что в этой теме есть несколько потоков, но ни один из ответов не помог решить эту ошибку.

Я пытаюсь сортировать таблицу, используя три ключа, но получаю сообщение об ошибке «Ошибка времени выполнения« 1004 »: метод сортировки класса Range не удался»

Я попытался изменить «Range (« L2 »)« на ».Range (« L2 »)» и получил ошибку «Ошибка компиляции: неверная или неквалифицированная ссылка»

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

shtData.Activate shtData.Range(Range("A2"), Range("Z8000").End(xlUp)).Sort _ Key1:=Range("L2"), Order1:=xlAscending, _ Key2:=Range("M2"), Order2:=xlAscending, _ Key3:=Range("B2"), Order3:=xlAscending, _ Header:=xlYes 

Если у вас есть предложения, я бы очень признателен. У меня вчера это работало, и мой excel разбился и не восстановил изменения, которые я сделал, я не могу понять, почему я не могу заставить его работать сегодня.

у вас, скорее всего, нет данных в столбце «Z»

если диапазон строк данных может быть безопасно отсортирован по столбцу «А», а не пустым ячейкам, тогда следуйте примеру

 Option Explicit Sub main() Dim shtData As Worksheet Set shtData = Worksheets("Data") '<--| some setting of 'shtData' With shtData .Range("Z2", .Cells(.Rows.Count, "A").End(xlUp)).Sort _ Key1:=.Range("L2"), Order1:=xlAscending, _ Key2:=.Range("M2"), Order2:=xlAscending, _ Key3:=.Range("B2"), Order3:=xlAscending, _ Header:=xlYes End With End Sub 

Если возможно, вы можете в конечном итоге изменить количество столбцов в будущем, вы можете сделать что-то вроде.

 With shtData Range(Range("A2"), Cells(Range("A8000").End(xlUp).Row, Range("ZZ2").End(xlLeft).Column) 

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

Давайте будем гением компьютера.