我编写了以下 VBA 代码,其中包含一个条件,如果 Cell#="Yes" 则展开底行,否则如果 Cell#="No" 则折叠底行。
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E15").Value = "Yes" Then
ActiveSheet.Outline.ShowLevels RowLevels:=3
ElseIf Range("E15").Value = "No" Then
ActiveSheet.Outline.ShowLevels RowLevels:=8
End If
End Sub
现在,这似乎工作正常,没有任何问题,但由于某种原因,它展开和折叠与代码中显示的同一行级别内的所有行,我真正想要的是能够准确选择我想根据条件展开和折叠哪一行。'
正如你所见,我并不是一名 VB 专业人士,但如果能得到任何帮助我都会非常感激。
谢谢!
答案1
如果我理解正确的话,您应该能够设置和取消设置属性ShowDetails
以展开和折叠大纲中的特定摘要行。
如下所示,Showdetails
是大纲中整行(或整列)的读/写属性。要显示特定摘要行的详细信息,请引用该行中的单个单元格,如下面的示例代码所示。如果您尝试将已展开的摘要级别的属性设置为 True,Excel 将引发错误。如果摘要行由于折叠在较大的分组中而不可见,Showdetails
则将(默默地)无法展开该行。
Option Explicit
Sub Worksheet_Change(ByVal Target As Range)
With ActiveSheet
If .Range("E15").Value = "Yes" Then
With .Range("A26").EntireRow
If .ShowDetail = False Then
.ShowDetail = True
End If
End With
ElseIf Range("E15").Value = "No" Then
With .Range("A45").EntireRow
If .ShowDetail = False Then
.ShowDetail = True
End If
End With
End If
End With
End Sub