我是一名志愿者,同意在Word 2013中设计一个用户保护的FILLIN表单。我正在使用Word表记录用户输入。我需要VBA(?)根据单元格内容更改单元格背景色。如果单元格中的文本为“高”,则单元格颜色应为红色。如果单元格内容为“中等”,则单元格颜色应为黄色。如果单元格内容为“低”,则单元格颜色应为绿色。我不知道VBA。我喜欢Excel的条件格式,但必须使用Word。
我在您的站点上寻找了答案,但是我发现的示例似乎是Javascript。我今年66岁,根本不是程序员(不幸的是)。 感谢您的帮助-也许可以为我介绍一个很好的在线VBA课程:)
答案 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