Vba word выпадающий список

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

Создавать зависимые выпадающие списки в Word с кодом VBA


Создавать зависимые выпадающие списки в Word с кодом VBA

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

1. Во-первых, вам нужно вставить два раскрывающихся списка в ваш документ Word. Нажмите Застройщик > Устаревшие формы > Раскрывающееся поле формы. Смотрите скриншот:

2. Щелкните правой кнопкой мыши первый раскрывающийся список (этот раскрывающийся список должен быть родительским) и щелкните Свойства. Смотрите скриншот:

3. В дебюте Параметры поля раскрывающейся формы диалоговое окно, вам необходимо:

3.1 Введите категорию в Выпадающий элемент и нажмите Добавить кнопку, повторяйте операцию, пока все категории не будут добавлены в раскрывающийся список Элементы в.

3.2 Ввод ддфуд в закладка пунктом.

3.3 Щелкните значок OK кнопка. Смотрите скриншот:

4. Щелкните правой кнопкой мыши второй раскрывающийся список, щелкните Предложения открыть Параметры поля раскрывающейся формы диалоговое окно и в диалоговом окне введите ддКатегория в закладка и нажмите OK кнопка. Смотрите скриншот:

5. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

6. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль, затем скопируйте ниже код VBA в окно модуля.

Код VBA: создать зависимый раскрывающийся список в Word

Sub Populateddfood()
'Update by Extendoffice 2018/10/25
    Dim xDirection As FormField
    Dim xState As FormField
    On Error Resume Next
    Set xDirection = ActiveDocument.FormFields("ddfood")
    Set xState = ActiveDocument.FormFields("ddCategory")
    If ((xDirection Is Nothing) Or (xState Is Nothing)) Then Exit Sub
    With xState.DropDown.ListEntries
        .Clear
        Select Case xDirection.Result
            Case "Fruit"
                .Add "Apple"
                .Add "Banana"
                .Add "Peach"
                .Add "Lychee"
                .Add "Watermelon"
            Case "Vegetable"
                .Add "Cabbage"
                .Add "Onion"
            Case "Meat"
                .Add "Pork"
                .Add "Beef"
                .Add "Mutton"
        End Select
    End With
End Sub

Ноты:

1. В коде, пожалуйста, измените элементы для каждого случая по мере необходимости.

2. ддфуд и ддКатегория должны соответствовать параметрам закладки, которые вы ввели в двух предыдущих Параметры поля раскрывающейся формы диалоговые окна.

7. Сохраните код и вернитесь к документу.

8. Щелкните правой кнопкой мыши первый раскрывающийся список и выберите Предложения для открытия Параметры поля раскрывающейся формы диалоговое окно. В диалоговом окне выберите указанное выше имя макроса (здесь Popolateddfood) из Выход раскрывающийся список, а затем щелкните OK кнопку.

9. Теперь щелкните Застройщик > Ограничить редактирование как показано ниже.

10. в Ограничить редактирование панель, вам необходимо:

10.1) Проверьте Разрешить только этот тип редактирования в документе коробка;

10.2) Выбрать Заполнение форм вариант из выпадающего списка;

10.3) Нажмите Да, начать усиление защиты кнопка;

10.4). Начать усиление защиты диалоговом окне введите пароль и щелкните OK кнопка. Смотрите скриншот:

Теперь создается зависимый выпадающий список. При выборе «Фрукты» в первом раскрывающемся списке во втором можно выбрать только категории фруктов.


Рекомендуемые инструменты для повышения производительности Word

выстрел kutools word kutools tab 1180x121

выстрел kutools word kutools plus tab 1180x120

Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени

  • Сложные и повторяющиеся операции можно производить разово за секунды.
  • Вставляйте сразу несколько изображений из папок в документ Word.
  • Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
  • Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
  • Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.

Комментарии (27)


Оценок пока нет. Оцените первым!

На чтение 3 мин. Просмотров 965 Опубликовано 28.05.2021

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

Создание зависимых раскрывающихся списков в Word с кодом VBA


Содержание

  1. Создание зависимых раскрывающихся списков в Word с кодом VBA
  2. Рекомендуемые инструменты повышения производительности Word
  3. Kutools For Word – Более 100 расширенных функций для Word, сэкономьте 50% времени

Создание зависимых раскрывающихся списков в Word с кодом VBA

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

1. Во-первых, вам нужно вставить два раскрывающихся списка в документ Word. Нажмите Разработчик > Устаревшие формы > Выпадающее поле формы . См. Снимок экрана:

