的Excel 2013的Excel 2013:與不同片材計算細胞當在特定片復位計算細胞
我在此工作簿3名的工作表,其高度格式化和我使用了自定義式I VBA編碼利用的應用。易失性,因此每次輸入新數據時都會自動刷新計算結果。
我的團隊已將此工作簿上下格式化,並創建了一個包含公司財務報表的巨大跟蹤器。問題是,現在當我們打開工作簿並按f9 /加載計算工作表函數時,只有選定的工作表將根據該工作表內的參考單元進行更新和計算。
它應該做到這一點,但問題是在其他兩個選項卡內(請注意,總共有3個選項卡),具有公式的單元格將恢復爲當前不適用的所有零或舊數據。當您選擇最初未選中的另外兩個選項卡中的一個並按f9/load calculate sheet函數時,其中曾經有零/舊數據的函數的單元格基於單元格引用的新值進行更新,工作正常。
它繼續這樣做,因爲我們切換標籤並重新初始化f9/calculate sheet函數,另外兩個當前未選中的選項卡重置並顯示全零或舊數據。我一直在Google上搜索,並尋找解決方案,沒有任何工作。
Function RedFinder(MyCellColumn As Integer, MyOffset As Integer, MonthCheck As Integer, YearCheck As Integer)
Application.Volatile
' Dim MyCellRow As Integer 'row I want to select
Dim MyMoneyValue As Variant 'Single holds a decimal variable
Dim MyAnswerString As String
' Sheets("Sheet1").Activate 'activate sheet1 at cell script runs on
' MyCellRow = 115 'set variable MyCellRow to row 1
MyMoneyValue = CDec("0.0")
' ActiveSheet.Cells(MyCellRow, MyCellColumn).Select 'select active cell based on input vars
For MyCellRow = 2 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'for loop used to go through all cells
If IsDate(ActiveSheet.Cells(MyCellRow, MyCellColumn)) Then 'checks if cell is a date
If Month(ActiveSheet.Cells(MyCellRow, MyCellColumn)) = MonthCheck And Year(ActiveSheet.Cells(MyCellRow, MyCellColumn)) = YearCheck Then 'checks if month and date match
If IsNumeric(ActiveSheet.Cells(MyCellRow, MyCellColumn).Offset(0, MyOffset)) Then 'checks if corresponding column is a number
If ActiveSheet.Cells(MyCellRow, MyCellColumn).Offset(0, MyOffset).Font.Color = 255 Then 'checks if cell text color is red, 255 is the number Font.Color returns for RGB Red (255,0,0)
MyMoneyValue = MyMoneyValue + ActiveSheet.Cells(MyCellRow, MyCellColumn).Offset(0, MyOffset) 'adds cell value to MyMoneyValue
' MyAnswerString = MyMoneyValue
' MyCellRow = MyCellRow + 1
' Else
' MyCellRow = MyCellRow + 1
End If
End If
' Else
' MyAnswerString = "False"
' MyCellRow = MyCellRow + 1
End If
End If
Next MyCellRow
'MsgBox MyCellColumnA
'RedFinder = Year(ActiveSheet.Cells(MyCellRow, MyCellColumn))
RedFinder = MyMoneyValue 'sets function to report total of MyMoneyValue
End Function
可能的原因是你的VBA功能相關的問題(這是這裏沒有包括),所以將它添加到你的問題中會很有用。您可能依賴於默認的工作表引用,而不是使用工作表來限定所有範圍/單元格引用。或者,如果您使用的是Application.Evaluate(或者僅僅是Evaluate),那麼它總是默認爲Activesheet,即使它是從其他工作表調用的。 –
您正在使用Application.Volatile的事實告訴我,您的UDF可能存在問題。嘗試重寫UDF,以便VBA引用的所有單元都包含在傳遞給UDF的UDF參數中 - 那麼您將不再需要Application.volatile。 –
這裏是我的VBA代碼: https://gist.github.com/anonymous/b409de8088f7f8c14b6b1856aa64b50e – Rob