2016-04-16 148 views
2

這很可能是您的一個基本問題,我自己學習了vba,因此我缺乏一些基本知識。在VBA中刷新動態範圍

我得到了一個計算回報的模擬電子表格。模擬的數量不是恆定的,所以我只想刷新電子表格的一部分。我的代碼是這樣的:

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

返回一個錯誤。

謝謝您的幫助

回答

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 
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+和而不是)時,才需要確保您正在運行此宏。