Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 20:37

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 18 июл 2021, 01:29 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
С помощью макроса создаю контрол у группы и внутри группы новую фигуру , как правильно привязать контрол к фигуре. Я пробую так не получается. Пишет неправильное имя таблицы свойств фигуры.
Код:
Sub Macro1()

    Dim intPropRow2 As Integer
    Dim shp As Visio.Shape
    Dim shp2 As Visio.Shape
   
    For Each shp In Application.ActiveWindow.Selection
   
   
   
    intPropRow2 = shp.AddRow(visSectionControls, visRowLast, visCtlX)
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).RowNameU = "Label"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).FormulaForceU = "Width*0.5"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlY).FormulaForceU = "Height*0.5"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlXDyn).FormulaForceU = "Controls.Label"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlYDyn).FormulaForceU = "Controls.Label.Y"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlXCon).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlYCon).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlGlue).FormulaForceU = "TRUE"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlType).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlTip).FormulaForceU = """"""
   
    Set shp2 = shp.DrawRectangle(2.952756, 3.405512, 5.03937, 4.055118)
   
    shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = "shp.NameID!Controls.Label"

    shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = "shp.NameID!Controls.Label.Y"

    Next shp

End Sub

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 18 июл 2021, 06:25 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tim Umix писал(а):
С помощью макроса создаю контрол у группы
не совсем понятно, в каком контексте имеется в виду группа:
  • фигура, содержащая внутри себя другие фигуры (собственно определение групповой фигуры [группового шейпа]);
  • набор фигур, выделенных пользователем (наводит на это подозрение ваш код).
Tim Umix писал(а):
внутри группы новую фигуру
у вас добавление новой фигуры идет внутри цикла(!), т.е. если бы не было ошибки таких фигур было бы добавлено ровно столько, сколько фигур было в первоначально выделено
Tim Umix писал(а):
Пишет неправильное имя таблицы свойств фигуры.
Дополнено позднее: возможно выше вы привели не весь код, из что я могу видеть непонятно на какую фигуру вы ссылаетесь shp.NameID!Controls.Label!
В Visio есть 2 варианта: по имени и по ID. Вариант с ID предпочтительнее (пруф).

я 11 лет и не замечал, это свойство NameID :wall: и городил конструкции типа "sheet." & shp.ID

Код:
shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = shp.NameID & "!Controls.Label"
shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = shp.NameID & "!Controls.Label.Y"
такой вариант кода работоспособен !
но Controls.Label/Controls.Label.Y - это не абсолютные координаты (в пространстве листа)!
а относительные в пределах фигуры shp, помните что вы писали в коде положение контрола shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).FormulaForceU = "Width*0.5".
поэтому фигура shp2 окажется явно не рядом с shp (в большинстве случаев)!!!
Дополнено позднее: запустил код и обнаружил такой момент: новая фигура shp2 не добавляется, добавляется лишь новый раздел Geometry2
Изображение
Причина: у вас в коде прописано Set shp2 = shp.DrawRectangle(2.952756, 3.405512, 5.03937, 4.055118).
Т.е. прямоугольник рисуется внутри фигуры shp, а не пространства листа! Так и задумано?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Последний раз редактировалось Surrogate 18 июл 2021, 08:31, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 18 июл 2021, 14:22 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
у вас в коде прописано Set shp2 = shp.DrawRectangle(2.952756, 3.405512, 5.03937, 4.055118).
Т.е. прямоугольник рисуется внутри фигуры shp, а не пространства листа! Так и задумано?[/updated]

Да так и планировал, надо добавить уже к существующем фигурам еще одну. Спасибо буду пробовать.
Именно вот это я и искал.
Код:
shp.NameID & "!Controls.Label.Y"

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 18 июл 2021, 14:27 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
запустил код и обнаружил такой момент: новая фигура shp2 не добавляется, добавляется лишь новый раздел Geometry2Изображение

