Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 12 ]
- Зарегистрирован: 30.01.2011
- Сообщений: 3
Тема: Взаимодействие с полем со списком
Word 2003
В форме имеется таблица перечня услуг в 2 столбца.В неё вставлены "поля со списками" и необходимо чтобы после выбора пользователем одного из значений и выхода из поля автоматически менялась другая ячейка - подставляя соответствующее значение.
То есть имея список(лыжи,коньки,санки) после выбора пользователя в соседней графе появлялась соответствующая цена (10,20,30).Заменить на текстовое поле увы не нельзя так как нужна точность в описании услуги.Подскажите как в макросе получать значения из подобных элементов управления?
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Взаимодействие с полем со списком
Какое поле со списком имеется ввиду? Элемент управления формы или элемент ActiveX?
Лучше день потерять — потом за пять минут долететь!
- Зарегистрирован: 30.01.2011
- Сообщений: 3
Re: Взаимодействие с полем со списком
элемент управления формы наверное-)аналог текстового поля только с заранее определёнными вариантами.Вызываются из вкладки формы Word 2003.
Элементами ActiveX я не умею пользоваться.
прикрепила скрин
Отредактировано Инна (31.01.2011 21:28:20)
Post's attachments1.jpg
1.jpg 50.31 Кб, 1 скачиваний с 2011-01-31
You don't have the permssions to download the attachments of this post.
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
- За сообщение: 1
Re: Взаимодействие с полем со списком
Ну что ж, примерно так это делается:
Sub OnListQuit()
Dim ff As FormField
Dim pt As Integer
Dim index As Long
'Проверяем существование закладки
If ActiveDocument.Bookmarks.Exists("ПолеСоСписком1") Then
'Запоминаем поле в закладке
Set ff = ActiveDocument.Bookmarks("ПолеСоСписком1").Range.FormFields(1)
'Если поле является выпадающим списком
If ff.Type = wdFieldFormDropDown Then
'Если документ защищён
If ActiveDocument.ProtectionType <> wdNoProtection Then
pt = ActiveDocument.ProtectionType 'Запоминаем тип защиты
ActiveDocument.Unprotect Password:="" 'Снимаем защиту. Если нужно указываем пароль
index = ff.DropDown.Value
ff.Range.Cells(1).Next.Range.Text = ff.DropDown.Value & " (" & _
ff.DropDown.ListEntries(index).Name & ")" 'записываем значение элемента списка в соседнюю ячейку
ActiveDocument.Protect pt, Password:="" 'Восстанавливаем защиту
ff.DropDown.Value = index 'Восстанавливаем выбранный элемент списка, т.к. он сбрасывается после восстановления защиты
End If
End If
End If
End Sub
В свойствах поля нужно указать макрос, который должен выполняться при выходе из поля. В защищённом документе выйти из поля можно клавишей TAB или щёлкнув мышкой в другом поле.
Post's attachmentsПример получения значения списка.docm 21.15 Кб, 36 скачиваний с 2011-02-01
You don't have the permssions to download the attachments of this post.
Лучше день потерять — потом за пять минут долететь!
- Зарегистрирован: 30.01.2011
- Сообщений: 3
Re: Взаимодействие с полем со списком
Спасибо за помощь со списками всё отлично кроме маленькой неувязки -пришлось удалить код включающий\отключающий защиту формы.Так как различных полей в этой форме много и запоминать и восстанавливать все значения трудоёмко.
Если можно поясните - в Word 2003 макрос со следующим куском кода:
ActiveDocument.Bookmarks("eee").Select
Selection.TypeText sSumm
прекрасно работает ,а вот Word 2007 макрос вылетает с ошибкой(форма одна и таже)
.В новом Word изменился синтаксис VBA? и как правильно в новом?
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Взаимодействие с полем со списком
Вы хотите поменять текст закладки? Но методом, который вы предлагаете, вы уничтожите закладку. Наверное, поэтому и вылетает с ошибкой.
Изменять закладку нужно так.
Лучше день потерять — потом за пять минут долететь!
- Totalist
- сержант
- Неактивен
- Зарегистрирован: 18.05.2010
- Сообщений: 13
Re: Взаимодействие с полем со списком
Подскажите, пожалуйста, почему в Word 2003 поля со списком (элементы ActiveX) обновляются медленно - через 1-2 минуты?
Имеются 2 поля со списком и текстовое поле, связанные на обновление друг дружки, т.е. первое поле со списком задает отображение данных во втором поле, а второе задает отображение данных в текстовом поле.
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Взаимодействие с полем со списком
Нужно смотреть код, который обновляет. Скорее всего обновление не срабатывает при некоторых условиях, а вы приписываете это времени
Лучше день потерять — потом за пять минут долететь!
- Totalist
- сержант
- Неактивен
- Зарегистрирован: 18.05.2010
- Сообщений: 13
Re: Взаимодействие с полем со списком
Спасибо, viter.alex. Вы были правы - ошибка была в условиях выполнения.
Возникла другая проблема:
данные поля находятся в таблице.
таблицу задействовал как автотекст.
так вот при вставке автотекста в полях со списком ничего не выбирается.
как сделать так, чтобы выбирались данные?
или как по другому реализовать выбор данных через автотекст?
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Взаимодействие с полем со списком
Totalist, к сожалению совсем так как ты хочешь не получится, т.к. нельзя отследить вставку автотекста и соответственно заполнить списки. Но можно сделать это отдельным макросом, который будет вставлять определённый автотекст и заполнять списки.
Лучше день потерять — потом за пять минут долететь!
- Totalist
- сержант
- Неактивен
- Зарегистрирован: 18.05.2010
- Сообщений: 13
Re: Взаимодействие с полем со списком
viter.alex, подскажите пожалуйста, как будет выглядеть примерный код такого макроса
- Totalist
- сержант
- Неактивен
- Зарегистрирован: 18.05.2010
- Сообщений: 13
Re: Взаимодействие с полем со списком
Все еще нуждаюсь в решении своей задачки...
Сообщений [ 12 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Взаимодействие с полем со списком
Чем мощнее и грандиознее та или иная программа, тем сложнее с ней разобраться. Взять Microsoft Word. На первый взгляд все просто, на второй тоже, на третий, вообще думать не надо, а на четвертый оказывается, что в редакторе уйма скрытых возможностей, о которых мы и не подозревали. На портале о Microsoft Office Word вы узнаете про: перевод из word в pdf.
Вы убиваете целый вечер на работу, а коллега сделал ее за час-другой? Как ему это удалось? А легко: он оптимизировал и настроил свой Word. На портале о Microsoft Office Word вы узнаете про: какие бывают способы вставки таблицы и документа microsoft word.
На сайте и форуме Ворд Эксперт очень много решений, как это сделать. Можно написать макрос для каждой операции, выбрать оптимальную настройку приложения или создать шаблон. Наш сайт о Microsoft Office Word даст ответ про: концевая ссылка.
Обсудить достоинства и недостатки их, различные методы работы с текстом, преимущества и изъяны версий вы можете на форуме. На портале о Microsoft Office Word вы узнаете про: вставка ссылки на файл в текте word.
Если вы никогда раньше не писали макросы, то не беда, все предельно ясно и доступно, а для пытливого ума ссылка на дополнительную литературу. На портале о Microsoft Office Word вы узнаете про: верхний колонтитул раздел 1 что это.
Конечно, можно взять чье-то готовое решение, такие тоже выкладывают на Ворд Эксперт в специальном подразделе, а можно просто озвучить проблему и попросить помощи у умельцев в разделе заявок. На портале о Microsoft Office Word вы узнаете про: как в world вставить спецсимвол.
В общем, у вас есть возможность, посетив форум, сделать свой Ворд еще более легким, приятным и быстрым. Наш сайт о Microsoft Office Word даст ответ про: как в ворде на виндоус 7 перевернуть картинку.
Не упускайте ее!