Причина, по которой вы видите описанное поведение
Вместо того, чтобы срабатывать при входе в элемент управления 'Endate', он срабатывает при входе во все элементы управления
из-зарешение Microsoft о разработке элементов управления содержанием, содержащихся в документе.Для каждого типа событий существует отдельное событие, которое будет активировано всеми элементами управления контентом.Это означает, что если код относится к одному или нескольким элементам управления содержимым, необходимо оценить элемент управления содержимым, запускающий событие, и разветвить код, как требуется.
Обратите внимание, что подпись события передает аргумент ByVal ContentControl As ContentControl
.Это элемент управления контентом, который запускает событие.Поэтому присвоение этому аргументу имени конкретного элемента управления контентом не является оптимальным подходом - это может быть любой элемент управления контентом.
Я изменил первую часть кода, чтобы проиллюстрировать, как его можно структурировать для проверки того, какойуправление контентом вызвало событие:
Private Sub Document_ContentControlOnEnter(ByVal cc As ContentControl)
'Declare variable names to deal with the content control data
Dim SD As ContentControl
Dim TC As ContentControl
Dim TC1 As ContentControl
Dim ED As ContentControl
Dim NewDate
If cc.Tag = "EndDate" Then
'Connect each variable name to its content control
Set TC = ActiveDocument.SelectContentControlsByTag("Training").Item(1)
Set SD = ActiveDocument.SelectContentControlsByTag("Stardate").Item(1)
Set ED = cc
'Do other things, here
End If
End Sub