Страницы: 1
RSS
Выделение на неактивном листе, как в VBA получить выделенный диапазон на неактивном листе?
 
Обычный Selection возвращает выделенный диапазон на листе, который является активным, и вообще говоря, являясь свойством объекта Application, не требует указания конкретного листа, т.к. по умолчанию берёт активный.
А если мне нужно обратиться к выделенным ячейкам неактивного листа?
Типа Workbooks(“…”).Sheets(“…”).Selection
(понятно, что в таком виде работать не будет, просто привёл пример).

И вообще можно ли говорить о выделении на неактивном листе?
 
присвойте имена нужным ячейкам или диапазонам и обращайтесь к ним без выделений.   (выделенных ячеек не активного листа, как мне кажется, быть не может, если ячейки выделены, то они находятся на активном листе)
Изменено: alexthegreat - 22.07.2015 11:15:44
 
Я так понимаю, что выделение ячеек на неактивном листе не есть самоцель? С ними предполагается что-то делать? Так и делайте!
Например копирование
Код
Worksheets("Лист1").Range("A1:A10").Copy
Согласие есть продукт при полном непротивлении сторон
 
Как обратиться к диапазону из VBA
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
alexthegreat написал:
присвойте имена нужным ячейкам или диапазонам и обращайтесь к ним без выделений.
Присвоение имён - не лучший вариант.
Суть в следующем: пользователь выделяет нужные ему данные на нескольких листах, а задача программы - обработать то, что пользователь выделил.
 
Цитата
Sanja написал:
1Worksheets("Лист1").Range("A1:A10").Copy
Sanja, задача прямо противоположная  :)
Не выделить ячейки и что-то с ними сделать (тогда, конечно, можно обойтись без выделения), а получить в виде объекта Range то, что уже выделено, без активации листов.
 
Цитата
AShatov написал:
а получить в виде объекта Range то, что уже выделено
Эх...Редко, но нужна все же такая фича людям :) Довольно давно написал статью:
Получить адрес активной ячейки неактивного листа

лично я бы воспользовался первым кодом - проблем никаких, выделение получите. Но если очень хочется - есть там и вариант без перехода по листам.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо, то что нужно.
Резюме по теме: выделенные диапазоны на неактивных листах имеют место быть. По крайней мере это понятие не лишено смысла: всё-таки когда мы переходим с одного листа на другой, выделение не сбрасывается, а значит оно где-то сохраняется, и его можно тем или иным способом достать.
Но получить его "штатными" методами без активации каждого листа невозможно.

The_Prist, отдельное спасибо за второй способ. Очень нетривиально и поучительно, я бы самостоятельно не додумался вытащить нужные данные из XML-кода. Возьму на карандаш, может где-то пригодится)))
Изменено: AShatov - 22.08.2015 23:21:43
Страницы: 1
Читают тему
Наверх