0
我有一個在onchange事件中觸發時可以很好地工作的宏。它只是檢查單元格值,並隱藏或取消隱藏同一活動工作表中其他地方的行。下面是隱藏或取消隱藏行的宏:如果我調用宏作爲改變細胞C56
爲「否」,它完美的結果隱藏行excel vba在未觸發時不起作用
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
。
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顯示錶明它隱藏了行,但實際上並沒有隱藏它們。
我完全難住!
我認爲您需要完全限定您的對象並重新編寫代碼。 [你可以從這裏開始如何做到這一點](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。 – L42 2014-09-23 23:23:31