这很可能是你的一个基本问题,我自己学习了vba,所以我肯定缺乏一些基础知识。
我有一个计算回报的模拟电子表格。模拟的数量不是恒定的,所以我只想刷新电子表格的一部分。我的代码是这样的:
Worksheets("Monte Carlo").Range(Cells(1, 1), Cells(4 + MaxN, 1001)).Calculate
返回错误。
感谢您的帮助
答案 0 :(得分:2)
尝试调整大小而不是在单元格内执行数学运算:
Worksheets("Monte Carlo").Cells(1,1).resize(4 + MaxN, 1001).Calculate
如果失败,请尝试使用范围对象
Dim rngData as Range
Set rngData = Worksheets("Monte Carlo").Cells(1,1).resize(4 + MaxN, 1001)
rngData.Calculate
答案 1 :(得分:0)
以下代码应该有效(在我的系统上测试):
Dim MaxN As Long
With Worksheets("Monte Carlo")
MaxN = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
.Range(.Cells(1, 1), .Cells(MaxN, 1001)).Calculate
End With
注意,您的Range
在行MaxN
结束(无需在此处添加4,因为MaxN
已经是最后一行),在列1001(!!)中等于列ALM。因此,您需要确保仅在打开Excel文件时运行此宏,该文件支持许多列(兼容模式下的版本2007+和不)。