2. Щелкните правой кнопкой мыши первый раскрывающийся список (этот раскрывающийся список должен быть родительским) и выберите Свойства. См. Снимок экрана:

3. В открывшемся диалоговом окне Параметры поля раскрывающейся формы вам необходимо:

3.1 Введите категорию в раскрывающийся элемент , а затем нажмите кнопку Добавить , повторяйте операцию, пока все категории не будут добавлены в раскрывающийся список «Элементы в».

3.2 Введите ddfood в поле Закладка .

3.3 Нажмите кнопку ОК . См. Снимок экрана:

4. Щелкните правой кнопкой мыши второй раскрывающийся список, выберите Свойства , чтобы открыть диалоговое окно Параметры поля формы раскрывающегося списка , и в диалоговом окне введите ddCategory в поле Закладка и нажмите кнопку ОК . См. Снимок экрана:

5. Нажмите клавиши Alt + F11 , чтобы открыть окно Microsoft Visual Basic для приложений .

6. В окне Microsoft Visual Basic для приложений нажмите Вставить > модуль, затем скопируйте ниже код VBA в окно модуля. .

Код VBA: создание зависимого раскрывающегося списка в Word

Примечания:

1. В коде измените элементы для каждого случая по мере необходимости.

2. ddfood и ddCategory должны соответствовать параметрам закладок, которые вы ввели в двух вышеупомянутых диалоговых окнах Параметры поля раскрывающейся формы .

7. Сохраните код и вернитесь к документу.

8. Щелкните правой кнопкой мыши первый раскрывающийся список и выберите Свойства , чтобы открыть диалоговое окно Параметры поля формы раскрывающегося списка . В диалоговом окне выберите указанное выше имя макроса (здесь Popolateddfood) из раскрывающегося списка Exit , а затем нажмите кнопку OK .

9. Теперь нажмите Разработчик > Ограничить редактирование , как показано на скриншоте ниже.

10. На панели Ограничить редактирование вам необходимо:

10.1), установите флажок Разрешить только этот тип редактирования в поле документа ;

10.2) Выберите вариант Заполнение форм из раскрывающегося списка;

10.3) Нажмите кнопку Да, начать принудительную защиту ;

10.4) В диалоговом окне Начать принудительную защиту , введите пароль и нажмите кнопку OK . См. Снимок экрана:

Теперь зависимые раскрывающиеся списки созданный. При выборе «Фрукты» в первом раскрывающемся списке во втором можно выбрать только категории фруктов.



Рекомендуемые инструменты повышения производительности Word

Kutools For Word – Более 100 расширенных функций для Word, сэкономьте 50% времени

  • Сложные и повторяющиеся операции могут быть выполнены за один раз за секунды.
  • Вставьте сразу несколько изображений из папок в документ Word.
  • Объедините и объедините несколько Файлы Word из папок в одну в желаемом порядке.
  • Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
  • Преобразование файлов между документами. и Docx, Docx и PDF, сборник инструменты для обычных преобразований и выбора и так далее …

Подробнее Загрузить сейчас Купить


0 / 0 / 0

Регистрация: 12.06.2011

Сообщений: 5

1

12.06.2011, 17:04. Показов 9749. Ответов 9


Студворк — интернет-сервис помощи студентам

Пример: выбираем значение 1 в ‘Поле со списком’, при этом в абзаце ниже видим длинный текст: ‘Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 и т.д.’

при выборе значения 2 в ‘Поле со списком’, абзац ниже выводит другой текст: ‘Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 и т.д.’

Как в зависимости от значения в ‘Поле со списком’ вывести нужный текст?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

12.06.2011, 17:04

Ответы с готовыми решениями:

Как связать «поле со списком» с полем «форматированный текста» Word
Подскажите как связать "поле со списком" с полем "форматированный текста".

к примеру из "поле…

При выборе в элем.управл. «поле со списком» значения, изменять другое поле
Идея следующая…..
Есть 3 вида договора (поставки, услуг, работ).
Если договор поставки, …

Программное изменение формы «поле со списком» в шаблоне на котором основан документ Word
Описание проблемы:

Есть шаблон Word, назовем его Карта, на его основе создаются док-ты с полями…

Приложение, содержащее поле со списком (задача «Молоко», «Кефир», «Сметана»)
Приложение, содержащее поле со списком, текстовое поле и три кнопки. Первоначально поле со списком…

9

fess

13.06.2011, 02:07

2

Код

Private Sub ComboBox1_Change()
...
End Sub

