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

时间:2017-06-29 10:15:28

标签: excel excel-vba user-defined-functions vba

Formula to decide if cell is visible的答案表明这个函数可以说明一个细胞是否可见:

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!错误?
  3. 编辑:

    通过点击一系列带有宏代码的复选框隐藏/取消隐藏行:

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

1 个答案:

答案 0 :(得分:1)

更改您的代码:

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

其中MySheet是具有isvisible函数的工作表的名称。如果您有多张表中的公式,请重新计算整本书:

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