如何修复由于宏而未自动更新的单元格

时间:2018-05-19 08:05:37

标签: excel-vba vba excel

我有一个单元,可以用任何费用更新余额。因为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 :(得分:4)

您将范围引用作为currentBalance的参数传递给函数,但不是修改余额的范围。

unsafe

用法:type MyTime struct { t time.Time mu sync.RWMutex } func (t *MyTime) Time() time.Time { t.mu.RLock() defer t.mu.RUnlock() return t.t } func (t *MyTime) SetTime(tm time.Time) { t.mu.Lock() defer t.mu.Unlock() t.t = tm }

使用本机工作表函数SUM:Private Function SubtractChecking(cell As Range, vals as range) Dim currentBalance As Single currentBalance = cell.Value2 SubtractChecking = currentBalance - WorksheetFunction.Sum(vals) End Function

答案 1 :(得分:3)

“自动更新计算”这一问题的一般答案是您必须使用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

但是,当然,Michal的评论也是对的:你为什么不使用-