Excel VBA - 如何引用单元格的可见内容而不是其公式?

3
我正在尝试循环遍历Excel电子表格中特定范围(具体而言是“B13:B65”),并隐藏所有包含“X”的行。就像这样:
For i = 13 to 65
If Cells(i, 2) = "x" Or "X" Then Rows(i).RowHeight = 0
Next i

问题在于我遇到了类型不匹配的错误。
我猜测这是因为这个区域中的所有单元格都是公式,而不是文本字符串。例如,单元格B13的内容是:
='Monthly'!$C$13

我希望我的代码评估的是单元格的可见输出,而不是实际内容。
我感觉这里有一个非常简单的解决方案,但是我已经搜索了一段时间没有成功。显然,我是新手...

这里是针对您实际问题的解释和答案:http://stackoverflow.com/a/6308366/119775 - Jean-François Corbett
可能是使用多个条件的if语句的重复问题。 - Jean-François Corbett
5个回答

5

3
您之所以会出现错误,是因为使用了Or操作符。在Or操作符之后必须有一些可以被评估为真或假的内容。否则,“X”永远不会为真或假。您需要使用以下代码,并在其他地方也采用这种方式:
如果Cells(i,2)="x"或Cells(i,2)="X",那么Rows(i).RowHeight=0。

2

使用Value属性:

If Cells(i, 2).Value = "x" 

1

循环遍历静态范围

Dim rng As Range, c As Range
Set rng = Range("B13:B65")

For Each c In rng.Cells
    If UCase(c) = "X" Then
        c.EntireRow.Hidden = True
    End If
Next c

0
你可以使用自动筛选。
Sub HideEm()
Dim rng1 As Range
Set rng1 = ActiveSheet.Range("$B$1:$B$65")
rng1.Parent.AutoFilterMode = False
rng1.AutoFilter Field:=1, Criteria1:="<>x", Operator:=xlOr, Criteria2:="<>X"
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接