【问题标题】:hide rows excel vba does not work when not triggered隐藏行excel vba在未触发时不起作用
【发布时间】:2014-09-23 23:12:27
【问题描述】:

我有一个在 onchange 事件触发时运行良好的宏。它只是检查单元格值并隐藏或取消隐藏同一活动工作表上其他地方的行。这是隐藏或取消隐藏行的宏:

Sub ToggleTaskTable()

MsgBox "Toggling Tasks"

        If Cells(56, 3).Value = "No" Then
            Cells(57, 1).EntireRow.Hidden = 
            MsgBox "Hding Rows 106, 148 and 190"

            ActiveSheet.Rows("106").Hidden = True
            ActiveSheet.Rows("148").Hidden = True
            ActiveSheet.Rows("190").Hidden = True

' try it another way

            Rows("106").Hidden = True
            Rows("148").Hidden = True
            Rows("190").Hidden = True

        Else
            Cells(57, 1).EntireRow.Hidden = False

           '  MsgBox "Showing task Rows 106, 148 and 190"

            Rows("106").Hidden = False
            Rows("148").Hidden = False
            Rows("190").Hidden = False
       End If
End Sub

如果我因为将单元格 C56 更改为“否”而调用宏,它会完美运行。

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = "$C$56" Then
      Call ToggleTaskTable
   End If
End Sub

如果我从另一个宏调用该宏,并将C56 设置为“否”,它根本不起作用。

Sub CallAllMacros()
   Call ToggleTaskTable
End Sub

即使 msgbox 显示它正在隐藏行,它实际上并没有隐藏它们。

我完全被难住了!

【问题讨论】:

标签: excel rows hidden vba


【解决方案1】:
Sub ToggleTaskTable()
    With ActiveSheet
        .Range("A57,A106,A148,A190").EntireRow.Hidden = (.Cells(56, 3).Value = "No")
    End With
End Sub

【讨论】:

  • 谢谢。这比我的新代码更有说服力,但并没有解决问题。我的代码显然运行良好,我有一些后续代码重新隐藏了行。呸!无论如何都非常感谢:)
猜你喜欢
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多