а дальше нужно подробности

0 / 0 / 0

Регистрация: 12.06.2011

Сообщений: 5

13.06.2011, 09:14

 [ТС]

3

Можно использовать в качестве ‘подробностей’ данные из приведенного выше примера?

Или речь идет о каких-то других ‘подробностях’?



0



0 / 0 / 0

Регистрация: 12.06.2011

Сообщений: 5

16.06.2011, 17:35

 [ТС]

4

RUR|USD — это поле со списком в word, состоящее из двух значений

При выборе RUR из списка, видим:

… Рублевый счет …
… Рублевое покрытие …
… Ставка 18% …

При выборе USD из поля со списком видим на тех же самых местах:

… Счет в долларах …
… Долларовое покрытие …
… Ставка 10% …

~~~~~~~~~~~~~~~~~
Кто-нибудь хочет решить данную задачку за отдельную плату?



0



1 / 1 / 0

Регистрация: 19.05.2011

Сообщений: 80

16.06.2011, 18:30

5

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



0



0 / 0 / 0

Регистрация: 12.06.2011

Сообщений: 5

16.06.2011, 18:36

 [ТС]

6

Предлагаемый Вами вариант, к сожалению, не избавляет от множественных ручных манипуляций. Хотелось бы, что бы при 1 выборе в одном месте, все остальные поля обновлялись бы автоматически — это позволило бы сократить ручные операции, минимизировать вероятность ошибок (и не плодить кучу шаблонов на каждый случай со своим текстом).



0



1 / 1 / 0

Регистрация: 19.05.2011

Сообщений: 80

16.06.2011, 19:01

7

Имелось ввиду написание макроса на событие выбора
строки из списка. Т.е. никакой ручной работы.



0



0 / 0 / 0

Регистрация: 12.06.2011

Сообщений: 5

16.06.2011, 20:04

 [ТС]

8

Хорошо.
Сделайте.
Заплачу.



0



Messir

18.06.2011, 06:18

9

Ну, по пунктам:

1. Ссоздаем список с именем ‘cboRusUsd’, а также поле типа DocVariable с переменной ‘RUS_USD_VAR’. Размещаем все это в документе как угодно…

2. Добавляем такой код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Const txtRUS As String = '... Рублевый счет ...' & vbCr & '... Рублевое покрытие ...' & vbCr & '... Ставка 18% ...'
Const txtUSD As String = '... Счет в долларах ...' & vbCr & '... Долларовое покрытие ...' & vbCr & '... Ставка 10% ...'
 
Private Sub cboRusUsd_Change()
    Dim tVar As Variable
    Set tVar = ActiveDocument.Variables('RUS_USD_VAR')
    If tVar Is Nothing Then
        Set tVar = ActiveDocument.Variables.Add('RUS_USD_VAR', '')
    End If
    Select Case cboRusUsd.Value
        Case 'RUS'
            tVar.Value = txtRUS
        Case 'USD'
            tVar.Value = txtUSD
    End Select
    ActiveDocument.Fields.Update
End Sub
 
Private Sub Document_Open()
    cboRusUsd.Clear
    cboRusUsd.AddItem 'RUS'
    cboRusUsd.AddItem 'USD'
End Sub

3. Радуемся…

З.Ы. Tested on Office 2003, в других версиях не должно особо отличаться…

1 / 1 / 1

Регистрация: 10.04.2011

Сообщений: 415

19.06.2011, 17:10

10

Мне лениво решать данную конкретную локальную задачу. Сейчас вам одно надо, потом другое — на каждый чих, как говорится, не наздравствуешься…
Между тем в ворде есть такая приятная вещь, как переменные (DocVariables), предназначенные специально для автоматизации документа. Единственно, что не предусмотрено удобного интерфейса для их добавления/ввода/изменения, что я и поправил в паре форма/модуль. Для доступа — используй вызов макроса run_form. Плюс бонус — пример использования, так сказать, — для автоматического вычисления суммы договора. Задаешь только общую сумму и % аванса, а программа сама:
1. добавляет требуемые переменные
2. вычисляет значения, в том числе переводит в пропись цифры.
3. руками один раз нужно расставить в нужных местах нужные переменные и радоваться :-)
запуск — run_sumdog.
Эти модули я лично у себя положил в normal и приклеил вызов run_form на клавишу Alt+V — очень удобно.
Пользуйтесь на здоровье :-)
Да, чуть не забыл, ссылка здесь: http://www.mfco.ru/sogl.rar



0



