使用VBA在Excel中取消隐藏行

使用VBA在Excel中取消隐藏行,excel,vba,Excel,Vba,我试图在Excel中使用以下代码,但它不起作用。单元格AE25是指使用数据验证从列表中提取数字1-8的单元格 Select Case Range("AE25").Value Case 1 Range("A26:A28").EntireRow.Hidden = False Case 2 Range("A26:A29").EntireRow.Hidden = False Case 3 Range("A26:A30").EntireRow.Hidd

我试图在Excel中使用以下代码,但它不起作用。单元格AE25是指使用数据验证从列表中提取数字1-8的单元格

Select Case Range("AE25").Value
   Case 1
      Range("A26:A28").EntireRow.Hidden = False
   Case 2
      Range("A26:A29").EntireRow.Hidden = False
   Case 3
      Range("A26:A30").EntireRow.Hidden = False
   Case 4
      Range("A26:A31").EntireRow.Hidden = False
   Case 5
      Range("A26:A32").EntireRow.Hidden = False
   Case 6
      Range("A26:A33").EntireRow.Hidden = False
   Case 7
      Range("A26:A34").EntireRow.Hidden = False
   Case 8
      Range("A26:A35").EntireRow.Hidden = False
End Select

任何帮助都将不胜感激。

将此代码粘贴到数据所在的工作表模块中,例如,您的数据位于“Sheet1”中,然后将其粘贴到“Sheet1”类模块中。嗯

Private Sub Worksheet_Change(ByVal Target As Range)
    ' AE25
    If (Not Intersect(Target, Range("AE25")) Is Nothing) Then
        Select Case Target.Value
            Case 1
                Range("A26:A28").EntireRow.Hidden = False
            Case 2
                Range("A26:A29").EntireRow.Hidden = False
            Case 3
                Range("A26:A30").EntireRow.Hidden = False
            Case 4
                Range("A26:A31").EntireRow.Hidden = False
            Case 5
                Range("A26:A32").EntireRow.Hidden = False
            Case 6
                Range("A26:A33").EntireRow.Hidden = False
            Case 7
                Range("A26:A34").EntireRow.Hidden = False
            Case 8
                Range("A26:A35").EntireRow.Hidden = False
            Case Else
                ' hide all rows 26-35 if value is not equal to 1-8
                Range("A26:A35").EntireRow.Hidden = True
        End Select
    End If

    ' Z40
    If (Not Intersect(Target, Range("Z40")) Is Nothing) Then
        Select Case Target.Value
            Case "PowerPoint", "Verbal"
                Range("A41").EntireRow.Hidden = False
            Case "None"
                Range("A41").EntireRow.Hidden = True
            Case Else

        End Select
    End If
End Sub

有错误吗?哪一行,哪一行…没有错误,只是没有运行-我是VBA新手,所以有可能我做了一些根本性的错误。用F8键运行代码,检查编译过程。这应该会有帮助…这个代码应该粘贴到哪里?我是否只需右键单击工作表,然后单击“查看代码”并将其放入其中?这取决于您想要启动它的方式。进行了更改以使范围更改检查更加可靠-如最初提供的,如果AE25以某种方式与其他单元格进行了更改(我不太清楚),则.Address属性将与使用的字符串不匹配。这非常有效。我还为“重新隐藏”行添加了一些额外的行,以防AE25被选为高数字,然后更新为较低的数字。如果AE25不等于1-8,我将如何重新隐藏所有第26-35行?此外,如果我在输入单元格中使用文本,又该如何处理?我有另一行要隐藏,这取决于Z40,如果文本是“PowerPoint”或“口头”,它应该取消隐藏第41行。如果文本为“无”,则应隐藏第41行。第41排将开始隐藏。@DanielDusek太好了!最后一件事是,如果删除AE25或Z40中的值,则会出现运行时错误,我希望它隐藏26:35或41行。你能为这个添加一行吗?@KirtjE不能重现这个错误,你能更具体一点吗?在哪一行上,它到底是什么?在错误弹出之前,你在做什么?