我在VBA中有一个函数来遍历一系列单元格并将它们加起来直到总值等于设定的最大值,我希望能够做的是设置所有单元格的背景颜色。用于SUM。
例如:
A, B, C, D, E, F, G, H
1, 2, 3, 4, 5, , 5, =SumToValue(A1:E1, G1)
这将返回3为1 + 2 = 3,3 + 3 = 6,高于最大值5。
以下是代码:
Function SumToValue(area As range, max As range)
Application.Volatile
Dim total As Long
total = 0
For Each cell In area
If (WorksheetFunction.Sum(cell, total) <= max) Then
total = WorksheetFunction.Sum(cell, total)
Else
Exit For
End If
Next cell
SumToValue = total
End Function
所以我需要在计算时设置A1和B1的背景颜色。但是,如果我尝试在循环中添加cell.Interior.ColorIndex = 50
,那么我会从公式中得到Value
错误。
是否有这样做或者不能以这种方式使用功能?
答案 0 :(得分:0)
您正在将您的功能用作UDF(用户定义的功能)。在UDF中,不允许修改工作表中的任何内容,例如参见https://support.microsoft.com/en-us/help/170787/description-of-limitations-of-custom-functions-in-excel
我能想到的最好的选择是使用公式向细胞添加条件规则。在您的示例中,转到单元格A1并使用以下公式定义规则:
=SUM($A1:A1) <= $A$7
并输入=A1:A5
作为&#34;适用于&#34;。