Excel无法隐藏超过53行

时间:2014-10-16 07:45:53

标签: excel excel-vba vba

这是代码:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then
        If Range("A2").Value = "Select" Then
            ActiveSheet.Rows("5:61").Select
            Selection.EntireRow.Hidden = True
        End If
    End If
End Sub

由于某种原因,如果范围高于“5:58”,则会出现运行时错误“1004”。

4 个答案:

答案 0 :(得分:1)

此代码在Excel 2013中有效,遗憾的是我没有其他版本。由于我不喜欢参考活动工作簿和活动工作表以及选择的使用,您还可以使用

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then
        If Range("A2").Value = "Select" Then
            Target.Parent.Rows("5:61").EntireRow.Hidden = True
        End If
    End If
End Sub

Target.Parent指的是包含范围的工作表。

答案 1 :(得分:1)

您使用的是哪个版本的Excel?我在Excel 2007上尝试了你的代码,它的工作原理。我删除了选择行并以这种方式尝试,这也有效。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then
        If Range("A2").Value = "Select" Then
            ActiveSheet.Rows("5:61").EntireRow.Hidden = True
        End If
    End If
End Sub

答案 2 :(得分:1)

代码正确且有效。

问题是由于我必须使用许多隐藏的行/列。 Excel仅允许您隐藏有限数量。

答案 3 :(得分:1)

简单的解决方法:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
    If Range("A2").Value = "Select" Then
        Dim Rg as Range
        For each Rg in Target.Parent.Rows("5:61") 'not sure if you need to add a .rows here, just try
            Rg.EntireRow.Hidden = True
        next Rg
    End If
End If
End Sub

这样它一次只能隐藏一行。