Во время запуска сценария, если вручную удалить фокус из рабочей книги, содержащей макрос, я получаю указанную ошибку. Если я не нажму на что-нибудь, это будет работать без проблем. Ошибки скрипта возникают только тогда, когда я пытаюсь вернуть выбор на A1
с листа «Вход». Точка Перерыв на следующей строке:Ошибка времени выполнения '1004': выбор метода класса диапазона не удался с помощью ThisWorkbook
ThisWorkbook.Sheets("Input").Range("A1").Select
Если я отлаживать и место фокус назад на макро рабочем листе скрипт завершает без проблем. Предыдущая строка:
ThisWorkbook.Sheets("Input").Cells.Delete
работает без ошибок, так что я угадал его диапазон, который выпадает из сферы, но не совсем понимаю, почему, как это должно быть определено в предыдущих области видимости нотации. Может кто-нибудь объяснить, почему эта линия выходит из сферы действия? Должно ли ThisWorkbook
достаточно четко определить Рабочую книгу, на которую ссылается мой код? Любые рекомендации приветствуются.
Интересно. Не могли бы вы оказать мне услугу и проверить одно? Замените «ThisWorkbook.Sheets» («Вход»). Диапазон («A1»). Выберите 'с' shtInputSheetCodeName.Range («A1»). Выберите' и повторите попытку. Конечно, вам придется обмениваться CodeName для реального? ThisWorkbook.Sheets («Input»). CodeName «Другое дело было бы« Активировать »лист перед' .Выберите что-нибудь на листе. Итак, попробуйте поместить 'ThisWorkbook.Sheets (« Вход »). Активируйте' непосредственно перед тем, как вы выберите «Выбрать». – Ralph
Также см. [Как избежать использования Select в Excel VBA macros] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) –
Такая же проблема с использованием CodeName , Обратите внимание, что у него есть общее имя_колонка 'Sheet1', которое идентично единственному листу из другой открытой книги. Любые другие идеи будут приветствоваться. – nbayly