Простой код работает в непосредственном окне, генерирует ошибку 1004 в приложении - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующий код в моем приложении, который генерирует ошибку 1004:

range(cells(1, 103), cells(157, 112)).select

Однако, если я скопирую этот код в непосредственное окно и выполню его, я вижу, что ячейки выбираются.

Если я использую Range("CY1", "DH157").Select, приложение работает нормально без ошибок.

Что здесь происходит?

Спасибо!

Обновление: Iсоздали простой файл из двух листов со следующим кодом в «чистом виде»:

Private Sub testcode_Click()

    Sheets("scratch").Activate
    Range(Cells(5, 5), Cells(10, 10)).Select

    Sheets("testtab").Activate
    Sheets("testtab").Range("A1:E5").Select
    Sheets("testtab").Range("B10:C16").Select
    Sheets("testtab").Range(Cells(5, 5), Cells(10, 10)).Select

End Sub

Код будет выполняться правильно, пока не выполнится последний оператор.Это приводит к ошибке «1004», по крайней мере, в моей системе

Я нашел аналогичный вопрос 2015 года, на который ответил Рори, и теперь он работает правильно для меня.Очевидно, что вызовы Cells относятся к листу, на котором находится код, даже если альтернативный лист активирован.Правильно работает следующее:

Sheets ("testtab"). Range (ActiveSheet.Cells (5, 5), _ ActiveSheet.Cells (10, 10)). Выберите

Загадка решена!Спасибо Рори!Спасибо всем.

1 Ответ

0 голосов
/ 01 июня 2018

Такое поведение легко воспроизвести. Вставьте следующий код в модуль листа sheet1

Sub Test()
 Range(Cells(1, 103), Cells(157, 112)).Select
End Sub

Добавьте второй лист, активируйте его и запустите вспомогательный тест из модуля листа sheet1.Проблема в том, что вы пытаетесь выбрать диапазон на листе 1, который в это время не активен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...