2015-05-20 2 views
0

У меня есть форма Word, над которой я работаю.Обновление поля формы Word

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

На предыдущей итерации вы можете щелкнуть ячейку в таблице и нажать F9, и поле будет обновляться.

С тех пор я добавил несколько других кнопок и VBA, и теперь вы больше не можете щелкнуть по ячейке, когда включена функция «Ограничить редактирование».

Я пробовал кнопку, привязанную к VBA, которая обновит все поля, но когда вы нажмете эту кнопку, вы не сможете редактировать ни одно из полей.

Как я могу обновить это поле и все еще иметь возможность вручную обновлять мои другие поля?

ответ

0

Проблема заключалась в том, что элементы управления содержимым и ActiveX не совсем совместимы. Кроме того, программист, унаследованный от формы, использовал простой расчет поля, основанный на таблице в документе вместо VBA. Я смог придумать лучшее решение. Я использовал sub:

Private Sub Document_ContentControlOnExit(ByVal thisControl As ContentControl, Cancel As Boolean)  
End Sub 

для выполнения кода onExit с элементов управления. Эта функция выполняется во всех элементах управления содержимым, когда пользователь выходит из Content Control. Другим инструментом, который я разработал, была следующая функция, которая найдет индекс элемента управления с данным заголовком:

'Function to get control index given the control title 
'PARAMETER Control Title as String 
'RETURN Control Index as Integer 
Public Function GetControlIndex(ccTitle As String) As Integer 
    'Function Variable Declaration 
    Dim objCC As ContentControl 

    'look at each ContentControl 
    For i = 1 To ActiveDocument.ContentControls.count 
     Set objCC = ActiveDocument.ContentControls.Item(i) 
     With objCC 
      If .Title = ccTitle Then 
       GetControlIndex = i 
      End If 
     End With 
    Next i 
End Function 
Смежные вопросы