Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 12 ]
- sashko1980
- рядовой
- Неактивен
- Зарегистрирован: 15.04.2011
- Сообщений: 5
Тема: синхронизация пунктов двух раскрывающихся списков
Подскажите код макроса, чтобы сделать следующее:
В документе Word 2007 есть элемент управления содержимым называемый "Исполнитель" в виде раскрывающегося списка вида "Иванов, Петров, Сидоров". Далее в документе есть другой элемент управления содержимым "Код исполнителя" (тоже в виде раскрывающегося списка), где каждой указанной выше фамилии соответствует числовой код, типа "1001, 1002, 1003".
Как сделать, чтобы при выборе фамилии в одном элементе, в другом элементе управления содержимым автоматически подставлялся нужный числовой код?
Файл с примерами списков прилагается. Заранее спасибо.
Post's attachmentsexample_forum.docx 17.38 Кб, 52 скачиваний с 2011-04-25
You don't have the permssions to download the attachments of this post.
- sashko1980
- рядовой
- Неактивен
- Зарегистрирован: 15.04.2011
- Сообщений: 5
Re: синхронизация пунктов двух раскрывающихся списков
вот какой код для решения подсказали (может пригодится кому-то):
макрос
Sub SyncContentControlByValue(Src As ContentControl, Dest As ContentControl)
Dim SrcT As String
Dim SrcV As String
Dim ccLE As ContentControlListEntry
SrcT = Src.Range.Text
For i = 1 To Src.DropdownListEntries.Count
If SrcT = Src.DropdownListEntries.Item(i).Text Then
SrcV = Src.DropdownListEntries.Item(i).Value
For k = 1 To Dest.DropdownListEntries.Count
If Dest.DropdownListEntries.Item(k).Value = SrcV Then
Dest.DropdownListEntries.Item(k).Select
Exit Sub
End If
Next
' Если не найден выбираем первый
Dest.DropdownListEntries.Item(1).Select
End If
Next
End Sub
процедура его запускающая по выходу из "Исполнителя"
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim ccI As ContentControl
Dim ccK As ContentControl
Set ccI = ActiveDocument.SelectContentControlsByTag("исполнитель").Item(1)
Set ccK = ActiveDocument.SelectContentControlsByTag("код исполнителя").Item(1)
Select Case ContentControl.Tag
Case "исполнитель":
SyncContentControlByValue ccI, ccK
Case "код исполнителя":
SyncContentControlByValue ccK, ccI
End Select
End Sub
- individo
- рядовой
- Неактивен
- Зарегистрирован: 26.07.2012
- Сообщений: 5
Re: синхронизация пунктов двух раскрывающихся списков
код работает для двух списков, может кто его модифицировать для 3 и более списков?
- individo
- рядовой
- Неактивен
- Зарегистрирован: 26.07.2012
- Сообщений: 5
Re: синхронизация пунктов двух раскрывающихся списков
опять возникла такая потребность, например при выборе из выпадающего списка третьей строки, в остальных выпадающих списках автоматически выбиралась тоже третья строка.
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: синхронизация пунктов двух раскрывающихся списков
Для любого количества списков.
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim ccI As ContentControl 'переменная цикла перебора элементов управления
Dim ccS As ContentControl 'Генератор события
Dim sControlText As String 'Текст, выбранный в генераторе события
Dim i As Integer
Set ccS = ContentControl
sControlText = ccS.Range.Text
For Each ccI In ActiveDocument.ContentControls
If ccI.Type = wdContentControlDropdownList Then 'Отсеиваем не списки
If ccI.ID <> ContentControl.ID Then 'Отсеиваем генератор события
'Цикл ищет индекс выбранного элемента списка
For i = 1 To ccS.DropdownListEntries.Count
If sControlText = ccS.DropdownListEntries.Item(i).Text Then
'Выбираем соответсвующий пункт в других списках
ccI.DropdownListEntries.Item(i).Select
End If
Next
End If
End If
Next
End Sub
Лучше день потерять — потом за пять минут долететь!
- individo
- рядовой
- Неактивен
- Зарегистрирован: 26.07.2012
- Сообщений: 5
Re: синхронизация пунктов двух раскрывающихся списков
это добавить в процедуры? а макрос из поста №2?
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: синхронизация пунктов двух раскрывающихся списков
Это процедура, срабатывающая при выходе из контрола. Макросы из второго поста можно убрать, моя процедура их полностью заменяет
Лучше день потерять — потом за пять минут долететь!
- individo
- рядовой
- Неактивен
- Зарегистрирован: 26.07.2012
- Сообщений: 5
Re: синхронизация пунктов двух раскрывающихся списков
может у меня в документе что-то не так, но не работает как надо - При выборе например третьего значения в первом списке, автоматически выбираются третьи значения в остальных списках
Post's attachmentstest.docm 31.64 Кб, 29 скачиваний с 2012-11-15
You don't have the permssions to download the attachments of this post.
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
- За сообщение: 1
Re: синхронизация пунктов двух раскрывающихся списков
А надо было что?
Лучше день потерять — потом за пять минут долететь!
- individo
- рядовой
- Неактивен
- Зарегистрирован: 26.07.2012
- Сообщений: 5
Re: синхронизация пунктов двух раскрывающихся списков
Всё, разобрался. Немного модифицировал, что бы не только в "Поле со списком" а и в "раскрывающийся список" менял значения.
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim ccI As ContentControl 'переменная цикла перебора элементов управления
Dim ccS As ContentControl 'Генератор события
Dim sControlText As String 'Текст, выбранный в генераторе события
Dim i As Integer
Set ccS = ContentControl
sControlText = ccS.Range.Text
For Each ccI In ActiveDocument.ContentControls
'If ccI.Type = wdContentControlDropdownList Then 'Отсеиваем не списки
If ccI.ID <> ContentControl.ID Then 'Отсеиваем генератор события
'Цикл ищет индекс выбранного элемента списка
For i = 1 To ccS.DropdownListEntries.Count
If sControlText = ccS.DropdownListEntries.Item(i).Text Then
'Выбираем соответсвующий пункт в других списках
ccI.DropdownListEntries.Item(i).Select
End If
Next
End If
'End If
Next
End Sub
- Зарегистрирован: 12.01.2018
- Сообщений: 1
Re: синхронизация пунктов двух раскрывающихся списков
Смотрел смотрел, но так и не понял как запустить вышеуказанный макрос. Наверное руки не от туда растут.
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: синхронизация пунктов двух раскрывающихся списков
Puhh, о том, как запустить макрос, смотрите, например, здесь:
http://wordexpert.ru/forum/viewtopic.php?id=1342
Если будут вопросы, пишите их в указанной выше ветке.
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.
Сообщений [ 12 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
синхронизация пунктов двух раскрывающихся списков
При поиске информации по вопросам работы в редакторе текстов Microsoft Word в сети можно легко найти самые разные советы, книги и статьи. Наш сайт о Microsoft Office Word даст ответ про: как с пдф сделать форд.
Но проблема в том, что вся нужная информация разбросана по сети беспорядочно. Ответ на один вопрос вы находите в одном месте, на следующий – через полчаса в другом… Отныне в этом нет необходимости! Наш сайт о Microsoft Office Word даст ответ про: антоним слова выкошен.
Предлагаем вашему вниманию форум Ворд Эксперт. Это специализированный русскоязычный ресурс, на котором не только воедино собрана вся имеющаяся информация по Microsoft Word, но и налажена обратная связь с пользователями. На портале о Microsoft Office Word вы узнаете про: двухсторонняя печать в word 2003.
Вы можете задать любой вопрос по работе в редакторе, обсудить имеющиеся проблемы.
На форуме есть и уже готовые ответы на часто возникающие вопросы, и поэтапные схемы решения самых распространенных проблем, и обсуждения работы с текстами и настраивания редактора. Наш сайт о Microsoft Office Word даст ответ про: правильно растянуть текст в ворде.
Помимо этого, вас могут научить, как оптимизировать работу Microsoft Word, разрабатывая различные макросы. Наш сайт о Microsoft Office Word даст ответ про: антоним к слову physically.
Работу над макросом могут выполнить за вас форумчане, если вы оставите заявку.
На форуме Ворд Эксперт вы найдете ответы на свои вопросы и своевременную квалифицированную помощь, научитесь писать макросы или оставите заказ на их разработку, в общем, сможете найти решение всех проблем. На портале о Microsoft Office Word вы узнаете про: альбомное расположение листа.