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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2010, 15:28   #1
Greenfield
Новичок
Джуниор
 
Регистрация: 28.07.2010
Сообщений: 2
Сообщение Вопрос. Объект поле со списком

Доброго дня!
Прошу помочь разобрать в след. вопросе: есть шаблон документа Word. На шаблоне размещена компонента поле со списком.
Необходимо в теле макроса получить значение, которые выбрано а данный момент в этот объекте. Как это сделать ?
Спасибо
Greenfield вне форума Ответить с цитированием
Старый 28.07.2010, 16:02   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Какой из трёх видов списка вас интересует?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 28.07.2010, 16:45   #3
Greenfield
Новичок
Джуниор
 
Регистрация: 28.07.2010
Сообщений: 2
По умолчанию

Интересует третий
Greenfield вне форума Ответить с цитированием
Старый 28.07.2010, 17:00   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Попробуйте функцию для получения комбобокса из активного документа по имени и типу:
Код:
Function GetCombo(sName As String, Optional IsInline As Boolean = True) As MSForms.ComboBox
  Dim oShp As Shape
  Dim oInShp As InlineShape
  If IsInline Then
    For Each oInShp In ActiveDocument.InlineShapes
      If oInShp.Type = wdInlineShapeOLEControlObject Then
        If oInShp.OLEFormat.ClassType = "Forms.ComboBox.1" And oInShp.OLEFormat.Object.Name = sName Then
          Set GetCombo = oInShp.OLEFormat.Object
          Exit For
        End If
      End If
    Next
  Else
    For Each oShp In ActiveDocument.Shapes
      If oShp.Type = msoOLEControlObject Then
        If oShp.OLEFormat.ClassType = "Forms.ComboBox.1" And oShp.OLEFormat.Object.Name = sName Then
          Set GetCombo = oShp.OLEFormat.Object
          Exit For
        End If
      End If
    Next
  End If
End Function
и пример использования функции
Код:
Sub Test()
  Dim cmb As MSForms.ComboBox
  Set cmb = GetCombo("ComboBox1", False)
  If Not cmb Is Nothing Then
    MsgBox cmb.Text
  Else
    MsgBox "Элемент управления не найден"
  End If
End Sub
Если ругается на MSForms, тогда в Tools→References… нужно подключить Microsoft Visual Basic for Applications Extensibility
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поле со списком Diamand Microsoft Office Access 4 14.05.2010 21:28
Поле со списком Underfinder Microsoft Office Access 7 21.03.2010 17:17
Поиск в поле со списком по второму столбцу Swatch Microsoft Office Access 2 16.03.2010 10:09
Поле со списком d_adilet Microsoft Office Access 5 08.02.2010 07:37
Поиск записи в поле со списком Swatch Microsoft Office Access 1 23.12.2009 19:09