根据单元格值(VBA)隐藏和取消隐藏行

时间:2017-09-22 16:41:04

标签: excel-vba vba excel

我似乎无法使此代码按预期合作。我认为这是一个简单的逻辑错误。

If Worksheets("input").Range("B31").Value = "?TEXT" Then
    Worksheets("Customer Report").Rows("22").EntireRow.Hidden = True
    Worksheets("Customer Report").Rows("23").EntireRow.Hidden = False
Else
    Worksheets("Customer Report").Rows("23").EntireRow.Hidden = True
    Worksheets("Customer Report").Rows("22").EntireRow.Hidden = False
End If

目标是如果工作表1中的单元格B31包含" Blah blah TEXT"然后隐藏第22行并显示第23行。如果它只包含" Blah blah"然后显示第22行并隐藏第23行。

1 个答案:

答案 0 :(得分:1)

Like*一起用作通配符。

  

Worksheets("input").Range("B31").Value Like "*TEXT"

也不需要If。我们可以简单地进行测试。

  

Rows().Hidden = 1 = 1

1=1将解析为true,行将被隐藏。

Rows().EntireRow也是多余的。

Worksheets("Customer Report").Rows("22").Hidden = Worksheets("input").Range("B31").Value Like "*TEXT"
Worksheets("Customer Report").Rows("23").Hidden = Not Worksheets("input").Range("B31").Value Like "*TEXT"

我们可以进一步减少重复输入的数量:

Dim rng As Range
Set rng = Worksheets("input").Range("B31")
With Worksheets("Customer Report")
    .Rows("22").Hidden = rng.Value Like "*TEXT"
    .Rows("23").Hidden = Not rng.Value Like "*TEXT"
End With