Если фигура на которой запускается макрос не сгруппирована , то да добавляется раздел геометрия, если применить макрос на группу , то добавляется фигура в группу.

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 18 июл 2021, 15:28 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Все работает , как я хотел. Спасибо.


Вложения:
_2021_07_18_14_26_30_556.gif
_2021_07_18_14_26_30_556.gif [ 789 Кб | Просмотров: 508 ]

_________________
Группа в VK Фигуры электрики для Visio
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 19 июл 2021, 23:21 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Немного дополнил макрос, если выбранный шейп не является сгруппированным шейпом, то макрос сначала его группирует и потом добавляет внутрь фигуру. Столкнулся с такой проблемой , что если выбрать несколько шейпов, макрос шейпы группирует, но добавляет фигуру только в один сгруппированный шейп. Можно ли сделать , что бы макрос срабатывал на все выделенные шейпы?
Код:
Sub Macro1()

    Dim intPropRow2 As Integer
    Dim shp As Visio.Shape
    Dim shp2 As Visio.Shape
   
      For Each shp In Application.ActiveWindow.Selection
   
    If shp.Shapes.Count = 0 Then
   
    shp.Group
   
    End If
   
    Next shp
   
   
    For Each shp In Application.ActiveWindow.Selection
   
   
    intPropRow2 = shp.AddRow(visSectionControls, visRowLast, visCtlX)
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).RowNameU = "Label"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).FormulaForceU = "Width*0.5"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlY).FormulaForceU = "Height*0.5"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlXDyn).FormulaForceU = "Controls.Label"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlYDyn).FormulaForceU = "Controls.Label.Y"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlXCon).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlYCon).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlGlue).FormulaForceU = "TRUE"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlType).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlTip).FormulaForceU = """"""
   
    Set shp2 = shp.DrawRectangle(2.952756, 3.405512, 5.03937, 4.055118)
   
    shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = shp.NameID & "!Controls.Label"

    shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = shp.NameID & "!Controls.Label.Y"

    Next shp

End Sub


Вложения:
macros.vsd [36 Кб]
Скачиваний: 33
_2021_07_19_22_15_45_293.gif
_2021_07_19_22_15_45_293.gif [ 1.18 Mб | Просмотров: 485 ]

_________________
Группа в VK Фигуры электрики для Visio
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 20 июл 2021, 00:13 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tim Umix писал(а):
но добавляет фигуру только в один сгруппированный шейп
посмотрите у вас на выходе первого цикла, всего одна выделенная фигура остается ! нужно сначала объявить переменную селекшн. и во втором цикле перебирать фигуры в нем
Код:
Sub vk()
Dim intPropRow2 As Integer, i As Integer
Dim shp As Visio.Shape
Dim shp2 As Visio.Shape
Dim sl As Selection
Set sl = Application.ActiveWindow.Selection
    For i = 1 To sl.Count
    Set shp = sl.Item(i)
    If shp.Shapes.Count = 0 Then
        shp.Group
    End If
Next
For i = 1 To sl.Count
    Set shp = sl.Item(i)
    intPropRow2 = shp.AddRow(visSectionControls, visRowLast, visCtlX)
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).RowNameU = "Label"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlX).FormulaForceU = "Width*0.5"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlY).FormulaForceU = "Height*0.5"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlXDyn).FormulaForceU = "Controls.Label"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlYDyn).FormulaForceU = "Controls.Label.Y"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlXCon).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlYCon).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlGlue).FormulaForceU = "TRUE"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlType).FormulaForceU = "0"
    shp.CellsSRC(visSectionControls, intPropRow2, visCtlTip).FormulaForceU = """"""
    Set shp2 = shp.DrawRectangle(2.952756, 3.405512, 5.03937, 4.055118)
    shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = shp.NameID & "!Controls.Label"
    shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = shp.NameID & "!Controls.Label.Y"
