На самом деле в Word VBA есть событие WindowSelectionChange, которое вы можете использовать. Он описан в файле справки Word VBA в разделе «Использование событий с объектом приложения».
Хитрость заключается в том, чтобы назначить ваше приложение переменной в модуле класса (я назвал мой EventClassModule), используя ключевое слово WithEvents:
Public WithEvents App As Word.Application
Затем в обычном событии Document Open вы можете инициализировать переменную для текущего приложения:
Dim oEvents As New EventClassModule
Private Sub Document_Open()
Set oEvents.App = Word.Application
End Sub
Вернувшись в EventClassModule, вы используете событие WindowSelectionChange, чтобы проверить, является ли выбор таблицей:
Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
If Sel.Information(wdWithInTable) And ThisDocument.ProtectionType = wdNoProtection Then
ThisDocument.Protect wdAllowOnlyFormFields
ElseIf ThisDocument.ProtectionType <> wdNoProtection Then
ThisDocument.Unprotect
End If
End Sub
Этот код будет вызываться всякий раз, когда курсор меняет местоположение. Я протестировал его, и он немного привередливый (по какой-то причине объект oEvents имеет тенденцию становиться неинициализированным), но, надеюсь, это станет началом вашего решения.