Excel-VBA:基于相邻单元格的文本颜色更改单元格的文本颜色

Excel-VBA:基于相邻单元格的文本颜色更改单元格的文本颜色,vba,colors,fonts,Vba,Colors,Fonts,我正在处理一个宏,该宏在dData范围内循环,并确定哪些单元格具有白色字体颜色。然后,它会更改与dData white相邻的任何单元格的字体颜色。下面的代码是我到目前为止的代码。它还不起作用,但是,我在正确的轨道上吗 谢谢 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim dData As Range Dim Cell As Range Set dData = Sheets("Sheet1").Range("l2:

我正在处理一个宏,该宏在dData范围内循环,并确定哪些单元格具有白色字体颜色。然后,它会更改与dData white相邻的任何单元格的字体颜色。下面的代码是我到目前为止的代码。它还不起作用,但是,我在正确的轨道上吗

谢谢

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dData As Range
Dim Cell As Range

Set dData = Sheets("Sheet1").Range("l2:l10000")

For Each Cell In dData
    If Cell.Font.Color = 2 Then
        Cell.Offset(0, -1).Font.Color = 2
    End If
Next Cell
End Sub

这似乎对我有用

Sub Test()
Dim dData As Range
Dim Cell As Range

Set dData = Sheets("Sheet1").Range("l2:l10000")

For Each Cell In dData.Cells
        If Cell.Font.Color = 16777215 Then
            Cell.offset(,1).Font.Color = 16777215
        End If
Next
End Sub
注意另外
dData
的范围仅限于
Sheet1

在我的电脑上,“白色”是一个长值
16777215
,在2010年的Excel中对我有效,我认为应该在2007年有效。在Excel2003中,我不确定

试试这个

Sub Sample()
    Dim dData As Range, aCell As Range

    Set dData = Sheets("Sheet1").Range("L2:L10000")

    For Each aCell In dData.Cells
        If aCell.Font.ColorIndex = 2 Then _
        aCell.Offset(, 1).Font.ColorIndex = 2
    Next
End Sub

不过,我认为您不想将此代码放在
SelectionChange
事件中。我有一个组合框,可以触发另一个宏,我可以将其放在那里。你知道为什么现在不起作用吗?你是不是遇到了错误,或者只是运行时什么也没发生?我运行时什么也没发生。无论你将代码放在哪个工作表模块中,该代码都会影响
Sheet1
。您确定要查看
Sheet1
以了解更改吗?谢谢您的帮助,但它似乎什么都没做。我要做的是测试列“L”中的哪些单元格具有白色字体,然后将列“M”的字体颜色更改为白色。@用户1437463:如果要更改列
M
的颜色,那么为什么
偏移量(0,-1)
;)请尝试
Offset(,1)
@david:
您将需要一个额外的If语句,否则列A中的单元格将引发错误。
为什么会这样?@david:我不想发布其他答案,所以我将编辑您的帖子。希望你不要mind@DavidZemens“A1”来自哪里?我们在L列循环单元格;)