2016-10-11 26 views
0

У меня есть набор из 6 таблиц в документе Word, защищенном паролем. Каждая таблица имеет строку заголовка, за которой следует как минимум одна строка данных. 6-й столбец второй (и последующих) строк имеет в нем раскрывающееся поле формы. Над каждой таблицей есть кнопка, которая позволяет пользователю добавить строку в таблицу. Когда они это делают, 6-я колонка содержит другое раскрывающееся меню.Word VBA Переименование раскрывающихся полей формы?

После того, как пользователь выберет значение в раскрывающемся списке и покинет поле, мне нужно покрасить эту ячейку на основе выбранного значения. Я могу установить значение OnExit для запуска макроса, который я называю «HighlightStatus». Чтобы получить ссылку на ячейку для изменения, я использую

Dim ff As Word.FormField 
ThisDocument.Unprotect strSheetPassword 
Set ff = ThisDocument.FormFields(Selection.Bookmarks(1).Name) 

Как ссылаться на ячейку, которая содержит это поле формы?

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

Я принял еще один подход, который в основном проходит в одну и ту же стену. После обновления поля у меня был цикл кода через все таблицы и все строки и обновлен шестой столбец каждой строки. Проблема в том, что экран прокручивается до конца документа. Чтобы вернуться туда, где я был, мне все равно нужно однозначно ссылаться на правильное поле формы, которое я не могу сделать, если поле не имеет уникального имени.

ответ

0

Найдено. Я довольно долго гонялся за своим хвостом, но я обнаружил, что это работает.

ThisDocument.Unprotect strSheetPassword 
Selection.Shading.BackgroundPatternColor = wdColorLightGreen 
ThisDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=strSheetPassword