为什么这个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! 出现错误?

编辑:

通过点击一系列macros代码checkbox来隐藏/取消隐藏行,如下所示:

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

像这样改变你的代码:

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

其中MySheet是具有隐形function的工作表的名称。 如果您在很多工作表中都有公式,请重新计算整本书:

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