2015-02-08 71 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

相關問題