Range.Calculate不更新单元格中的值
我有一个代码,使大量的计算,包括arrays,这是伟大的工作,除了一行,它不是更新时计算。
要计算这个范围,这是上述行的总和,我正在使用:
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,Rodnei
也许您处于自动计算模式,而Report2不是活动工作表:
Range.Dirty是越野车,并始终在活动工作表上工作
Range.Calculate不会在自动模式下重新计算不空白的单元格。
有关Range.Calculate的其他限制,请参阅http://www.decisionmodels.com/calcsecretsg.htm
和http://www.decisionmodels.com/calcsecretsh.htm有关使用VBA计算公式的更多信息。
简单的答案 – 你有轻微的疏忽。
在第一行中放入"Report2"
,在下一行中放入"Report1"
作为表名。
希望这个伎俩!
为了捎带@John Bustos的build议,你们之间也有不必要的空间,“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
实际上,如果Report2不是活动工作表,则代码还有另一个问题:范围计算将计算活动工作表上的等效范围
我觉得你实际上要做的是更像这样的事情
Worksheets("Report2").Cells(40, 4).Resize(2, 30).calculate