Страницы: 1
RSS
cells.select вызывет ошибку, cells.select вызывет ошибку
 
Всем доброго утра,

подскажите, пожалуйста, что неправильно в этом коде.
Цель - выделить все ячейки листа Лист2, чтобы потом очистить их содержимое и форматы.
Прилагаю файл.


Private Sub CommandButton1_Click()

Лист2.Select
Cells.Select

End Sub
 
можно заменить две строки на одну:
Код
Private Sub CommandButton1_Click()
    Лист2.UsedRange.Cells.Clear
End Sub
Изменено: artemkau88 - 28.04.2022 09:49:32
 
система сопротивляется сама тому чтоб использован был Select
Код
With Лист2.Cells
    .ClearContents
' и/или что еще с ним
end with
Изменено: БМВ - 28.04.2022 09:51:24
По вопросам из тем форума, личку не читаю.
 
artemkau88, Вы правы.
Ваш вариант работает.

А мой первоначальный вариант почему не работает? Ошибка в чём?
 
Proff, ошибки нет, если использовать процедуру из стандартного модуля и запускать по сочетанию клавиш. После выделения ячеек Вам нужно очистить их (Selection.Clear). У Вас эта строка отсутствует
Если привязывать процедуры ниже к кнопке, то тоже будет ошибка, так как selection работает только с активным листом, лист 2 неактивный.
Еще несколько вариантов:
Код
Sub Clear()
' можно так:
    Лист2.Select ' выбираем лист 2 - он становится активным
    Cells.Select ' выделяем все ячейки на активном листе
    Selection.Clear ' очищаем их
'либо: (нужное раскомментить)
'With Лист2
'    .Cells.Select
'    Selection.Clear
'End With
End Sub
код из сообщения 2 очищает UsedRange на листе 2, как написано в справке  o UsedRange "Возвращает объект диапазон ячеек, который представляет все ячейки, содержащие значение на данный момент."

По поводу ошибки ест тема на форуме:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=32958
Изменено: artemkau88 - 28.04.2022 10:38:25
 
artemkau88, БМВ, большое спасибо!
 
Proff, ненужно использовать Select там где он ненужен. Это избавит и от ошибок и от тормозов и ....
По вопросам из тем форума, личку не читаю.
 
Интересный вопрос. Не приходилось сталкиваться.
На первый взгляд все правильно. И из стандартного модуля работает, как и должно. Т.е. Cells без указания родителя относятся к активному листу.
Но вот при вызове из модуля листа, не смотря на активацию другого листа, Cells без указания родителя относятся не к активному листу, а к листу, с которого была вызвана процедура.
Изменено: RAN - 28.04.2022 11:33:34
 
В статье Дмитрия Щербакова КАК ОБРАТИТЬСЯ К ДИАПАЗОНУ ИЗ VBA подробно расписано о всех нюансах работы с Cells (и не только). В том числе, указан нюанс, правильно описанный RAN
Изменено: Jack Famous - 28.04.2022 12:14:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх