2017-06-29 33 views
0

這個答案Formula to decide if cell is visible表明這個功能說的小區是否可見:爲什麼這個ISVISIBLE()自定義函數返回#VALUE!直到我按回來?

Function isvisible(rng As Range) 
    isvisible = Not (rng.EntireColumn.Hidden Or rng.EntireRow.Hidden) 
End Function 

此功能結合的偉大工程與INDIRECT()。我在A1單元格引用,我使用isvisible(INDIRECT(A1))

但是,當我隱藏A1所指的單元格時(在另一張表格上),我得到#VALUE!,直到我進入公式欄並按回車。

我的問題是:

  1. 爲什麼會出現這種情況?
  2. 我怎樣才能防止出現在#VALUE!錯誤?

編輯:

行被隱藏/取消隱藏通過點擊與宏代碼的一系列複選框這樣的:

Private Sub CheckBox1_Click() 
    Rows("13:17").Hidden = Not Rows("13:17").Hidden 
End Sub 
+0

我無法重現您的錯誤。當我隱藏細胞時,我沒有#Value! - 在重新計算工作簿之前,函數結果不會改變。在使用間接方式時必須有一些東西。單元格A1的內容是什麼? – RADO

+0

@RADO:值爲'BA2可選'!F15(參考另一張紙)。該公式串聯工作表名稱,F列和行號,住在小區C2:=「!‘BA2可選的’F」和C2 – user1108

+0

我仍然無法重現你的錯誤;最有可能的是,因爲我使用空白工作簿,而您有更復雜的工作簿。此鏈接可以幫助你:https://stackoverflow.com/questions/4170983/vba-udf-returning-value – RADO

回答

1

更改你的代碼是這樣的:

Private Sub CheckBox1_Click() 
    Rows("13:17").Hidden = Not Rows("13:17").Hidden 
    ThisWorkbook.Worksheets("MySheet").Calculate 
End Sub 

其中MySheet的工作是在片材與所述可見性本功能的名稱離子。如果您在很多工作表中有公式,請重新計算整本書:

Private Sub CheckBox1_Click() 
    Rows("13:17").Hidden = Not Rows("13:17").Hidden 
    Application.Calculate 
End Sub 
+0

謝謝 - 我要發佈一個重複的答案,因爲我們在同一時間有同樣的想法:-) – user1108

+0

高興你解決你的問題。最好的祝願! – RADO