2015-02-08 72 views
0

我想检查diff单元的另一个条件以及活动单元格颜色。我在IF中添加如下,但是这给了#name?错误。有人可以帮忙吗?SumByColor与另一个条件

Function SumByColor(CellColor As Range, rRange As Range) 
Dim cSum As Long 
Dim ColIndex As Integer 
Dim ross As Long 
ColIndex = CellColor.Interior.ColorIndex 
For Each cl In rRange 
    ross = ActiveCell.Row 
    If cl.Interior.ColorIndex = ColIndex And Cells(ross, "C").Value = "" Then 
    cSum = WorksheetFunction.Sum(cl, cSum) 
    End If 
Next cl 
SumByColor = cSum 
End Function 

回答

0
  1. 我不认为你想你的公式中使用ActiveCell?你是否?现在,如果它位于C列中,则会创建循环引用。
  2. 也许你得到一个错误,因为cl没有定义。使用这一行来定义变量的起始位置:Dim cl As Range
  3. 您将始终获得#NAME?错误,如果你的公式放在错误的地方。确保公式不会放入任何“Sheet”模块或“ThisWorkbook”模块中。应该创建一个单独的模块(默认名称:“Module1”)(插入>模块)以存储用户定义的公式以便能够使用。

对我来说,如果我把你的公式放在C列以外的任何地方,效果会很好。

+0

嗨@ZygD,非常感谢。问题是由于答案中的point3造成的。它不会再犯错误了。 – 2015-02-08 17:13:07

+0

我需要另一个帮助。我能够使代码工作。但是,当我改变单元格的颜色时,函数不会重新计算总和......只要cellcolor发生变化,就可以自动执行它。现在只有当我使用公式转到单元格并按下'F2'时才起作用。 – 2015-02-08 18:25:19

+0

@Amitabha快乐它帮助。不幸的是,VBA没有这样的事件来捕捉格式变化。如果您的工作簿没有充分计算,我可能会建议每次选择更改时强制重新计算。这不完全是你想要的,但我没有其他简单的答案。将以下3行插入“Sheet”模块(这次不是“Module1”)。 'Private Sub Worksheet_SelectionChange(ByVal Target As Range)' 'Application.CalculateFull' 'End Sub' – ZygD 2015-02-08 18:59:29

相关问题