首页 文章

在Excel中自动隐藏多行

提问于
浏览
0

我有一个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
    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
    
  • 0

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

    改变这一行:

    ThisRow = Target.Row
    

    至:

    ThisRow = aCell.Row
    

相关问题