VBA更改受功能影响的所有单元格的背景颜色

时间:2018-05-03 12:04:27

标签: excel vba function

我在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错误。

是否有这样做或者不能以这种方式使用功能?

1 个答案:

答案 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;。