我有一个代码可以进行大量的计算,包括数组,这些代码运行得很好,但计算后它不会更新的一行除外。
要计算该范围,即上述行的总和,我正在使用:
Application.ScreenUpdating = True
Application.Range(Worksheets("Report2").Cells(40,4).Address & ":" & Worksheets("Report2").Cells(41, 33).Address).Dirty
Application.Range(Worksheets("Report2").Cells(40,4).Address & ":" & Worksheets("Report2").Cells(41,33).Address).Calculate
Application.ScreenUpdating = False
如果有人能为此提供任何信息,那将是很棒的。 谢谢。
RGDS, 罗德尼
答案 0 :(得分:3)
也许您处于自动计算模式,而Report2不是活动工作表:
Range.Dirty是错误的,总是在活动表上工作
Range.Calculate不会在自动模式下重新计算未静音的单元格。
有关Range.Calculate
的其他限制,请参阅http://www.decisionmodels.com/calcsecretsg.htm和http://www.decisionmodels.com/calcsecretsh.htm有关使用VBA计算公式的更多信息。
答案 1 :(得分:0)
简单回答 - 你有轻微的疏忽......
在第一行放入"Report2"
并在下一行放入"Report1"
作为工作表名称。
希望这可以解决问题!!
答案 2 :(得分:0)
要捎带@John Bustos的建议,你在“,30”之间也有一个不必要的空间
修正了“Report1”和“,30”错误修正后的代码:
Application.ScreenUpdating = True
Application.Range(Worksheets("Report2").Cells(40,4).Address & ":" & Worksheets("Report2").Cells(41,33).Address).Dirty
Application.Range(Worksheets("Report2").Cells(40,4).Address & ":" & Worksheets("Report2").Cells(41,33).Address).Calculate
Application.ScreenUpdating = False
如果您遇到第二行问题,请尝试在使用以下方法调用单元格之前激活工作表:
ThisWorkbook.Sheets("Report2").Activate
答案 3 :(得分:0)
实际上,如果Report2不是活动工作表,则代码还有另一个问题:范围计算将计算活动工作表上的等效范围
我认为你真正想做的事情更像是这样的事情
Worksheets("Report2").Cells(40, 4).Resize(2, 30).calculate