我似乎无法使此代码按预期合作。我认为这是一个简单的逻辑错误。
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行。
答案 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