自动隐藏excel

时间:2015-09-03 17:54:09

标签: excel vba excel-vba

我有一个Excel工作簿: 如果工作表“选择”中列“A”中的单元格为空,则隐藏“打印”工作表上的同一行。如果工作表“选择”中“A”列中的单元格具有值,则“打印”工作表上的相同行可见。

我编写的代码会在更改时自动隐藏/取消隐藏行。如果我在工作表“选择”中的“A”列中一次更改一个单元格,则效果很好。当我在“A”列中选择多个单元格并删除这些值时,只有选择中的第一个单元格会自动隐藏“打印”工作表上的行。我希望更新与我的选择对应的所有行。防爆。如果我在“选择”工作表上选择A3:A7并删除这些值,则应在“打印”页面上隐藏第3行到第7行。

以下是我在“选择”表上的代码:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.EnableEvents = False
    If Target.Column = 1 Then
        For Each aCell In Target.Cells
            ThisRow = Target.Row
            If aCell.Value = "" Then
                Worksheets("Print").Rows(ThisRow).EntireRow.Hidden = True
            Else
                Worksheets("Print").Rows(ThisRow).EntireRow.Hidden = False
            End If
        Next
    End If
    Application.EnableEvents = True
    End Sub

我正在使用Excel 2013.非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

问题是你总是在调用Target.row。这只会抓住目标范围的第一行。

更改此行:

ThisRow = Target.Row

为:

ThisRow = aCell.Row

答案 1 :(得分:0)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Application.EnableEvents = False
    If Target.Column = 1 Then
        For Each cel In Target.Columns(1).Rows
            Worksheets("Print").Rows(cel.Row).EntireRow.Hidden = Len(cel.Value2) = 0
        Next
    End If
    Application.EnableEvents = True
End Sub