评估每个对象时,子范围选择行为令人困惑

时间:2018-06-20 19:16:22

标签: excel-vba vba excel

使用下面的代码,我试图将那些浅绿色的字段设置为列标题的值。令人困惑的行为是,一旦它填充了用石灰绿色填充的前几个字段,就永远不会再用rCell(0)的值填充石灰绿色字段。是什么导致rCell的评估发生变化?我希望它保持不变,因为选择不会改变。我已经确认该子项正确匹配了随后的柠檬绿色字段(因为替换了颜色),但是该代码此时并未写入标头值。现在,我已经通过在每个循环之前将标头值设置为单独的字符串来解决此问题,但我想了解丢失的位置和丢失的范围选择。

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

1 个答案:

答案 0 :(得分:0)

rCell.Value = rCell(0).Value行并未按原样引用标头值,而是引用了范围评估中当前位置上方的单元格。如上文的Scott Craner所述,我想在选择之前使用rCell.Value = Selection(0).Value来引用值。