簡體   English   中英

Excel VBA>在保存工作簿之前不更新公式

[英]Excel VBA > Formula not updating until workbook is saved

我有一個非常大的Excel工作簿(25個以上的工作表,15個以上的VBA模塊)用於財務分析。

我注意到,直到我手動保存工作簿2至3次,該公式之一才顯示值。 在保存之前,它將顯示為破折號(-)。 保存2至3次后,值將按預期顯示。

我已經放了一些ActiveWorkbook.Save已經在我的宏運行中運行了,但是它們似乎並沒有影響這種情況。

有問題的公式是(對於一個單元格):

=OFFSET(THIS_CELL, 0, -1)+INDEX('ExternalWorksheet'!$A$1:$CR$300,MATCH("Some Term",'ExternalWorksheet'!$A:$A,0),MATCH($B5,'ExternalWorksheet'!$1:$1,0))+INDEX('ExternalWorksheet'!$A$1:$CR$300,MATCH("Some Other Term",'ExternalWorksheet'!$A:$A,0),MATCH($B5,'ExternalWorksheet'!$1:$1,0))+INDEX('ExternalWorksheet'!$A$1:$CR$300,MATCH("Yet Another Term",'ExternalWorksheet'!$A:$A,0),MATCH($B5,'ExternalWorksheet'!$1:$1,0))-OFFSET(THIS_CELL, 0, -17)

(我知道這是不守規矩的,我沒有創建它,我只是程序員;)

我正在使用另一個SO帖子中所述的THIS_CELL技巧,因為此公式出現在此工作表的多個“表”中。

我的客戶不滿意讓該列顯示為破折號,而依賴該列的列顯示為N / A,直到他保存為止。 據我所知,此行為與THIS_CELL(或OFFSET)的使用有關,就好像我刪除了單元格按預期更新的OFFSET一樣。 但是,我看不到如何擺脫它,因為我必須在工作表中的多個“表”上重復此公式,並讓它們引用正確的單元格。 我也不能切換到RC表示法,因為我的客戶不喜歡它。

您可以通過更改初始選定的單元格以產生必要的偏移量來修改THIS_CELL技巧,以完全消除對OFFSET函數的依賴。 在這些方向上第一步說明選擇單元格A1的原因(這很重要!) ,因此THIS_CELL始終引用您選擇的單元格。 您不需要所選的單元格。 您想要左邊的1列或17列。

(從創建名為THIS_CELL的命名公式竊取並修改)

  1. 在當前工作表中,選擇單元格R1 (這很重要!)
  2. 打開名稱管理器(Ctl + F3)
  3. 點擊新建...
  4. 在名稱中輸入“ THE_CELL_BEHIND_ME”:
  5. 在“引用”中輸入以下公式: =!Q1

注意:確保已選擇單元格R1 此公式相對於ActiveCell。

  1. 在范圍下:選擇工作簿。

  2. 單擊確定。

  3. 重復使用名稱THE_CELL_WAY_BEHIND_ME和=!A1作為引用。

  4. 關閉名稱管理器。

使用=THE_CELL_BEHIND_ME=OFFSET(THIS_CELL, 0, -1)相同,並且=THE_CELL_WAY_BEHIND_ME=OFFSET(THIS_CELL, 0, -17)

我在CTRL + S保存和ActiveWorkbook.Save ,在這種情況下,它們的工作方式有所不同。 無論我通過VBA保存多少次,都不會更新公式。 CTRL + S似乎正在強制重新計算。

在這篇文章中,我添加了

ActiveSheet.EnableCalculation = False  
ActiveSheet.EnableCalculation = True

在保存之前已經解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM