这很可能是您的一个基本问题,我自己学习了vba,因此我缺乏一些基本知识。在VBA中刷新动态范围
我得到了一个计算回报的模拟电子表格。模拟的数量不是恒定的,所以我只想刷新电子表格的一部分。我的代码是这样的:
Worksheets("Monte Carlo").Range(Cells(1, 1), Cells(4 + MaxN, 1001)).Calculate
返回一个错误。
谢谢您的帮助
这很可能是您的一个基本问题,我自己学习了vba,因此我缺乏一些基本知识。在VBA中刷新动态范围
我得到了一个计算回报的模拟电子表格。模拟的数量不是恒定的,所以我只想刷新电子表格的一部分。我的代码是这样的:
Worksheets("Monte Carlo").Range(Cells(1, 1), Cells(4 + MaxN, 1001)).Calculate
返回一个错误。
谢谢您的帮助
尝试调整,而不是进行细胞内的数学:
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
下面的代码应该工作(在我的系统上测试):
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+和而不是)时,才需要确保您正在运行此宏。