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