复制到新单元格后,用户功能无效

时间:2016-05-10 17:51:43

标签: excel-vba vba excel

我有以下功能可根据单元格颜色对一系列单元格求和。

Function SumByColor(CellColor As Range, R As Range)

Dim x As Double: x = 0
Dim i As Long: i = CellColor.Interior.Color
For Each Item In R
    If Item.Interior.Color = i Then x = x + Item.Value
    Next Item
SumByColor = x

End Function

当我第一次使用它时,它工作正常。但是,当我将它复制/粘贴到第二个单元格时,结果是原始值 - 这是有意义的,因为我使用我想要结果的单元格作为函数调用的第一个参数,并且它随着复制粘贴。但是,我改变了细胞颜色,结果并没有改变我期望的方式。

第一个函数调用:

=sumbycolor(J5,$E$1:$E$58)

该功能在单元格J5中,为绿色,结果为xxxx

复制/粘贴函数调用:

=sumbycolor(J8,$E$1:$E$58)

该功能在单元格J8中,复制/粘贴变为绿色,结果为xxxx

然后我将单元格J8的颜色更改为蓝色,这应该将结果从xxxx更改为yyyy - 但它没有。

手动重新计算工作表不起作用,也没有保存工作簿,关闭它并重新打开它。将函数调用键入新的(蓝色)单元格可以得到正确的yyyy结果。更改原始单元格中单元格的颜色也不会导致结果按预期更改。

如果我使用不同的单元格来获取颜色代码,它也不起作用 - 即使用单元格J8中的颜色和K8中的函数调用。第一次获得正确的总和,但如果我在J8中更改颜色,则不会更新。

当我说“更改单元格的颜色”时,我正在使用下拉菜单来更改它 - 而不是公式或功能。当我这样做时,看起来单元格的Color属性没有得到更新 - 我还需要在函数中做些什么才能确保用当前的Color设置重新计算?

0 个答案:

没有答案