Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 对每个子范围进行求值时,子范围选择行为混乱_Excel_Vba - Fatal编程技术网

Excel 对每个子范围进行求值时,子范围选择行为混乱

Excel 对每个子范围进行求值时,子范围选择行为混乱,excel,vba,Excel,Vba,使用下面的代码,我试图将那些浅绿色的字段设置为列标题的值。令人困惑的行为是,一旦它填充了前几个用石灰绿填充的字段,它就再也不会用rCell(0)值填充石灰绿字段。是什么导致rCell的评估发生变化?我希望它保持静态,因为选择不会改变。我已经确认sub正确地匹配了后续的灰绿色字段(颜色被替换),但是代码没有在该点写入头值。现在,我已经通过在For each循环之前将header值设置为单独的字符串来解决这个问题,但是我想了解我在哪里丢失了&丢失了对范围的选择 Sub ChangeColor()

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

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

rCell.Value=rCell(0)。Value
没有像预期的那样引用标题值,它引用的是范围评估中当前位置上方的单元格。正如Scott Craner在上面指出的,我想在选择之前使用
rCell.value=selection(0)引用值。value

rCell是选择中的一个单元格。我假设您希望
rCell.Value=Selection(0).Value
但要使其起作用,标题值必须位于所选单元格的正上方。谢谢,所以我现在就得到了它。由于前一个电池在它之前已经从田地里填满了,所以一切都会正常工作,直到有东西没有填满石灰绿为止。即使匹配了后续部分,它们也不会填充值,因为我一开始并没有真正引用标题。您可能还需要添加一个测试,以确保工作表中的第一行不是选择的一部分,如
选择(0).Value
将抛出一个错误。这是选择的一部分,但我已将子项修改为不选择标题,并使用了您的方法。