這很可能是您的一個基本問題,我自己學習了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+和而不是)時,才需要確保您正在運行此宏。