Next
End Sub

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 20 июл 2021, 21:51 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Что то не получается. Я хотел , чтобы после группировки фигура и контролс добавлялись в группу. А получается они добавляются в фигуру внутри группы. То есть я хотел чтобы на выходе из простого шейпа получился сгруппированный шейп с двумя фигурами и контролом. С группированными шейпами все отлично.


Вложения:
_2021_07_20_20_48_07_938.gif
_2021_07_20_20_48_07_938.gif [ 1.03 Mб | Просмотров: 468 ]

_________________
Группа в VK Фигуры электрики для Visio
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 20 июл 2021, 22:26 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tim Umix писал(а):
Что то не получается. Я хотел , чтобы после группировки фигура и контролс добавлялись в группу. А получается они добавляются в фигуру внутри группы. То есть я хотел чтобы на выходе из простого шейпа получился сгруппированный шейп с двумя фигурами и контролом.
понял в чем проблема: когда одна из фигур селекшена группируется, то новая групповая фигура уже не входит в селекшн.
Код:
Sub vk()
Dim intPropRow2 As Integer, i As Integer
Dim shp As Visio.Shape
Dim shp2 As Visio.Shape
Dim sl As Selection
Set sl = Application.ActiveWindow.Selection
    For i = 1 To sl.Count
    Set shp = sl.Item(i)
    If shp.Shapes.Count = 0 Then
        Set shp1 = shp.Group
        intPropRow2 = shp1.AddRow(visSectionControls, visRowLast, visCtlX)
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlX).RowNameU = "Label"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlX).FormulaForceU = "Width*0.5"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlY).FormulaForceU = "Height*0.5"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlXDyn).FormulaForceU = "Controls.Label"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlYDyn).FormulaForceU = "Controls.Label.Y"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlXCon).FormulaForceU = "0"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlYCon).FormulaForceU = "0"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlGlue).FormulaForceU = "TRUE"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlType).FormulaForceU = "0"
        shp1.CellsSRC(visSectionControls, intPropRow2, visCtlTip).FormulaForceU = """"""
        Set shp2 = shp1.DrawRectangle(2.952756, 3.405512, 5.03937, 4.055118)
        shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinX).FormulaU = shp1.NameID & "!Controls.Label"
        shp2.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = shp1.NameID & "!Controls.Label.Y"
        shp1.CellsSRC(visSectionObject, visRowGroup, visGroupDisplayMode).FormulaU = "1"
    End If
Next
End Sub

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 20 июл 2021, 23:17 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
понял в чем проблема: когда одна из фигур селекшена группируется, то новая групповая фигура уже не входит в селекшн.
Спасибо. Работает :D

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 23 июл 2021, 21:50 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
А можно , как то сделать так чтобы макрос выполнялся в определен порядке? Например я сделал в ряд 4 фигуры 1-простой шейп, 2- группированный шейп, и потом опять простой и группированный. Я выделяю их слева направо запускаю макрос и макрос выполняется в том порядке в котором я выделял фигуры. А как сделать , чтобы например макрос выполнялся только на групповых шейпах, а потом на простых не зависимо от того, как они были выделены?

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 23 июл 2021, 22:05 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Выполняйте его в два прохода. В первом ставьте фильтр по типу шейпа "группа", во втором - остальные.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 23 июл 2021, 22:13 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Tumanov писал(а):
Выполняйте его в два прохода.
согласен!
Tim Umix писал(а):
как сделать , чтобы например макрос выполнялся только на групповых шейпах, а потом на простых не зависимо от того, как они были выделены?
Selection работает по мере выделения фигур! Тимур зачем такие сложности: группированные/ не группированные?
Группируйте все и выделяйте в нужном вам порядке. Или есть, что то препятствующее этому?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 23 июл 2021, 22:22 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Tumanov писал(а):
Выполняйте его в два прохода.
согласен!
Tim Umix писал(а):
как сделать , чтобы например макрос выполнялся только на групповых шейпах, а потом на простых не зависимо от того, как они были выделены?
Selection работает по мере выделения фигур! Тимур зачем такие сложности: группированные/ не группированные?
Группируйте все и выделяйте в нужном вам порядке. Или есть, что то препятствующее этому?

