Графические объекты
Панель рисования •
Имена графических объектов •
Как обращаться к графическим объектам, не
выделяя их?
Система координат •
Сетка Excel •
Использование других приложений для
графики
Панель рисования
После того, как в MS Word освоены возможности
панели рисования, при изучении электронных таблиц к ней обычно уже
не возвращаются, а потому в сознании многих рисование и графические
иллюстрации в Excel воспринимаются как нечто непредполагаемое или
излишнее. Это явное заблуждение. Иллюстрирование документов,
заданий, тестов и моделей, созданных в этом приложении, не
ограничивается диаграммами и графиками. Использование
рисунков, схем, чертежей, формул Microsoft Equation 3.0 и
графических текстов WordArt делает проекты яркими, красочными,
доходчивыми и привлекательными. А если к этому добавить анимационные
возможности, то эффект будет многократно выше.
Вы, вероятно, заметили, что некоторые элементы в
предыдущих проектах явно не текстово-ячеичного происхождения.
Правда, они не несли достаточной серьезной нагрузки и оставались на
вторых ролях. Параллелограмм и ромб можно было бы создать
форматированием ячеек, но их закраска была бы проблематична.
Далее о динамических эффектах с использованием
графических объектов.
Имена графических объектов
Каждому объекту присваивается свой порядковый номер
создания или внедрения. Если какие-либо объекты удалялись, порядок
счета не нарушается. Большинство автофигур (AutoShape) различаются
только номером создания, и обращение к ним производится так:
ActiveSheet.Shapes("AutoShape 3").Select – активную плоскую форму «Автофигуру
3» выделить. Однако простейшие примитивы: отрезок, прямоугольник,
овал и дуга кроме порядкового номера имеют свои собственные имена,
например: "Line 3", "Rectangle 1", "Oval 5", "Arc 7". Для рисунков
используется обращение типа "Picture 4", а для объектов, создаваемых
на основе кривых Безье, – "Freeform 7" (полилиния). Русский
эквивалент можно видеть в окне Имя в самом начале строки формул,
там, где отображаются адреса активных ячеек и диапазонов, и это
нередко помогает ориентироваться.
При группировке объектов нумерация вновь
создаваемых таким образом объектов продолжается, и группа уже может
именоваться как "Group 18". В некоторых случаях необходимо
единообразное именование объектов, присутствующих в вашем проекте,
например, при обращении к объекту в цикле, тогда можно создать
небольшой отрезок и за каждый из ваших элементов поместить его
копию, сгруппировать образовавшиеся пары и обращаться к ним как к
группе с соответствующим номером. Однако наиболее простой и
эффектный способ состоит в том, что если вы отбросите «титулы» и в
круглых скобках укажете только порядковый номер графического
объекта, то вас поймут и вам за это ничего не будет. Так что
ActiveSheet.Shapes(3) вполне приемлемая и универсальная форма
обращения к графическим (да и не только) объектам, в которой
аргумент в скобках может быть переменной целого типа.
Как обращаться к графическим
объектам, не выделяя их?
Ответ на этот вопрос рассмотрим на примере:
При записи макроса получили:
ActiveSheet.Shapes("Rectangle 1").Select
Selection.ShapeRange.IncrementLeft 80
Selection.ShapeRange.IncrementTop -30
После его преобразования стало:
ActiveSheet.Shapes("Rectangle 1").IncrementLeft 80
ActiveSheet.Shapes("Rectangle 1").IncrementTop -30
Вывод: строку ActiveSheet.Shapes("Rectangle
1").Select необходимо удалить, чтобы маркеры выделения не отвлекали
от основного процесса, а в последующем тексте макроса во всех
предписаниях для изменения свойств этой фигуры текст
Selection.ShapeRange заменить конкретным именем объекта.
Система координат
Положение графических объектов на листе Excel в VBA
отсчитывается от левого верхнего угла рабочего листа в пикселях, так
что при разрешении экрана 1024 х 768 сцена Excel имеет размеры 734 х
402 рх (при отображении панели рисования и двухрядном расположении
стандартной панели и панели форматирования) или 734 х 442 рх (при
однорядном расположении и без панели рисования).
Сетка Excel
Панель рисования в MS Excel не совсем та же, что в
MS Word. Здесь в меню Рисование строка Сетка отсутствует вовсе.
Видимо, предполагается использование сетки Excel.
К сожалению, разработчики MS Excel, по всей
вероятности, не предусматривали такого рода художеств в этом
приложении, поэтому стандартную сетку невозможно настроить таким
образом, чтобы она служила надежной опорой. Так по горизонтали в
качестве единицы длины используется ширина некоего знака, причем,
как удалось выяснить в ходе экспериментов, 100 таким единицам
соответствует примерно 529 пикселей, а шаг изменения размера сетки,
как ни странно, почему-то выбран равным 1/7 этой единицы! По
вертикали размер вроде бы в пикселях, но радоваться по этому поводу
рано. При более детальном исследовании выявляется парадоксальная
ситуация: если вы укажете высоту первой строки равной 400 пикселям,
то она действительно будет иметь такую высоту, однако, если вы
выберете высоту строк 10, то к своему изумлению обнаружите, что на
400 пикселях спокойно размещается 41 строка!? По этой причине, в
случае необходимости надежного ориентирования, лучше с помощью
панели рисования и макроса, создать свою сетку с шагом 10 рх.

Использование других
приложений для графики
Как уже было сказано, в MS Excel существуют
проблемы с настройкой сетки, в том числе и в соответствии с
метрической системой. Кроме того, в электронных таблицах доступное
со стандартной панели увеличение ограничено 200%1.
В некоторых случаях более удобно создавать иллюстрации к проектам,
используя возможности MS Word, а затем переносить их в свой файл
через буфер обмена. Иногда и возможностей текстового редактора
недостаточно. Так панель рисования MS Office не позволяет
производить логические операции над графическими объектами
(пересечение, объединение, вычитание). В этом случае может выручить
импорт графического объекта из Corel Draw.
Что касается растровых объектов, то естественно,
что все они импортного происхождения и могут создаваться и
обрабатываться в любом подходящем приложении.
1 Указанное в поле масштаба
максимальное значение в 200% сбивает с толку. Можете попробовать
вписать число до 400%. Действует. |