我有一个单元,可以用任何费用更新余额。因为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进行更新。我认为这与宏有关,但我不知道。
答案 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的评论也是对的:你为什么不使用-
?