我有一个模板文档,其中包含几个部分和几个表.问题是,我正在尝试在表格中的单元格中插入一个下拉列表.要使下拉列表起作用,需要保护文档.但是,如果我保护表格所在的整个部分,则整个表格都受到保护.
所以,我想知道是否有一种方法可以执行宏代码,如果用户点击下拉列表?然后代码将保护文档,使控件实际工作,然后选择一个选项,当用户在字段外单击时,文档应该不受保护.
这可能吗?
小智 5
您可以使用Word VBA中的WindowSelectionChange事件.它在"使用带有应用程序对象的事件"下的Word VBA帮助文件中进行了描述.
诀窍是使用WithEvents关键字将应用程序分配给类模块中的变量(我将其命名为我的EventClassModule):
Public WithEvents App As Word.Application
Run Code Online (Sandbox Code Playgroud)
然后在普通的Document Open事件中,您可以将变量初始化为当前的Application:
Dim oEvents As New EventClassModule
Private Sub Document_Open()
Set oEvents.App = Word.Application
End Sub
Run Code Online (Sandbox Code Playgroud)
回到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
Run Code Online (Sandbox Code Playgroud)
只要光标改变位置,就会调用此代码.我测试了它并且它有点挑剔(oEvents对象由于某种原因倾向于未初始化),但希望这将是您的解决方案的开始.
| 归档时间: |
|
| 查看次数: |
4009 次 |
| 最近记录: |