Да никаких препятствий нет, просто пробую разные подходы, так сказать просто экспериментирую)).

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 23 июл 2021, 22:28 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Выполняйте его в два прохода. В первом ставьте фильтр по типу шейпа "группа", во втором - остальные.

Спасибо, буду пробовать.

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 24 июл 2021, 01:06 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Сделал такой макрос. Работает. А вот можно, чтобы он так же работал, но только не на страницу , а для выделенных шейпов?
ps. Главное условие сначала выполнение макроса на групповых фигурах.
Код:
Sub qqq()

    Dim shp As Visio.Shape
    Dim i As Integer
    Dim s1 As Selection
   
   
    'Групповой шейп зеленый цвет
   
    Set s1 = Application.ActiveWindow.Page.CreateSelection(visSelTypeByType, visSelModeSkipSuper, visTypeSelGroup)
    For i = 1 To s1.Count
    Set shp = s1.Item(i)
     If shp.Shapes.Count > 0 Then
        For Each shp In shp.Shapes
        shp.CellsSRC(visSectionObject, visRowLock, visLockFormat).FormulaU = "0"
        shp.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "RGB(0,176,80)"

    Next

    End If

    Next
   
    'Простой шейп красный цвет

    Set s1 = Application.ActiveWindow.Page.CreateSelection(visSelTypeByType, visSelModeSkipSuper, visTypeSelShape)

    For i = 1 To s1.Count
    Set shp = s1.Item(i)
    shp.CellsSRC(visSectionObject, visRowLock, visLockFormat).FormulaU = "0"
    shp.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "RGB(255,0,0)"

    Next

End Sub


Вложения:
_2021_07_24_00_00_00_919.gif
_2021_07_24_00_00_00_919.gif [ 491.57 Кб | Просмотров: 411 ]

_________________
Группа в VK Фигуры электрики для Visio
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 24 июл 2021, 12:21 
Tim Umix писал(а):
чтобы он так же работал, но только не на страницу , а для выделенных шейпов?
ну так работайте с Selection, а не создавайте новый через CreateSelection!
Tim Umix писал(а):
Главное условие сначала выполнение макроса на групповых фигурах
как в вариант собирать фигуры в коллекции ColGr (групповые шейпы) и ColSh (простые фигуры). Потом делайте перебор внутри коллекций
Код:
Sub qqq()
Dim ColGr As New Collection
Dim ColSh As New Collection
Dim sel As Selection, i%, sh As Shape
Set sel = ActiveWindow.Selection
For i = 1 To sel.Count
Set sh = sel.Item(i)
If sh.Type = visTypeGroup Then
    ColGr.Add sh
Else
    ColSh.Add sh
End If
Next
Dim shp As Visio.Shape
Dim shin As Visio.Shape ' внутренние шейпы группы
For i = 1 To ColGr.Count
Set shp = ColGr.Item(i)
    For Each shin In shp.Shapes
        shin.CellsSRC(visSectionObject, visRowLock, visLockFormat).FormulaU = "0"
        shin.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "RGB(0,176,80)"
    Next
Next
For i = 1 To ColSh.Count
    Set shp = ColSh.Item(i)
    shp.CellsSRC(visSectionObject, visRowLock, visLockFormat).FormulaU = "0"
    shp.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "RGB(255,0,0)"
Next
End Sub


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Как привязать к контролу фигуру внутри группы?
СообщениеДобавлено: 24 июл 2021, 14:44 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 08 мар 2020, 00:19
Сообщений: 336
Использую Visio c: 2019
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Гость писал(а):
как в вариант собирать фигуры в коллекции ColGr (групповые шейпы) и ColSh (простые фигуры). Потом делайте перебор внутри коллекций

Спасибо , именно так я и хотел, но не знал, как сделать :oops: ))

_________________
Группа в VK Фигуры электрики для Visio


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB