Страницы: 1
RSS
Как макросом покрасить все ячейки, находящиеся под линией?
 
Добрый день, гуру экселя.
Помогите решить вопрос.

На листе нарисована прямая линия.
Как заставить макрос -  найти все ячейки, пересекаемые - нарисованной на листе линией (линия имеет две общие точки с прямоугольником ячейки), и залить их цветом (например желтым) ?
Изменено: OlegSmirnov - 11.08.2017 14:11:13
 
Судя по названию темы, они у Вас и так окрашиваются.
 
Юрий М, ясно сейчас изменю
 
Не сможете. Предложите - я поменяю.
 
Юрий М, название темы такое: "Все ячейки под линией окрашиваются макросом"
 
OlegSmirnov, я не просил Вас создавать новую тему, тем более её название ничуть не лучше. И в новом варианте Вы сообщаете, что ячейки у Вас подкрашиваются. Т.е. вопроса (проблемы) нет. Так понятно?
 
Юрий М, то есть мне надо убрать заливку из ячеек? И в этом случае - вы скажете что теперь проблема есть... но скажете, что теперь непонятно какие ячейки должны быть залиты.
(Я специально подкрасил ячейки (то есть вручную), чтобы была ясна суть вопроса.)
Изменено: OlegSmirnov - 11.08.2017 13:39:22
 
Олег, ну неужели так трудно понять? В Вашем названии нет ни вопроса, ни указания на проблему: Вы просто сообщаете нам, что ячейки у Вас красятся. И хорошо. Проблема в чём?
Вот если бы Вы написали: "Как макросом покрасить все ячейки, находящиеся под линией?" - тогда бы я ни слова не сказал.
Так понятно?
 
Юрий М, поменяйте название моей темы на - "Как макросом покрасить все ячейки, находящиеся под линией?"
 
Цитата
OlegSmirnov написал:
но скажете, что теперь непонятно какие ячейки должны быть залиты.
А сформулировать? Грубый вариант
Хочу, требуется, очень надо: получить готовый макрос с комментариями, который для нарисованной на листе линии находит все ячейки, пересекаемые ей (линия имеет две общие точки с прямоугольником ячейки), и заливает их заданным цветом. Как то так. Теперь сформулируйте вежливый вариант :)
Изменено: Андрей VG - 11.08.2017 13:47:20
 
Андрей VG, изменил первое сообщение.
 
А задачка оказалась не столь проста, учитывая, что Line объект не имеет доступа к координатам концов отрезка. Решение взял тут.
Цитата
OlegSmirnov написал:
Как заставить макрос
Может следующий раз макрос в какой-то реализации прикладывать? А то пусто...
Успехов.
 
Идея такая:
1. У фигуры "Прямая соединительная линия 2" есть свойства Left, Top, Width, Hight, определяющие координаты двух крайних точек этой линии на листе. ActiveSheet.Shapes("Прямая соединительная линия 2 ").Left/Top/Width/Hight
2. Раз знаем координаты двух точек, значит можем определить уравнение прямой линии y=k*x+b
3. Зная уравнение прямой линии, координаты крайних точек, а также высоту и ширину ячеек на листе, можем определить какие ячейки эта линия пересекает
 
Цитата
Equio написал:
1.
Вот с этим пунктом и все сложности. Начало линии может быть выбрано пользователем для рисования с любого угла прямоугольника, её обрамляющего.
 
Андрей VG, макрос работает.
Большое спасибо.
 
Андрей VG, будем надеяться, автор топика смог оценить эту сложность и некоторое кол-во умственного труда, потраченное на её преодоление.
 
Equio, ну да.
Это непростая вещь.
Страницы: 1
Наверх