【问题标题】:Change Word table cell background color based upon cell contents.根据单元格内容更改 Word 表格单元格背景颜色。
【发布时间】:2018-07-07 07:08:05
【问题描述】:

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

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

【问题讨论】:

  • 请花点时间阅读有关在 Stack Overflow 上提问的网站指南。这既不是免费的代码编写服务,也不是教程网站——您应该尽可能多地进行研究和编写代码,然后提出一个有针对性的问题。您可以尝试使用宏记录器来获取至少部分代码。

标签: vba ms-word


【解决方案1】:

假设您使用的是表单字段(您不能对 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

在“ThisDocument”代码模块中。演示见:http://www.msofficeforums.com/word-vba/16505-change-color-according-dropdown-selection.html#post47254

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-23
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2011-04-03
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多