我对 VBA 非常陌生,一直在寻找可以实现我想要的功能的 VBA 代码。我已经尝试了几种并试图适应它们,但我似乎无法将它们正确化,所以我想尝试寻求一些帮助!
我有 6 个项目,旁边的单元格中有"is"或“否”,表明此人是否正在从事该项目。这是由另一张纸上该项目旁边的人名决定的,因此是生成公式,而不是下拉或输入值。
该项目下面有几行与其相对应。
如果项目旁边有一个“否”(在 C6 中),我希望隐藏该项目的相应行(第 13:29 行)。
我希望每个项目都重复此操作,
所以 c7 中的“否”隐藏了 31:47, C8 中的“否”隐藏 49:65, C9 中的“否”隐藏 67:83, C10 中的“否”隐藏 85:101, C11 中的“否”隐藏 103:118,
我不知道这是否可行,一直在兜圈子,真的希望有人能提供帮助:)
这是我尝试过的改编之一,但我确信我做错了什么,很抱歉之前没有在这里发布
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$6" Then
If Target.Value = NO Then
Rows(13:29).EntireRow.Hidden = True
Else
Rows(13:29).EntireRow.Hidden = False
If Target.Address = "$C$7" Then
If Target.Value = NO Then
Rows(31:47).EntireRow.Hidden = True
Else
Rows(31:47).EntireRow.Hidden = False
End If
End If
If Target.Address = "$C$8" Then
If Target.Value = NO Then
Rows(49:65).EntireRow.Hidden = True
Else
Rows(49:65).EntireRow.Hidden = False
End If
End If
If Target.Address = "$C$9" Then
If Target.Value = NO Then
Rows(67:83).EntireRow.Hidden = True
Else
Rows(67:83).EntireRow.Hidden = False
End If
End If
If Target.Address = "$C$10" Then
If Target.Value = NO Then
Rows(85:101).EntireRow.Hidden = True
Else
Rows(85:101).EntireRow.Hidden = False
End If
End If
If Target.Address = "$C$11" Then
If Target.Value = NO Then
Rows(103:119).EntireRow.Hidden = True
Else
Rows(103:119).EntireRow.Hidden = False
End If
End If
End Sub
最佳答案
我能想到的最短代码:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim bHide As Boolean
bHide = (InStr(1, Target.Value, "NO", vbTextCompare) > 0)
Select Case Target.Address
Case "$C$6"
Rows("13:29").EntireRow.Hidden = bHide
Case "$C$7"
Rows("31:47").EntireRow.Hidden = bHide
Case "$C$8"
Rows("49:65").EntireRow.Hidden = bHide
Case "$C$9"
Rows("67:83").EntireRow.Hidden = bHide
Case "$C$10"
Rows("85:101").EntireRow.Hidden = bHide
Case "$C$11"
Rows("103:119").EntireRow.Hidden = bHide
End Select
End Sub
请测试。
关于vba - 根据单元格中的单词隐藏Excel中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986436/