根据单元格内容更改Word表单元格背景颜色。

时间:2018-07-07 07:08:05

标签: vba ms-word word-vba

我是一名志愿者,同意在Word 2013中设计一个用户保护的FILLIN表单。我正在使用Word表记录用户输入。我需要VBA(?)根据单元格内容更改单元格背景色。如果单元格中的文本为“高”,则单元格颜色应为红色。如果单元格内容为“中等”,则单元格颜色应为黄色。如果单元格内容为“低”,则单元格颜色应为绿色。我不知道VBA。我喜欢Excel的条件格式,但必须使用Word。

我在您的站点上寻找了答案,但是我发现的示例似乎是Javascript。我今年66岁,根本不是程序员(不幸的是)。 感谢您的帮助-也许可以为我介绍一个很好的在线VBA课程:)

1 个答案:

答案 0 :(得分:0)

假设您使用的是表单字段(不能对FILLIN字段使用保护),则可以使用如下代码:

Option Explicit
Dim i As Long

Sub Index()
  i = Replace(Selection.FormFields(1).Range.Bookmarks(1).Name, "DropDown", "")
End Sub

Sub ColorDropDown()
Dim sText As String, oFld As FormField
With ActiveDocument
  Set oFld = .FormFields("Dropdown" & i)
  sText = oFld.Result
  If .ProtectionType <> wdNoProtection Then .Unprotect Password:=""
  With oFld.Range
    Select Case sText
      Case Is = "G" 'green
        .Shading.BackgroundPatternColor = wdColorBrightGreen
      Case Is = "Y" 'yellow
        .Shading.BackgroundPatternColor = wdColorYellow
      Case Is = "R"  'red
        .Shading.BackgroundPatternColor = wdColorRed
    End Select
  End With
  .Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=""
End With
End Sub

,每个下拉菜单将Index宏称为“ on-entry”属性,将ColorDropDown宏称为“ on-exit”属性。如果文档中的第一个表单字段是下拉菜单,则还需要:

Private Sub Document_Open()
ActiveDocument.Bookmarks("DropDown1").Range.Select
Call Index
End Sub
代码模块中的

。有关演示,请参见:http://www.msofficeforums.com/word-vba/16505-change-color-according-dropdown-selection.html#post47254