Я к сожалению не понимаю в коде. Знаю только что он выполняет. Копирует данные с листа на лист потом создает файлы с этими данными. Вернее должен создавать но не получается((((
Run-time error '1004': Application-defined or object-defined error
Sub sort2(shn_) Dim sh_ As Worksheet Set sh_ = ThisWorkbook.Sheets(shn_) With sh_ r0_ = 3 With .Cells(1) nr_ = .SpecialCells(xlLastCell).Row - r0_ + 1 nc_ = .SpecialCells(xlLastCell).Column End With With .Sort .SortFields.Clear .SortFields.Add Key:=sh_.Cells(r0_, 2).Resize(nr_), Order:=xlDescending .SetRange sh_.Cells(r0_, 1).Resize(nr_, nc_) .Header = xlGuess .Apply r1_ = sh_.Cells(Rows.Count, 2).End(3).Row For i = r0_ To r1_ If sh_.Cells(i, 2) = "" Then Exit For Next i If i < r1_ Then sh_.Cells(i, 1).Resize(r1_ - i).EntireRow.Delete .SortFields.Clear .SortFields.Add Key:=sh_.Cells(r0_, 2).Resize(i - r0_), Order:=xlAscending .SortFields.Add Key:=sh_.Cells(r0_, 1).Resize(i - r0_), Order:=xlAscending, DataOption:=xlSortNormal .SetRange sh_.Cells(r0_, 1).Resize(i - r0_, nc_) .Header = xlGuess .Apply End With End With Sheets("Заявки").Select End Sub
[/vba]
Я к сожалению не понимаю в коде. Знаю только что он выполняет. Копирует данные с листа на лист потом создает файлы с этими данными. Вернее должен создавать но не получается((((
Run-time error '1004': Application-defined or object-defined error
Sub sort2(shn_) Dim sh_ As Worksheet Set sh_ = ThisWorkbook.Sheets(shn_) With sh_ r0_ = 3 With .Cells(1) nr_ = .SpecialCells(xlLastCell).Row - r0_ + 1 nc_ = .SpecialCells(xlLastCell).Column End With With .Sort .SortFields.Clear .SortFields.Add Key:=sh_.Cells(r0_, 2).Resize(nr_), Order:=xlDescending .SetRange sh_.Cells(r0_, 1).Resize(nr_, nc_) .Header = xlGuess .Apply r1_ = sh_.Cells(Rows.Count, 2).End(3).Row For i = r0_ To r1_ If sh_.Cells(i, 2) = "" Then Exit For Next i If i < r1_ Then sh_.Cells(i, 1).Resize(r1_ - i).EntireRow.Delete .SortFields.Clear .SortFields.Add Key:=sh_.Cells(r0_, 2).Resize(i - r0_), Order:=xlAscending .SortFields.Add Key:=sh_.Cells(r0_, 1).Resize(i - r0_), Order:=xlAscending, DataOption:=xlSortNormal .SetRange sh_.Cells(r0_, 1).Resize(i - r0_, nc_) .Header = xlGuess .Apply End With End With Sheets("Заявки").Select End Sub
sort2 на произвольных данных отрабатывает (кстати, это, похоже, я его писал). Предположу, что некорректно скопировались данные кодом, который выше Проверьте листы a(1) = "ЭкспортБМ" a(2) = "ЭкспортЛимак" a(3) = "ЭкспортАртис" a(4) = "ЭкспортБЗУ" Все ли там нормально? Начало для сортировки со строки 3? Если прикладывать файл будете, то приложите еще и просто с данными, без макросов. А то на работе блокировка безопасности стоит
sort2 на произвольных данных отрабатывает (кстати, это, похоже, я его писал). Предположу, что некорректно скопировались данные кодом, который выше Проверьте листы a(1) = "ЭкспортБМ" a(2) = "ЭкспортЛимак" a(3) = "ЭкспортАртис" a(4) = "ЭкспортБЗУ" Все ли там нормально? Начало для сортировки со строки 3? Если прикладывать файл будете, то приложите еще и просто с данными, без макросов. А то на работе блокировка безопасности стоит_Boroda_
Я бы и с радостью. Да к сожалению наверно это не возможно и не имеет смысла. Это очень большой файл. 8,5мб ну и там сетевые пути то-есть на локальном компе макрос не захочет работать. Если только пути не переписывать. Мне бы строку бы эту прочитать. чтобы понять в каком направлении искать вообще. Я просто удалил и большого количества мест все контра агенты. и вписал новые. у меня эта работа примерно пол рабочего дня заняла. Я пока что предполагаю что можно взять другой рабочий файл и проделать все тоже самое. но страшно потому что результат может оказаться тот же самый. В идеале бы найти камень приткновения. Предположительно все должно работать. Но не работает. Где-то я что-то проморгал. Может даже формат ячейки?
Я бы и с радостью. Да к сожалению наверно это не возможно и не имеет смысла. Это очень большой файл. 8,5мб ну и там сетевые пути то-есть на локальном компе макрос не захочет работать. Если только пути не переписывать. Мне бы строку бы эту прочитать. чтобы понять в каком направлении искать вообще. Я просто удалил и большого количества мест все контра агенты. и вписал новые. у меня эта работа примерно пол рабочего дня заняла. Я пока что предполагаю что можно взять другой рабочий файл и проделать все тоже самое. но страшно потому что результат может оказаться тот же самый. В идеале бы найти камень приткновения. Предположительно все должно работать. Но не работает. Где-то я что-то проморгал. Может даже формат ячейки?koyaanisqatsi
[/vba]должны быть одинаковы (только направление сортировки разное, но это как раз и неважно
Посмотрите сначала, на каком листе все это происходит (переменная shn_) Потом посмотрите, чему равны nr_ и i Могу предположить, что оно как раз равно 3. То есть, в столбце 2 у Вас ничего нет. А мы по нему сортировать пытаемся
Да, другого не вижу. Кусок [vba]
Код
i - r0_
[/vba]получается меньше единицы
По идее, если на листе все правильно загрузилось, то строки [vba]
[/vba]должны быть одинаковы (только направление сортировки разное, но это как раз и неважно
Посмотрите сначала, на каком листе все это происходит (переменная shn_) Потом посмотрите, чему равны nr_ и i Могу предположить, что оно как раз равно 3. То есть, в столбце 2 у Вас ничего нет. А мы по нему сортировать пытаемся
_Boroda_, Начал делать все с нуля. и после каждого действия проверял, не поломалось ли. соответственно с пошаговым сохранением в файлы с новыми именами. поломалось на шаге когда из рейсов удалил не используемые контрагенты. Понял что легче их оставить в покое хоть они и не нужны и забыть о этой проблема. Спасибо. Тему эту наверно лучше удалить все равно для истории никакого толка от нее нет.
_Boroda_, Начал делать все с нуля. и после каждого действия проверял, не поломалось ли. соответственно с пошаговым сохранением в файлы с новыми именами. поломалось на шаге когда из рейсов удалил не используемые контрагенты. Понял что легче их оставить в покое хоть они и не нужны и забыть о этой проблема. Спасибо. Тему эту наверно лучше удалить все равно для истории никакого толка от нее нет.koyaanisqatsi