Название: Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: ABSh от 15.01.2020, 12:19:40 Здравствуйте уважаемые форумчане!
Прошу помощи в правке макроса. Сам имею зачаточные знания ВБА, поэтому в основном записываю небольшие макросы через встроенный макрорекордер, могу слегка подкорректировать :( Смысл макроса простой - приводит открытый файл в нужный вид, удаляя некоторые столбцы, вытаскивает из эталонного файла значения для сравнения, сортирует выделенное по дате/времени и копирует в новый файл. После смены компьютера и перехода на офис 2016 макрос стал вылетать на этапе сортировки (строка подсвечена красным). Код: (vb) Sub withError() Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: ABSh от 15.01.2020, 13:14:59 Забыл добавить - ошибка следующая:
Run-tine error '9': Subscript out of range Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: Дмитрий Щербаков(The_Prist) от 15.01.2020, 13:46:53 Файл приложите с данными. Не уверен, но может где-то в самом коде ошибка при определенных данных, которую 2013 "проглатывал", а 2016 отказывается. Но это не точно.
Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: ABSh от 15.01.2020, 14:22:45 Прилагаю файл примера и эталонный
Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: boa от 15.01.2020, 16:03:13 После очередного обновления MSO у меня был глюк, когда Excel не понимал ActiveSheet
Я его обошел следующей конструкцией вместо Код: (vb) ActiveWorkbook.ActiveSheetнапишите Код: (vb) Application.ActiveCell.Parent Должно помочь. У меня сейчас работают обе конструкции, но глюк имел место... И еще, не используйте Селекты без надобности строки Код: (vb) Columns("B:C").Select можно смело заменить на Код: (vb) Columns("B:C").Delete Shift:=xlToLeft Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: ABSh от 15.01.2020, 16:58:22 Увы, не помогло :(
А большое количество Селектов остались от макрорекордера. В связи с неглубокими познаниями предпочитаю сильно не трогать то, что работает... Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: Дмитрий Щербаков(The_Prist) от 15.01.2020, 17:30:09 Попробуйте добавить перед проблемной строкой такое:
Код: (vb) Dim ws as worksheet Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: ABSh от 15.01.2020, 18:18:39 Дмитрий, ОГРОМНОЕ СПАСИБО!
Заработало!!! Естественно, после замены еще одного куска кода на переменную ws ;) Если не сложно, поясните с чем эта проблема может быть связана? С элементами ActiveX? Название: Re:Макрос не сортирует (вылетает) после перехода с офиса 2013 на 2016 Отправлено: Дмитрий Щербаков(The_Prist) от 15.01.2020, 19:06:43 Нет, с определением объектов вроде ActiveSheet при обращении из кода. Это проблема была озвучена, для её правки выпускался fix, но ссылку сейчас дать не могу - лень искать :)
Кстати, настоятельно рекомендую ознакомиться: Select и Activate - зачем нужны и нужны ли? (https://www.excel-vba.ru/chto-umeet-excel/select-i-activate-zachem-nuzhny-i-nuzhny-li/) В будущем может избавить от кучи проблем. И элементы типа ActiveX я бы тоже настоятельно рекомендовал не использовать. Проблемы с ним были и весьма неприятные. Вот описание одной из них: Элементы ActiveX перестали работать или ведут себя непредсказуемо (https://www.excel-vba.ru/chto-umeet-excel/elementy-activex-perestali-rabotat-ili-vedut-sebya-nepredskazuemo/) |