Как исправить ячейку, которая не обновляется автоматически из-за макроса - PullRequest
0 голосов
/ 19 мая 2018

У меня есть ячейка, которая обновляет баланс с любыми расходами.Поскольку в Excel нет функции вычитания, я написал этот простой макрос:

Private Function SubtractChecking(cell As Range)
    Dim currentBalance As Single
    currentBalance = cell.Value

    SubtractChecking = currentBalance - WorksheetFunction.Sum(Range("B7:M23"))
End Function

Функция работает, но ячейка, в которой находится эта функция, не обновляет вычисления автоматически;Я проверил, что параметры расчета Excel установлены автоматически.Мне нужно либо дважды щелкнуть по ячейке, чтобы обновить ее, либо использовать Ctrl-Shift-Alt-F9 для обновления.Я подумал, что это связано с макросом, но понятия не имею.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы передаете ссылку на диапазон в функцию в качестве параметра для currentBalance, но не диапазон для изменения баланса.

Private Function SubtractChecking(cell As Range, vals as range)
    Dim currentBalance As Single

    currentBalance = cell.Value2
    SubtractChecking = currentBalance - WorksheetFunction.Sum(vals)

End Function

Использование: =SubtractChecking(A1, B7:M23)

Использование собственного рабочего листафункция СУММА: =sum(a1, -sum(B7:M23))

0 голосов
/ 19 мая 2018

Общий ответ на вопрос «обновлять вычисления автоматически» заключается в том, что вы должны использовать Application.Volatile В этом случае

Private Function SubtractChecking(cell As Range)
    Dim currentBalance As Single
    Application.Volatile
    currentBalance = cell.Value

    SubtractChecking = currentBalance - WorksheetFunction.Sum(Range("B7:M23"))

End Function

Но, конечно же, комментарий Михала также прав: почему бы и нет?т вы используете -?

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