Word VBA переименовывает поля раскрывающейся формы?

#excel #vba #form-fields

#excel #vba #поля формы

Вопрос:

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

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

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

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

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

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

Ответ №1:

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

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