【发布时间】: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 显示它正在隐藏行,它实际上并没有隐藏它们。
我完全被难住了!
【问题讨论】:
-
我认为您需要完全限定您的对象并重新编写您的代码。 You can start here on ways on how to do that.