VBA Изменить цвет фона всех ячеек, на которые влияет функция - PullRequest
0 голосов
/ 03 мая 2018

У меня есть функция в VBA, чтобы циклически проходить через диапазон ячеек и добавлять их до тех пор, пока общее значение не станет равным установленному максимуму, что я хотел бы сделать, это установить цвет фона всех ячеек, которые используется в сумме.

Например:

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 голосов
/ 03 мая 2018

Вы используете свою функцию как 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 для «Относится к».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...