vba - 根据单元格中的单词隐藏Excel中的行

标签 vba excel

我对 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/

相关文章:

excel - vba excel 2010中意外的自主更改a1/r1c1表示法

excel - 光标进入单元格时执行 Action

c# - Excel 互操作和数据字段方向

Excel 在尝试计算一个或多个公式时耗尽资源

excel - 范围上的 PasteSpecial 方法失败

javascript - 在 Excel VBA 中解析 JSON 对象数组

excel - VBA(Excel)-从等于错误的变量中获取错误号

html - 当按钮没有关联的 "name"时,使用 Excel VBA 单击 Internet Explorer 中的按钮

excel - VLOOKUP 找不到数据的问题

从系统日期开始的 VBA 周数