繁体   English   中英

使用 Word VBA 根据单元格值为表格中的单元格着色

[英]Use Word VBA to color cells in tables based on cell value

在 Word 中,我有一个包含多个充满数据的表格的文档。 隐藏在这些单元格内(不在视图中但数据在那里)是我想要为单元格着色的颜色的十六进制代码。 我选择十六进制值只是因为它相对较短,并且它是一段独特的文本,不会与单元格中的其余文本混淆。

我在网上找到了一些代码进行修改,但我似乎无法使其工作。 它没有给出任何错误,只是没有任何反应。 我觉得问题在于在表格中搜索文本值,但我已经花了几个小时在这上面,我想我现在已经糊涂了!

Sub ColourIn()

Dim oTbl As Table
Dim oCel As Cell
Dim oRng As Range
Dim oClr As String

For Each oTbl In ActiveDocument.Tables
For Each oCel In oTbl.Range.Cells
Set oRng = oCel.Range
oRng.End = oRng.End - 1

If oRng = "CCFFCC" Then
oCel.Shading.BackgroundPatternColor = wdColorLightYellow
End If
If oRng = "FFFF99" Then
oCel.Shading.BackgroundPatternColor = wdColorPaleBlue
End If

Next
Next
End Sub

谢谢!

编辑:

我也试过这个代码,但没有发生同样的结果:

Sub EachCellText()

Dim oCell As Word.Cell
Dim strCellString As String

For Each oCell In ActiveDocument.Tables(1).Range.Cells
strCellString = Left(oCell.Range.Text, _
Len(oCell.Range.Text) - 1)

If strCellString = "CCFFFF" Then
oCell.Shading.BackgroundPatternColor = wdColorLightGreen
If strCellString = "CCFFCC" Then
oCell.Shading.BackgroundPatternColor = wdColorLightYellow
If strCellString = "FFFF99" Then
oCell.Shading.BackgroundPatternColor = wdColorPaleBlue

End If
End If
End If

Next
End Sub

您的代码无处可去。 但是您正在根据十六进制代码检查整个单元格值,这将不起作用,因为“blablabla FFFFFF”永远不等于“FFFFFF”。 所以你必须检查十六进制代码是否在单元格值中:

Sub ColourIn()

Dim oTbl As Table
Dim oCel As Cell
Dim oRng As Range
Dim oClr As String

For Each oTbl In ActiveDocument.Tables

    For Each oCel In oTbl.Range.Cells

        Set oRng = oCel.Range
        oRng.End = oRng.End - 1

        Dim cellvalue As String

        'check if Colorcode is in cell
        If InStr(oRng, "CCFFCC") Then

            'Set Cell color
            oCel.Shading.BackgroundPatternColor = wdColorLightYellow

            'Remove Colorcode from Cell
            cellvalue = Replace(oRng, "CCFFCC", "")

            'load new value into cell
            oRng = cellvalue
        End If
    Next
Next
End Sub

现在你只需要添加你想要使用的所有颜色(我更喜欢 Select Case 语句),代码应该可以正常工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM