每张工作表的重复任务,根据单元格值取消隐藏和隐藏

时间:2019-03-23 17:57:41

标签: excel vba

我正在使用当前的代码,但是我想对工作表中的很多行和工作簿中的其他工作表重复相同的任务。

我想重复的任务是基于yes / no下拉菜单取消隐藏和隐藏行。我知道可以在模块中创建代码并在每个工作表中调用它。会有所帮助。

谢谢!

"mainImage": {
    "bucket": "bucketname",
    "region": "eu-central-1",
    "key": "public/b369e63d-1a40-4793-ae49-cecde042b1b9.jpg",
    "__typename": "S3Object"
  },

1 个答案:

答案 0 :(得分:0)

也许使用Workbook.SheetChange event这样的事情。将此代码添加到ThisWorkbook代码模块中。它假定下拉列表中没有其他单元格显示“是”或“否”。如果不是这种情况,可以很容易地对其进行修改。如果需要,还可以对其进行修改以仅处理某些工作表,而排除其他工作表。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    Select Case Target.Value
        Case "Yes"
            Target.Offset(1).EntireRow.Hidden = True
        Case "No"
            Target.Offset(1).EntireRow.Hidden = False
    End Select
End Sub

如您之前的answerquestion中所述,您可以使用LCase使其不区分大小写:

Select Case LCase(Target.Value)
    Case "yes"
        ....
    Case "no"
        ....
End Select

编辑

已修改为根据其名称排除某些工作表:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub

    Select Case Sh.Name
        Case "Sheet2", "Sheet4" ' change to the names of the sheets to exclude
            Exit Sub
    End Select

    If VarType(Target.Value) = vbString Then
        Select Case LCase(Target.Value)
            Case "yes"
                Target.Offset(1).EntireRow.Hidden = True
            Case "no"
                Target.Offset(1).EntireRow.Hidden = False
        End Select
    End If
End Sub