Author |
Topic |
|
nnsav
21 Posts |
Posted - 11/01/2011 : 12:30:40
|
Добрый день. Уже более-менее освоился с ручным редактированием таблицы свойств фигуры, а вот сделать это через VBA не получается. Если кто-нибудь не сочтет за труд и сделает простенький пример, буду очень признателен. Для N выделенных объектов установить для координаты Y (Pin Y в таблице свойст фигуры) в значение: текущее значение PinY+50.
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/01/2011 : 14:43:31
|
Sub ttt()
Dim sel As Visio.Selection
Dim shp As Visio.Shape
Set sel = ActiveWindow.Selection
For Each shp In sel
shp.Cells("PinY") = shp.Cells("PinY") + 2
Next
End Sub |
|
|
nnsav
21 Posts |
Posted - 11/02/2011 : 08:26:01
|
Спасибо!!!
|
|
|
nnsav
21 Posts |
Posted - 11/04/2011 : 17:47:10
|
не могу понять еще один момент по данной теме: выражение shp.Cells("PinX").Formula = "=guard (PinY)" успешно записывает в ячейку PinX шейпа формулу: guard (PinY)
но если попытаться аналогично сделать для ячейки Y: shp.Cells("PinY").Formula = "=guard (PinY)" получаю циклическую ссылку при запуске макроса.
Как сделать правильно для ячейки Y? |
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/04/2011 : 19:31:53
|
А зачем понадобилось такое извращение? Какого поведения шейпа Вы при этом хотите добиться?
|
|
|
nnsav
21 Posts |
Posted - 11/07/2011 : 07:46:47
|
Цель-заблокировать изменение координаты Y шейпа, причем если это делать именно через GUARD, то при копировании со страницы на страницу значение PinY принимает желаемое значение. Если же зажимать координату Y через "защиту", то при копировании шейпа на новую страницу его Y координата меняется.
|
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/07/2011 : 16:16:38
|
Так копируйте не формулу, а значение. Например, вот так: sh.Cells("PinY").Formula = "Guard(" & sh.Cells("PinY") & ")" Тогда циклической ссылки не будет. |
|
|
9rey
Russia
30 Posts |
Posted - 11/08/2011 : 08:05:40
|
а вот у меня такой вопрос:
quote: shp.Cells("PinY") = shp.Cells("PinY") + 2
в этом выражении "+2" в каких единицах? т.е. значение ячейки PinY увеличивается на 2 чего? мм, см, пикселей? |
|
|
Surrogate
Russia
122 Posts |
Posted - 11/08/2011 : 08:23:37
|
quote: sh.Cells("PinY").Formula = "Guard(" & sh.Cells("PinY") & ")"
что-то у меня на Visio2003 такой код не идет - ошибка 424 (Object required) :(
quote: в этом выражении "+2" в каких единицах? т.е. значение ячейки PinY увеличивается на 2 чего? мм, см, пикселей?
в vba visio единицы измерения только дюймы ! для задания размеров в мм их еще пресчитывать придется !
† |
Edited by - Surrogate on 11/08/2011 08:44:59 |
|
|
Tumanov
Russia
1198 Posts |
Posted - 11/08/2011 : 14:49:41
|
quote: что-то у меня на Visio2003 такой код не идет - ошибка 424 (Object required) :(
Это я опустил назначение шейпа :) Типа, Dim sh As Visio.Shape Set sh = ... Скорее всего из-за этого. |
|
|
|
Topic |
|