刷新VBA中的动态范围

时间:2016-04-16 19:35:41

标签: excel vba excel-vba

这很可能是你的一个基本问题,我自己学习了vba,所以我肯定缺乏一些基础知识。

我有一个计算回报的模拟电子表格。模拟的数量不是恒定的,所以我只想刷新电子表格的一部分。我的代码是这样的:

Worksheets("Monte Carlo").Range(Cells(1, 1), Cells(4 + MaxN, 1001)).Calculate

返回错误。

感谢您的帮助

2 个答案:

答案 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+和)。