在评估For Each时,子范围选择行为会令人困惑

问题描述 投票:0回答:1

使用下面的代码我试图将那些绿色的字段设置为列标题的值。令人困惑的行为是,一旦填充了充满石灰绿的前几个字段,它将永远不会再填充具有rCell(0)值的石灰绿色字段。是什么导致rCell的评估发生变化?我希望它保持静态,因为选择不会改变。我已经确认sub正确匹配后续的lime绿色字段(当颜色被替换时),但代码只是没有在该点写入标题值。现在我通过在每个循环之前将标题值设置为单独的字符串来解决这个问题,但是我想知道我在哪里迷路并且丢失了范围的选择。

Sub ChangeColor()
    Dim rCell As Range
    If Selection.Cells.Count = 1 Then
        MsgBox "Select the range to be processed."
        Exit Sub
    End If
    For Each rCell In Selection
        If rCell.Interior.Color = RGB(146, 208, 80) Then  'lime green
            rCell.Interior.Color = RGB(255, 255, 255)      'white
            rCell.Value = rCell(0).Value
        End If
    Next rCell
End Sub
excel-vba vba excel
1个回答
0
投票

rCell.Value = rCell(0).Value没有像想象的那样引用标题值,它是在范围评估中引用当前位置上方的单元格。正如Scott Craner上面所说,我想通过使用rCell.Value = Selection(0).Value在选择之前引用该值。

© www.soinside.com 2019 - 2024. All rights reserved.