Элемент управления ComboBox VBA языка позволяет формировать комбинированный список. Он предоставляет возможность, как выбирать готовые значения, так и вводить собственные данные. Вообще, стоит сказать, что робота со списками требует отдельной темы по определению, так как наиболее ярким примером создания сложных и комбинированных списков является  — формирование базы данных.

Однако и тут есть один момент – большая часть возможностей языка VBA отходит на задний план. Даже продукт Microsoft Access (работа с базами данных), который в былые времена я скрупулезно изучал на уроках информатики, мне на практике ни разу не пригодился.

Поэтому, и в этой статье я не буду вникать во все премудрости компонента ComboBox.

Базовые свойства элемента управления ComboBox VBA языка:

  • ColumnCount – позволяет задать количество столбиков в списке
  • ColumnWidth – ширина столбиков
  • ColumnHeads – определяет, отображать (значение true) или не отображать (значение false) заголовки столбиков.
  • RowSource – позволяет задать диапазон для элементов списка
  • Value и Text – собственно, текущее значение, что хранится в списке.

Как и для компонента TextBox, для ComboBox главным событием является Change. Событие Change возникает при вводе данных в список.

Ладно, пора приступать к практике. Сначала мы напишем пример использования объекта языка VBA ComboBox в Excel, а потом в Word.

VBA ComboBox Excel

vba combobox excel

И так, добавьте в окно Проекта новый модуль и новую форму. Модуль назовите ComboBox, а форму – CB_Form, за имена отвечает свойство Name. В редакторе кода для модуля пропишите следующую процедуру:

Sub ComboBox()
    CB_Form.Show
End Sub

Процедура сделает форму видимой.

Теперь нужно приступить к созданию и настройке формы. Как она выглядит, вы можете просмотреть на картинке, но… для “слепого” браузера я ее опишу.

Параметры формы (UserForm): название (Caption) — работа с ComboBox в VBA, ширина – 340, высота – 190.

Параметры надписи (Label): Имя (Name) L_CB, свойство Caption оставляете пустым, ширина 324, высота 30, отступ слева и сверху равен 6.

Далее нам следует добавить четыре элемента управления vba ComboBox excel, разместите их так: по два в одну строку, имена для каждого компонента задайте такие: CB_A, CB_B, CB_C и CB_D. Я выбрал такие имена потому, что в каждом списке будет отображаться содержимое текущего листа Excel для колонок A, B, C и D.

Это важно!!! Позаботьтесь, что бы содержимое колонок A-B не было пустым и что бы количество  в них элементов не было слишком огромным, достаточно 100 записей максимум. В противном случае у вас возникнут ошибки.

Для наглядности над каждым объектом ComBox vba можете поставить надписи вида: Ячейка А, Ячейка В и так далее.

В самом низу, разместите, кнопку с именем CommandButton1 и напишите на ней “Объединить”.

Ладно, теперь в редакторе кода для форму пропишите следующие процедуры:

Private Sub CommandButton1_Click()
L_CB.Caption = CB_A.Value & " " & _
CB_B.Value & " " & _
CB_C.Value & " " & _
CB_D.Value
End Sub
 
Private Sub UserForm_Initialize()
Dim oColumn As Range
Dim oCell As Range
 
'Заполняем первый список
Set oColumn = Columns("A")
For Each oCell In oColumn.Cells
If oCell.Value <> "" Then
CB_A.AddItem oCell.Value
End If
Next
CB_A.ListIndex = 0
 
'Заполняем второй список
Set oColumn = Columns("B")
For Each oCell In oColumn.Cells
If oCell.Value <> "" Then
CB_B.AddItem oCell.Value
End If
Next
CB_B.ListIndex = 0
 
'Заполняем третий список
Set oColumn = Columns("C")
For Each oCell In oColumn.Cells
If oCell.Value <> "" Then
CB_C.AddItem oCell.Value
End If
Next
CB_C.ListIndex = 0
 
'Заполняем четвертый список
Set oColumn = Columns("D")
For Each oCell In oColumn.Cells
If oCell.Value <> "" Then
CB_D.AddItem oCell.Value
End If
Next
CB_D.ListIndex = 0
 
End Sub

Процедура CommandButton1_Click – тут происходит обработка клика по кнопке. После клика, произойдет считывание выбранных данных для каждого объекта ComboBox vba excel, далее, все четыре значения объединяются и записываются в содержимое свойства Caption объекта Надпись.

