Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2016, 12:05   #1
DBEER
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 76
По умолчанию Shape в группе. Как понять в VBA, что выделена не просто группа, но и Shape (объект на группе)?

Выделяю группу (сгруппированы Shap'ы и надписи) щелчком.
По периметру высвечиваются 8 белых кружочков.
Все хорошо. Я в VB работаю, как с группой и надо мне сделать Ungroup.
И работает.
А вот если сгоряча щелкнуть дважды (в руке дрогнул пистолет),
то выделяется не просто группа, а еще и её элемент (он обрамляется своими ручками управления - серыми кружочками).
И вот в этом случае при попытке Ungroup получаю:
Run-time error...
Данный компонент недоступен на объекте из группы.
Как распознать ету ситуацию в VBA (Word 2003)?
DBEER вне форума Ответить с цитированием
Старый 30.01.2016, 17:57   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Я попробовал выделить группу и ее элемент - получается, что объект Selection в этом случае ссылается на элемент и не несет информации о группе, хотя на экране группа тоже выделена.
Различить тип выделения можно так
Код:
Sub ff()
  If TypeName(Selection) = "GroupObject" Then
    Selection.Ungroup
  Else
    MsgBox "дрогнул пистолет - выделите группу"
  End If
End Sub
Так в 2010.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 01.02.2016, 16:05   #3
DBEER
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 76
По умолчанию Легче стало дедушке - реже стал дышать :))

Спасибо, Казанский! Туда-то я и не поглядел.
Буду рыться.
DBEER вне форума Ответить с цитированием
Старый 01.02.2016, 16:33   #4
DBEER
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 76
По умолчанию Х.., там - штанга!! (С) Озеров Николай

в случае выделения объекта на группе:

? TypeName(Selection.ShapeRange)
ShapeRange
? TypeName(Selection)
Selection

в случае выделения группы целиком - то же самое.
Даже приведенная в ответе конструкция не выдает "GroupObject"
DBEER вне форума Ответить с цитированием
Старый 01.02.2016, 21:48   #5
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Если выбрана группа, то:
Selection.ShapeRange - собственно группа
Selection.ChildShapeRange - выбранные элементы группы (их может быть несколько, а может и не быть - выбрана только группа).
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 02.02.2016, 12:27   #6
DBEER
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 76
Хорошо Вождю от благодарных соплеменников..

Спасибо, Вождь!!
Вектор подсказал мне. ВОт что я изобразил для перехода от дочернего объекта к группе целиком:

Код:
'Переход от дочернего объекта к группе
Sub Fr_ChildToParent()
On Error GoTo ExErr
    If Selection.ChildShapeRange.Type = msoShapeTypeMixed Then
        Set oSel = Selection.ChildShapeRange(1).ParentGroup
        Selection.Collapse
        oSel.Select
    End If
ExErr:
End Sub
DBEER вне форума Ответить с цитированием
Старый 02.02.2016, 14:32   #7
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от DBEER Посмотреть сообщение
...для перехода от дочернего объекта к группе целиком...
Работает, но не всегда. Попробуйте ваш макрос:
1. На файлах Doc и Docx - удивитесь
2. На вложенных группах - группа в группе.
2. На объектах Shape и InLineShape.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 15.02.2016, 10:26   #8
DBEER
Пользователь
 
Регистрация: 13.03.2014
Сообщений: 76
По умолчанию ..В разных ситуациях..

Вождь, приветствую тебя, хау!!
Перечисленные тобой экзо-ситуации не критичны для моего случая.
Речь идет о конкретной группе (типовой элемент узкоспецифичного документа) и в конкретной среде - только *.doc, а кто не спрятался - я не виноват.
Т.ч., всё равно, спасибо!!
DBEER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи, объект Shape Татина Общие вопросы Delphi 1 18.12.2015 17:00
Как разрулить конфликт в группе? OldOwlOll Свободное общение 44 15.02.2015 08:45
Задача по теории вероятностей ( В группе 16 юношей и 14 девушек. Выбирают делегацию из 5 человек. Найти вероятность того, что...) now2 Помощь студентам 3 25.03.2014 17:38
Pascal цикл с Shape.Left and Shape.Top BanzoO Помощь студентам 1 13.12.2009 21:47
Программирование в группе, как будет легче? Neeter Свободное общение 5 05.05.2009 16:07