【发布时间】:2017-06-29 10:15:28
【问题描述】:
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!,直到我进入编辑栏并按回车键。
我的问题是:
- 为什么会这样?
- 如何防止出现
#VALUE!错误?
编辑:
通过单击带有宏代码的一系列复选框来隐藏/取消隐藏行,如下所示:
Private Sub CheckBox1_Click()
Rows("13:17").Hidden = Not Rows("13:17").Hidden
End Sub
【问题讨论】:
-
我无法重现您的错误。当我隐藏单元格时,我没有得到#Value! - 在重新计算工作簿之前,函数结果根本不会改变。您使用 Indirect 的方式一定有问题。 A1单元格的内容是什么?
-
@RADO:该值为“BA2 Optional”!F15(引用另一张纸)。该公式连接工作表名称、F 列和行号,位于单元格 C2 中:="'BA2 Optional'!F"&C2
-
我仍然无法重现您的错误;很可能,因为我使用的是空白工作簿,而您有一个更复杂的工作簿。此链接可能对您有所帮助:stackoverflow.com/questions/4170983/vba-udf-returning-value
-
@RADO:我没有创建这个工作簿,所以只是偶然发现了基于复选框隐藏/取消隐藏行的 VBA 代码。我已将其编辑到问题中。
-
啊,那不一样。现在我已经复制了它。请看下面的答案,
标签: excel user-defined-functions vba