Word 365:如何根据表格相邻列下拉选项设置文本格式、底纹与删除线
在Word 365中实现带动态格式的下拉列表表格
第一步:创建基础表格并添加下拉列表控件
- 打开Word 365,插入对应行数的表格(先插2行2列,后续可按需增减)
- 点击菜单栏文件→选项→自定义功能区,勾选右侧的「开发工具」,点击确定调出开发工具选项卡
- 选中表格第2列的所有单元格,切换到开发工具选项卡,点击「控件」组里的「下拉内容控件」(带小箭头的图标)
- 保持第2列控件选中状态,点击开发工具里的「控件」组→「属性」,在弹出的属性窗口里:
- 取消勾选「允许删除内容」
- 在「下拉列表属性」里点击「添加」,依次输入选项:
Mandatory、Optional、NotApplicable,每个选项添加后点确定,最后关闭属性窗口
第二步:添加VBA代码实现格式自动切换
- 按下
Alt + F11打开VBA编辑器 - 在左侧「工程」窗口找到你的文档(比如当前文档下的
ThisDocument),双击打开代码窗口 - 粘贴以下代码:
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean) Dim tblRow As Row Dim targetCell As Cell ' 仅处理第2列的下拉控件 If ContentControl.Type = wdContentControlDropdownList And ContentControl.Range.Information(wdEndOfRangeColumnNumber) = 2 Then Set tblRow = ContentControl.Range.Rows(1) Set targetCell = tblRow.Cells(1) ' 清除原有格式 targetCell.Range.Font.Bold = False targetCell.Range.Font.Italic = False targetCell.Range.Font.DoubleStrikeThrough = False targetCell.Shading.BackgroundPatternColorIndex = wdAuto ' 根据选项设置对应格式 Select Case ContentControl.Range.Text Case "Mandatory" targetCell.Range.Font.Color = RGB(255, 0, 0) ' 红色 targetCell.Range.Font.Bold = True Case "Optional" targetCell.Range.Font.Color = RGB(0, 0, 0) ' 黑色 targetCell.Range.Font.Italic = True Case "NotApplicable" targetCell.Range.Font.DoubleStrikeThrough = True targetCell.Shading.BackgroundPatternColorIndex = wdGray25 ' 浅灰色底纹 End Select End If End Sub
- 关闭VBA编辑器,回到Word文档
第三步:保存并测试效果
- 点击文件→另存为,选择保存类型为「Word 启用宏的文档 (*.docm)」,带VBA的文档必须用这个格式才能运行代码
- 现在点击第2列的下拉列表选择选项,同行第1列的文本会自动切换格式:
- 选
Mandatory:列1文本变为红色粗体 - 选
Optional:列1文本变为黑色斜体 - 选
NotApplicable:列1文本添加双删除线+浅灰色底纹
- 选
注意事项
- 后续新增行时,只要给新行第2列添加相同的下拉内容控件,代码会自动识别生效
- 打开文档时若出现「宏已被禁用」提示,点击「启用内容」即可让代码正常运行
内容的提问来源于stack exchange,提问作者Musher Henk
相关产品推荐
相关产品推荐

