Excel - 运行时错误“1004”:无法设置范围类的隐藏属性

时间:2012-12-20 07:15:21

标签: excel vba excel-vba

我是脚本新手,我正在尝试改进现有的宏。我录制了一个宏来删除重复并将其添加到Main函数中,该函数调用其他函数,但是当我添加我记录的宏时,我收到此错误:

Run-time error '1004': Unable to set the hidden property of the range class

代码看起来像

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim changed As Range
    Set changed = Intersect(Target, Range("J15"))
    If Not changed Is Nothing Then
        Range("A48:A136").EntireRow.Hidden = True
        Select Case Target.Value
            Case "Agriculture"
                Range("A48:A96").EntireRow.Hidden = False
            Case "Commercial"
                Range("A97:A136").EntireRow.Hidden = False
            Case "MDP"
                Range("A48:A61").EntireRow.Hidden = False
        End Select
        Range("J15").Select
    End If
End Sub

3 个答案:

答案 0 :(得分:7)

一些可能的答案:

  • 您在其中一个选定的单元格中有评论
  • 您有一些不会使用文字调整大小的绘制对象
  • 您的工作表受到保护

当你在事件处理程序的第一行设置断点,然后按F8逐步执行宏时,我假设它在行上崩溃了:

Range("A48:A136").EntireRow.Hidden = True

答案 1 :(得分:0)

试试这个:)

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveWorkbook.Unprotect "password_here"
    Dim changed As Range
    Set changed = Intersect(Target, Range("J15"))
    If Not changed Is Nothing Then
        Range("A48:A136").EntireRow.Hidden = True
        Select Case Target.Value
            Case "Agriculture"
                Range("A48:A96").EntireRow.Hidden = False
            Case "Commercial"
                Range("A97:A136").EntireRow.Hidden = False
            Case "MDP"
                Range("A48:A61").EntireRow.Hidden = False
        End Select
        Range("J15").Select
    End If
ActiveWorkbook.Protect "password_here"
End Sub

这应该对你有用:)

答案 2 :(得分:0)

当人们说“您在一个选定的单元格中有评论”时,请记住评论可以在不同的列中。

如果评论框位于您要隐藏的列上(例如,如果您将每一列隐藏在右侧,而您在完全不同的列中有评论),这就是您将得到的错误。< /p>

如果您尝试手动隐藏该列,您会得到一个不同的令人困惑的错误,类似于“隐藏此列会将对象从工作表中推出。”

几列上方的评论框是对象。

^ 这将为我节省大约 40 分钟的调试时间。