我有一个Excel文档,该文档的条件格式会根据所选的特定[下拉]文本更改单元格的背景颜色。例如,是,将单元格背景更改为绿色,否更改为红色,未知更改为黄色以及不适用于灰色。
所有简单的东西。
然后我需要邮件合并到Word文档,以用Excel表填充Word文档-该Word文档还具有其他与Excel无关的文本。
由于没有遇到单元格的条件格式设置,因此我在宏中使用了下面提到的代码来更改Word中的背景颜色。它可以运行,但是似乎在第一个循环之后,似乎因错误-Runtime error 5907 - there is no table at this location
而崩溃。
代码r.Cells(1).Shading.BackgroundPatternColorIndex = backgroundColor
中的行以黄色突出显示。
我的编码水平是基本的,所以我不知道出了什么问题。
如果任何人都能够提供对简单解决方案的见解,我将不胜感激。
谢谢
Dim r As Range
Sub UBC()
color "No", wdRed
color "Yes", wdGreen
color "Unknown", wdYellow
color "Not Applicable", wdGray50
End Sub
Function color(text As String, backgroundColor As WdColorIndex)
Set r = ActiveDocument.Range
With r.Find
Do While .Execute(FindText:=text, MatchWholeWord:=True, Forward:=True) = True
r.Cells(1).Shading.BackgroundPatternColorIndex = backgroundColor
Loop
End With
End Function
答案 0 :(得分:0)
(可能)Word正在表单元格之外找到一个字符组合。最安全的方法是测试找到的术语是否实际上在表中。 (注意:我也将变量声明Dim r
放在了函数中...)
Sub UBC()
color "No", wdRed
color "Yes", wdGreen
color "Unknown", wdYellow
color "Not Applicable", wdGray50
End Sub
Function color(text As String, backgroundColor As WdColorIndex)
Dim r As Word.Range
Set r = ActiveDocument.content
With r.Find
Do While .Execute(findText:=text, MatchWholeWord:=True, Forward:=True) = True
If r.Tables.Count > 0 Then
r.Cells(1).Shading.BackgroundPatternColorIndex = backgroundColor
End If
Loop
End With
End Function