【发布时间】:2017-09-29 00:07:13
【问题描述】:
是否可以使用 IsEmpty 来引用与触发宏的位置不同的工作表上的单元格?另外,如果查询结果为True,是否可以隐藏查询的列?
这是我目前构建的: 我的第一个版本是这样的:
If IsEmpty(L1) Then
Columns("L").EntireColumn.Hidden = True
Else
Columns("L").EntireColumn.Hidden = False
End If
足够直截了当。但是,只有在我希望查询/隐藏发生的工作表中触发它时才有效。当我从不同的工作表启动宏时,它会隐藏 that 工作表中的列(当然,duh)。
所以,经过几次迭代和错误,我得到了这个:
If IsEmpty(Sheets("Results").Cells(10, 1).Value) Then
Worksheets("Results").Columns(10).EntireColumn.Hidden = True
Else
Worksheets("Results").Columns(10).EntireColumn.Hidden = False
End If
这至少不会从 VBA 中引发任何错误。它也做了一个总蹲。 :$ 我开始怀疑是否可以在另一张纸上使用IsEmpty?还是EntireColumn.Hidden 命令?另外,鉴于我需要对 9 列运行此检查,也许有比 9 个 If/Then 语句更好的方法?
【问题讨论】:
-
绝对可以,试试:
If IsEmpty(Sheets("Results").Cells(10, 1)) Then -
您的代码对我来说似乎工作正常。
-
对于问题的最后一点;如果列是连续的,则可以使用 for 循环并迭代列引用,如果不是,则可以创建列引用数组并对其进行迭代。
-
它是
Cells(Rows,Columns),所以也许你正在反转它,应该是Sheets("Results").Cells(1, 10).Value。您可以从 1 到 9 循环检查 9 列。 -
FWIW
IsEmpty与细胞无关,与Variant无关。如果你给它一个包含 nothing 的Range.Value,它将返回True- 甚至不是一个空字符串。
标签: vba excel excel-2010 is-empty