Я написал макрос, который открывает файл CSV, содержащий новые данные, копирует содержимое (минус строку заголовка) и вставляет его в основную книгу. Теперь мне нужно, чтобы также отсортировать весь набор данных (все данные в основной лист) по номеру образца, приведенного в колонке А. Я пробовал 2 разные методы:Excel VBA sort a
Set rData = ThisWorkbook.Sheets("Data").Range("A1")
Set rData = Range(rData, rData.End(xlDown).Offset(0, 4))
rData.Sort Key1:=Range("A:A"), Order1:=xlAscending, Header:=xlYes 'Debug points here
Этот метод возвращает время выполнения ошибки 1004 : «Недопустимая ссылка на сортировку».
Set rData = ThisWorkbook.Sheets("Data").Range("A1")
Set rData = Range(rData, rData.End(xlDown).Offset(0, 4))
ThisWorkbook.Sheets("Data").Sort.SortFields.Clear 'Debug points here
ThisWorkbook.Sheets("Data").Sort.SortFields.Add Key:=Range(_
"A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ThisWorkbook.Sheets("Data").Sort
.SetRange Range(rData)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Этот метод возвращает ошибку времени выполнения 9: «Подзаголовок вне диапазона».
В какой строке вы выбрасываете ошибку? –
Я добавил комментарии к коду, чтобы показать, какие строки выдают ошибки. Кроме того, у меня был неправильный код ошибки для метода 2, поэтому он был обновлен. –
Попробуйте 'Set rData = Таблицы (« Данные »). Диапазон (« A1: D »и таблицы (« Данные »). ИспользуетсяRange.Rows.Count)' Избавьтесь от 'Set rData = Range (rData, rData.End (xlDown) .Offset (0, 4)) ' – user1274820