Процедура UserForm_Initialize – тут происходит заполнение списков содержимым колонок сразу после инициализации формы. Происходит выбор заданной колонки листа Excel, потом циклично идет перебор всех ее значений и их добавление (метод AddItem) в выбранный список.

VBA ComboBox Word

combobox word vba

Тут мы создадим список, состоящий из трех колонок, как он выглядит, можно посмотреть на рисунке. Не буду вникать во все премудрости, а сразу покажу код:

Private Sub UserForm_Initialize()
 
With ComboBox1
.ColumnCount = 3
.ColumnWidths = "50;50;50"
.ColumnHeads = False
.RowSource = ""
End With
 
ComboBox1.AddItem "Украина"
ComboBox1.List(0, 1) = "Киев"
ComboBox1.List(0, 2) = "Украинский"
 
ComboBox1.AddItem "Россия"
ComboBox1.Column(1, 1) = "Москва"
ComboBox1.Column(2, 1) = "руский"
 
ComboBox1.AddItem "Белоруссия"
ComboBox1.List(2, 1) = "Минск"
ComboBox1.List(2, 2) = "русский"
 
ComboBox1.ListIndex = 0
 
End Sub

Как видим, при инициализации мы сначала заполняем свойства объекта ComboBox1 в блоке with … wend: три колонки, равной длины, заголовки отсутствуют. Далее происходит ручное заполнение списка. Как видим, элемент первой колонки добавляется с помощью метода AddItem, остальные колонки заполняются как массивы с помощью метода List.

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

DropDown.ListEntries property (Word)

vbawd10.chm153419779

vbawd10.chm153419779

word

Word.DropDown.ListEntries

87235132-0ff6-e8d7-1efc-1df4a9816b2f

06/08/2017

medium

DropDown.ListEntries property (Word)

Returns a ListEntries collection that represents all the items in a DropDown object.

Syntax

expression. ListEntries

expression An expression that returns a ‘DropDown’ object.

Remarks

For information about returning a single member of a collection, see Returning an object from a collection.

Example

This example retrieves the text of the active item from the drop-down form field named «DropDown1.»

Set myField = ActiveDocument.FormFields("DropDown1").DropDown 
num = myField.Value 
myName = myField.ListEntries(num).Name

This example retrieves the total number of items in the active drop-down form field (the document should be protected for forms). If there are two or more items, this example sets the second item as the active item.

Set myField = Selection.FormFields(1) 
If myfield.Type = wdFieldFormDropDown Then 
 num = myField.DropDown.ListEntries.Count 
 If num >= 2 Then myField.DropDown.Value = 2 
End If

See also

DropDown Object

[!includeSupport and feedback]

ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

1 11.03.2012 08:41:12

  • Geniy_dzydo
  • рядовой
  • Неактивен
  • Зарегистрирован: 11.03.2012
  • Сообщений: 7

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

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

2 Ответ от aap77 01.04.2012 14:24:28

  • aap77
  • генерал-полковник
  • Неактивен
  • Зарегистрирован: 12.09.2011
  • Сообщений: 925
  • Поблагодарили: 243
  • За сообщение: 4

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 Кб, 153 скачиваний с 2012-04-01 

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

3 Ответ от Brain86 16.05.2012 14:31:21

  • Brain86
  • рядовой
  • Неактивен
  • Зарегистрирован: 15.05.2012
  • Сообщений: 1

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

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

4 Ответ от mikkelle 13.09.2016 12:43:58

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12
  • За сообщение: 1

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

Brain86 пишет:

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

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

5 Ответ от azur 12.06.2021 09:58:56

  • azur
  • сержант
  • Неактивен
  • Зарегистрирован: 06.08.2011
  • Сообщений: 27

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

aap77 пишет:

9. Файл примера прилагаю.

Здравствуйте!
Подскажите… Скачал файл примера: всё прекрасно работает! Респект.
Но… Сохраняю новый документ на основании этого шаблона. Открываю его. Предупреждение безопасности — разрешаю. Визуально ничего не изменилось, но в выпадающем списке остался только тот отдел, который был выбран в шаблоне на момент сохранения. А при клике по стрелке выпадает одна пустая строка, а не список…(
Подскажите, пожалуйста, почему список перестал работать?
Файл в прицепе.

Post’s attachments

Отдел.docx 22.19 Кб, файл не был скачан. 

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

Понравилась статья? Поделить с друзьями:
  • Vba word print from to
  • Vba word выделить ячейку таблицы
  • Vba word paste table
  • Vba word выделить текст в ячейке
  • Vba word paragraphformat alignment