VBA-Excel中。如何根据Private Sub Worksheet_Change(ByVal Target As Range)处理隐藏/取消隐藏行?

时间:2017-11-17 16:44:34

标签: excel-vba vba excel

大家早上好,

我是macros&的新手VBA Excel。我希望根据Private Sub Worksheet_Change(ByVal Target As Range)处理隐藏/取消隐藏行。我有以下代码事件

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="avalon"
If Target.Column = 2 Then
Application.EnableEvents = False
Cells(Target.Row, 5).Value = Date + Time
Application.EnableEvents = True
End If
ActiveSheet.Protect Password:="avalon"
End Sub

当我从'B4'到'B21'输入数据时,想法是聚合这个事件(隐藏/取消隐藏行)(有时它们将被完全填充,有时是部分填充。这没关系)。也许,点击“B21”或另一个事件,在某个单元格中双击以激活从22到36的取消隐藏行,以便跟进填充这些行。我希望明确,如果不是让我知道,试图澄清我需要根据事件发现正确的代码。

提前致谢。我保证会很快学会。

enter image description here

1 个答案:

答案 0 :(得分:1)

您尝试执行的操作似乎是根据选择自动隐藏或显示行。

您可以使用范围对象上的.hidden来显示或隐藏行(使用EntireRow)。您只需要某种方法来确定何时隐藏这些行。通过使用selectionChange事件,您可以根据当前选择的行显示或隐藏行。

以下代码放在工作表对象上时,会对您有所帮助。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Row
    Case 21
        ActiveSheet.Range("B22:B36").EntireRow.Hidden = False
    Case 22 To 36
        ActiveSheet.UsedRange.EntireRow.Hidden = False
    Case Else
        ActiveSheet.Range("B22:B36").EntireRow.Hidden = True
End Select
End Sub

您可以创建更多案例并提供行号,选中后,这些行号将隐藏或显示其他范围。

我希望我能正确理解你的问题。