【问题标题】:VBA Expand/Collapse rowsVBA 展开/折叠行
【发布时间】:2017-12-21 09:27:09
【问题描述】:

我有一份报告要求用户单击按钮以显示他们需要添加评论的位置。我让它工作,但想放入一个 If 语句,以防他们已经扩展了行。

我有两个宏,第一个与他们按下的按钮相关,并向主宏发送按钮的名称和行号,该行号是展开或折叠部分的一部分

Sub ROccupancy()
'
Dim RecName As String
RecName = "ROccupancy"
Dim RowNum As Integer
RowNum = 27

Call ToogleRec(RecName, RowNum)

End Sub

下一个宏是我遇到问题的地方

Sub ToogleRec(RecName, RowNum)
'
Dim Toogle As String
Dim MyObj As Object

Set MyObj = ActiveSheet.Shapes.Range(Array(RecName))

Toogle = Left(MyObj.TextFrame2.TextRange.Characters.Text, 4)
TextName = Mid(MyObj.TextFrame2.TextRange.Characters.Text, 5, 100)
If Toogle = "Show" Then
    MyObj.ShapeStyle = msoShapeStylePreset9
    MyObj.TextFrame2.TextRange.Characters.Text = _
        "Hide" & TextName
    MsgBox Rows(RowNum).ShowDetail
        If Rows(RowNum).ShowDetail = False Then
            Rows(RowNum).ShowDetail = True
        End If


Else
    MyObj.ShapeStyle = msoShapeStylePreset11
    MyObj.TextFrame2.TextRange.Characters.Text = _
        "Show" & TextName
    MsgBox Rows(RowNum).ShowDetail
        If Rows(RowNum).ShowDetail = True Then
            Rows(RowNum).ShowDetail = False
        End If
End If
Range("C" & RowNum).Select
End Sub

问题在于 Rows(RowNum).ShowDetail 始终为 TRUE,无论它是展开还是折叠。我可以删除 If 部分并使用“Rows(RowNum).ShowDetail = False”或“Rows(RowNum).ShowDetail = TRUE”将其设置为 TRUE 或 FALSE。但是,如果用户手动展开或折叠该行,则会导致错误(这让他们大吃一惊)

这个问题和答案似乎 promising 但 Rows(RowNum).ShowDetail 似乎总是正确的

我把 MsgBox 放在那里进行错误检查。我会在最终版本中删除它。

【问题讨论】:

标签: vba excel


【解决方案1】:

您是否尝试过使用Hidden 属性?比如:

With Sheet1.Rows(5)
    .ShowDetail = .Hidden
End With

请注意,如果要使用 .ShowDetail 方法,
您需要先 Group 行 (needs to be in outline form)。

如果为指定范围扩展轮廓(以便可见列或行的详细信息),则为真。指定的范围必须是大纲中的单个汇总列或行。

以上代码切换隐藏/取消隐藏分组的第 5 行。
您甚至不需要 If 语句来进行切换。 HTH。

【讨论】:

  • 谢谢。我将这些部分分组,您的解决方案肯定有效。愚蠢的问题 - 它是如何工作的?
  • @IHamilton 是啊傻兄弟,我也不知道答案。蒂姆在您发布的线程中的解决方案应该有效。我之前只碰巧使用过Hidden 属性,所以我想在Outlined 表上尝试一下并与您分享。它以某种方式起作用。干杯! :)
猜你喜欢
  • 2021-12-10
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2018-03-07
  • 2014-06-30
  • 2011-09-01
  • 1970-01-01
相关资源
最近更新 更多