我有一个用户表单,用于输入我需要的所有信息,我们将其称为“SheetA”。现在我在单独的工作表“SheetB”中隐藏了一堆行,并且希望根据 SheetA 中的条件取消隐藏某些行。
我确信答案很简单,但就是不明白。
答案1
所以这是一个对我有用的解决方案,没什么特别的。这是一个工作表子项,每次 A1 或 B1 中的值发生变化时都会触发。希望它有所帮助。
Private Sub Worksheet_Change(ByVal Target As Range)
'Here you define what range in SheetA the data will be entered and the macro
'will only run if data is changed in that range.
Dim Area As Range
Set Area = Range("A1:B1")
'The "If Not Application..." checks means that IF data is changed THEN run.
If Not Application.Intersect(Area, Range(Target.Address)) Is Nothing Then
'Here you start your criteria for the conditions under which rows should be unhidden
'I called it "TestValue1" but it could be any value.
If Range("A1").Cells.Value = "TestValue1" And _
Range("B1").Cells.Value = "TestValue2" Then
Worksheets("SheetB").Rows("1:2").EntireRow.Hidden = False
Worksheets("SheetB").Rows("3:4").EntireRow.Hidden = False
ElseIf Range("A1").Cells.Value = "TestValue1" Then
Worksheets("SheetB").Rows("1:2").EntireRow.Hidden = False
ElseIf Range("B1").Cells.Value = "TestValue2" Then
Worksheets("SheetB").Rows("3:4").EntireRow.Hidden = False
End If
End If
End Sub
我还必须说,如果你要处理大量数据,这个宏就比较麻烦了,因为它需要你编写大量的 IF 语句。肯定有更有效的方法来完成这项任务,但我还没有时间仔细研究它。