powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Method 'Range' of object '_Worksheet' failed
14 сообщений из 14, страница 1 из 1
Method 'Range' of object '_Worksheet' failed
    #39969007
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лист перед обработкой предварительно очищаю от лишнего, удаляю первый столбец и все после второго...
Код: vbnet
1.
2.
3.
lstSource.Columns(1).Delete 
lstSource.Range(Columns(3), Columns(10)).Delete
.....


Первый столбец удаляется нормально, на второй строке - сообщение об ошибке (см.заголовок), но! ... если пнуть выполнение кода руками, то и столбцы удаляются, и процедура дальше работает.
В чём - засада? Смущает ещё добавление подчёркивания в сообщении перед названием объекта...
В окне отладки проверял имя обрабатываемого листа - всё правильно...
Изначально столбцы расположены так: 1,2,3,4...
После первой строки кода они сдвигаются влево, меняя свой номер, может тут собака порылась?
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969025
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
В чём - засада?
Засада явно в том, что на момент запуска либо активен не лист lstSource, либо код записан в модуле листа. Правильно записывать так:
Код: vbnet
1.
lstSource.Range(lstSource.Columns(3), lstSource.Columns(10)).Delete


Подробнее: Как обратиться к диапазону из VBA
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969052
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist
АндрейК
В чём - засада?
Засада явно в том, что на момент запуска либо активен не лист lstSource, либо код записан в модуле листа.
Не, не - предыдущие строки:
Код: vbnet
1.
2.
lstCount = ActiveWorkbook.Worksheets.Count
Set lstSource = ActiveWorkbook.Worksheets(lstCount) ' последний, новый лист

и сам код - в общем модуле.
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969055
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
Код: vbnet
1.
ActiveWorkbook

https://www.sql.ru/faq/faq_topic.aspx?fid=4344
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969063
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, у меня одна книга открыта, она и Active и This
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969075
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
Не, не - предыдущие строки:
Код: vbnet
1.
2.
lstCount = ActiveWorkbook.Worksheets.Count
Set lstSource = ActiveWorkbook.Worksheets(lstCount) ' последний, новый лист

Эти строки не означают, что лист lstSource активен.
Советом The_Prist воспользовались?
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969092
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro

Эти строки не означают, что лист lstSource активен.
Советом The_Prist воспользовались?
А разве он может быть не активен, если в окне отладки на
Код: vbnet
1.
 ?  lstSource.Name

выводится имя именно того листа, в котором я шаманю?
Совет пока не пробовал...
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969095
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
А разве он может быть не активен, если в окне отладки на
Код: vbnet
1.
 ?  lstSource.Name

а причем тут окно отладки, если речь идет об ошибке при выполнении макроса?

Еще раз, я уже написал, что не надо использовать Active, всегда надо использовать явную ссылку. The_Prist уже написал, что Columns не надо использовать без явного указания ссылки.
Начни с этого, если проблема останется - приводи более полный код или дай пример.
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969137
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist
АндрейК
В чём - засада?
Засада явно в том, что на момент запуска либо активен не лист lstSource, либо код записан в модуле листа. Правильно записывать так:
Код: vbnet
1.
lstSource.Range(lstSource.Columns(3), lstSource.Columns(10)).Delete

Сделал, ошибка пропала(Спасибо!), осталась непонятка: если первый столбец удалялся без проблем, и значит нужный лист был активен, то эта активация сразу пропадала при упоминании Range?
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969151
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что в этом коде нет обращения к активному листу, в отличие от твоего изначального кода. The_Prist тебе дал совет, но ты им не воспользовался, он дал тебе ссылку, но ты ее не прочитал. А смысл спрашивать на форуме?
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969157
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, а прочесть моё предыдущее сообщение - совсем никак? Или есть набор заготовок, которые выдаются независимо от того, что пишет собеседник?
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969158
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
... если первый столбец удалялся без проблем, и значит нужный лист был активен ...

Нет конечно, не значит.
Первая строка работала, потому что свойство Columns применялось к явно указанному инициализированному объекту.
А Columns во второй строке применяется к явно неуказанному, но подразумеваемому активным объектом.
Это ошибка первоклассника.

Вы базовых вещей не понимаете.
Поэтому ни читать, ни судить о прочитанном правильно не можете.
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969224
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АндрейК
Shocker.Pro, а прочесть моё предыдущее сообщение - совсем никак?
я прочел и даже ответил. Мне не очень понятно, почему ты читаешь ответы выборочно.

Еще раз - то, что в момент отладки лист активен не означает, что он был активен в момент выполнения макроса.

Тебе первым же сообщением дали четкий, правильный и развернутый ответ. С чем ты пытаешься спорить - непонятно.
...
Рейтинг: 0 / 0
Method 'Range' of object '_Worksheet' failed
    #39969251
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
я прочел и даже ответил. ... С чем ты пытаешься спорить - непонятно.
Дык, если б прочёл, то заметил, что я написал, что использовал совет The_Prist и что всё получилось, и поблагодарил.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Method 'Range' of object '_Worksheet' failed
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]