vba - 根据下拉值选择更改内容控件属性文本样式
问题描述
目前我有一个宏可以.BackgroundPatternColor
根据选择的下拉列表内容控件值进行更改。它适用于整个表格单元格。
下面的代码 + 屏幕截图它的外观。
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
With ContentControl.Range
If ContentControl.Title = "Status" Then
Select Case .Text
Case "RED"
.Cells(1).Shading.BackgroundPatternColor = RGB(227, 36, 27)
.Cells(1).Range.Font.TextColor = wdColorWhite
Case "AMBER"
.Cells(1).Shading.BackgroundPatternColor = RGB(251, 171, 24)
.Cells(1).Range.Font.TextColor = wdColorBlack
Case "GREEN"
.Cells(1).Shading.BackgroundPatternColor = RGB(110, 190, 74)
.Cells(1).Range.Font.TextColor = wdColorWhite
Case Else
.Cells(1).Shading.BackgroundPatternColor = wdColorAutomatic
End Select
End If
End With
End Sub
由于您无法通过 VBA 更改 MS Word 中的文本突出显示颜色,我发现我可以通过更改属性中内容控件的样式格式来获得所需的外观。
属性 -> +NewStyle -> 格式 -> 边框...
只有这样我才能使用自定义颜色获得所需的“突出显示文本”外观,而不是更改表格单元格的整个背景。
我想要的是这样的:
我为每种选择类型创建了单独的样式。
但是,我不知道如何根据 MS Word 中的当前下拉值选择来更改内容控件属性文本样式。
请帮忙。谢谢
解决方案
也许:
Private Sub Document_ContentControlOnExit(ByVal CCtrl As ContentControl, Cancel As Boolean)
With CCtrl
If .Title = "Status" Then
With .Range
Select Case .Text
Case "RED"
.Shading.BackgroundPatternColorIndex = wdRed
.Font.ColorIndex = wdWhite
Case "AMBER"
.Shading.BackgroundPatternColorIndex = wdDarkYellow
.Font.ColorIndex = wdColorBlack
Case "GREEN"
.Shading.BackgroundPatternColorIndex = wdBrightGreen
.Font.ColorIndex = wdWhite
Case Else
.Shading.BackgroundPatternColorIndex = wdAuto
End Select
End With
End If
End With
End Sub
推荐阅读
- python - tar 期间的 paramiko 环境变量
- angularjs - 将图像源转换为文件并将文件附加到rest api中
- javascript - 使通知链接可点击并根据链接在浏览器或 youtube 中打开
- angular - 从 JSON 渲染缩小的 HTML 文本并将模型值绑定到 Angular 5 中的 HTML
- spring-integration - Spring Integration:在每个处理的文件之后始终保持顺序
- windows - 批处理文件似乎没有运行并立即关闭
- c# - 将 LINQ 查询与方法语法相结合
- python - 从动态框架中透视/分组数据
- pandas - 将 Pandas GroupBy 转换为 DataFrame
- android - 活动识别客户端电池消耗