为什么这个 ISVISIBLE() 自定义函数 return #VALUE!直到我按下 return?

Why does this ISVISIBLE() custom function return #VALUE! until I press return?

这个对 的回答建议使用这个函数来判断一个单元格是否可见:

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

此功能与 INDIRECT() 结合使用效果很好。我在 A1 中有一个单元格引用,我正在使用 isvisible(INDIRECT(A1)).

但是,当我隐藏 A1 所指的单元格(在另一个 sheet 上)时,我得到 #VALUE! 直到我进入公式栏并点击 return.

我的问题是:

  1. 为什么会这样?
  2. 如何防止出现 #VALUE! 错误?

编辑:

这些行是 hidden/unhidden 通过单击一系列带有宏代码的复选框:

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 是具有可见功能的 sheet 的名称。如果你有很多sheet的公式,重新计算整本书:

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