1

Тема: Связанный выпадающий список

Добрый день гуру Ворда. Хочу у вас спросить следующее: как сделать связанный выпадающий список, поясню, есть список (как его сделать в 10 ворде я понял:-)) в этом списке названия отделов - а вдругом "месте" (предполагаю что это поле или что еще))) фамилии начальников - так вот при выборе отдела фамилия должна ставиться автоматически. Помогите пожалуйста, как это устроить???

2

Re: Связанный выпадающий список

Вот самый простой способ создания связанного выпадающего списка.
1. Создайте новый шаблон и сохраните его в папке шаблонов Word под оригинальным именем, например Список.dot
2. В первом абзаце наберите "Отдел " и вставьте форму выпадающего списка, в свойствах списка присвойте ему имя cmb_Отдел.
3. Во втором абзаце наберите "Руководитель " и вставьте форму TextBox, в свойствах присвойте ей имя txtРуководитель.
4. В редакторе VBA откройте модуль ThisDocument шаблона Список и создайте 2 взаимосвязанных свойства Список Отделов и Список руководителей, пример:

Public Property Get lstСписокОтделов() As Variant ' Свойство список отделов
Dim lst(1 To 5) As String
    lst(1) = "Проектирования"
    lst(2) = "Сборки"
    lst(3) = "Доставки"
    lst(4) = "Маркетинга"
    lst(5) = "Бухгалтерия"
    lstСписокОтделов = lst
End Property

Public Property Get lstСписокРуководителей() As Variant ' Свойство список руководителей
Dim lst(1 To 5) As String
    lst(1) = "Иванов И.И."
    lst(2) = "Петров П.П."
    lst(3) = "Сидоров С.С."
    lst(4) = "Смиронова М.А."
    lst(5) = "Потапова Т.С."
    lstСписокРуководителей = lst
End Property

5. Теперь создадим процедуру создания новых документов на основе шаблона список:

Private Sub Document_New() ' Создание нового документа
    ActiveDocument.cmb_Отдел.List = lstСписокОтделов
    ActiveDocument.cmb_Отдел.ListIndex = 0
End Sub

Данная процедура заполняет наш всплывающий список и присваивает свойству Text 1-е значение списка.
6. Теперь создадим процедуру которая будет вставлять в текстовое поле фамилию руководителя в зависимости от выбранного раздела и будет выполняться в том случае если значение списка равно одному из выбранных разделов:

Private Sub cmb_Отдел_Change()
    If ActiveDocument.cmb_Отдел.ListIndex >= 0 Then
        ActiveDocument.txtРуководитель.Text = lstСписокРуководителей(ActiveDocument.cmb_Отдел.ListIndex + 1)
    End If
End Sub

7. Сохраните шаблон и закройте.
8. Теперь откройте меню Файл --> Создать --> Мои шаблоны и выберете шаблон список, проверьте что выбрано создание нового документа, а не шаблона. Проверьте работу кода выбирая разные отделы в всплывающем списке.
9. Файл примера прилагаю.

Post's attachments

Список.dot 31.5 Кб, 119 скачиваний с 2012-04-01 

You don't have the permssions to download the attachments of this post.

3

Re: Связанный выпадающий список

не подскажите как тоже самое осуществить без использования шаблона, а также чтоб стрелка выпадающего списка не печаталась.

4

Re: Связанный выпадающий список

Brain86 пишет:

не подскажите как тоже самое осуществить без использования шаблона, а также чтоб стрелка выпадающего списка не печаталась.

1. Сохраняйте файл в формате *.docm
2. Что бы при печати не отображались рамка и стрелка, для элемента управления в свойствах выставите следующие параметры:
ShowDropButtonWhen = 1
SpecialEffect = 0
Для доступа к свойствам элемента управления на вкладке "Разработчик"  включите "Режим конструктора" и нажмите кнопку "Свойства"