我有一个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.非常感谢任何帮助。
答案 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