Консультация № 178104
29.04.2010, 19:00
35.77 руб.
0 2 1
Подскажите пожалуйста:
Количество_InlineShapes = ActiveDocument.InlineShapes.Count 'сюда входят комбобоксы, флажки, коммандбуттоны и так далее КАК БЫ РАЗГРАНИЧИТЬ ВСЁ ПО ОТДЕЛЬНОСТИ И ПРИСВОИТЬ ПЕРЕМЕННУЮ???????

КАК УЗНАТЬ ВЫДЕЛЕН ЛИ ОБРАБАТЫВАЕМЫЙ ОБЪЕКТ??????

If ActiveDocument.InlineShapes(i).Selection Then ........'ЗДЕСЬ ВЫДЕЛЯЕТ Selection????

Обсуждение

давно
Профессор
230118
3054
30.04.2010, 00:38
общий
это ответ
Здравствуйте, Ципихович Эндрю.

У каждой из InlineShapesе есть свойство OLEFormat. Через цикл Foreach проверяем это свойство. Например, у кнопки оно равно Forms.CommandButton.1, у списков Forms.ComboBox.1 и так далее.
Dim ci As Object
buttoncount=0
combocount=0
For Each Control In ActiveDocument.InlineShapes
If Control.OLEFormat.ClassType = "Forms.CommandButton.1" Then
buttoncount=buttoncount+1
End If

If Control.OLEFormat.ClassType = "Forms.ComboBox.1" Then
combocount=combocount+1
End If
Next

Второй вопрос:
Свойства Selection нет, но есть свойство Range. Нужно сравнить Selection.Range ( выделение в документе) с ActiveDocument.InlineShapes(i).Range. Нужно сравнить Start и End - начало и конец, которые представляют собой числа, и проверить, содержится ли отрезок элемента в отрезке выделения.



Приложение:
If ActiveDocument.InlineShapes(i).Range.Start >= Selection.Range.Start And ActiveDocument.InlineShapes(i).Range.End <= Selection.Range.End Then
5
Неизвестный
30.04.2010, 18:07
общий
Гаряка Асмик:
Спасибо за ответ, то есть я правильно понял, чтобы выделенные ComboBox перед печатью скрыть короче пути нет????, печально!!!, если есть напишите пожалуйста!!!
Количество_InlineShapes = ActiveDocument.InlineShapes.Count
Начало_выделенного = Selection.Range.Start
Конец_выделенного = Selection.Range.End
ComboBox = 0
ComboBox_ов_скрыли = 0
For u = 1 To Количество_InlineShapes
If ActiveDocument.InlineShapes(u).OLEFormat.ClassType = "Forms.ComboBox.1" Then 'условие, если обрабатываемый объект является полем со списком
ComboBox = ComboBox + 1
InlineShapes_u_Start = ActiveDocument.InlineShapes(u).Range.Start
InlineShapes_u_End = ActiveDocument.InlineShapes(u).Range.End
If InlineShapes_u_End > Конец_выделенного Then Exit For 'условие, если конец обрабатываемого ComboBox находится после выделенного, тогда выйти з цикла
If InlineShapes_u_Start >= Начало_выделенного Then
ActiveDocument.InlineShapes(u).Range.Font.Hidden = True
ComboBox_ов_скрыли = ComboBox_ов_скрыли + 1
If ComboBox_ов_скрыли = 1 Then Первый_выделенный_ComboBox = ComboBox
End If
End If
Next
Форма ответа