使用Excel VBA展开和折叠行

时间:2017-03-14 17:40:55

标签: excel vba excel-vba

我正在构建一个包含不同部分的表单。我不想使用Command按钮或Toggle按钮(它们看起来很难看),因为这是为了客户端,我希望它是用户友好的。无论如何所以基本上我想构建一个宏,当他们点击形状时,它将折叠不必要的行并展开右行。

到目前为止,这是我能找到的......但它只适用于命令按钮。

Private Sub CommandButton1_Click()
With Me.CommandButton1
        If .Caption = "Initial Request" Then
            .Caption = "Hide Rows"
            Rows("12:20").Hidden = False
        Else
            .Caption = "Initial Request"
            Rows("12:200").Hidden = True
        End If
    End With

End Sub

这完全有效......但是,有没有办法对其进行转换,以便可以将其添加到模块中并因此分配给形状?

非常感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您可以添加一个形状,比如说Rectangle并为其指定一个宏,并将此等效代码分配给您:

Sub Rectangle2_Click()
    With Sheet3.Shapes("rectangle 2").TextFrame2.TextRange
        If .Text = "Initial Request" Then
            .Text = "Hide Rows"
            sheet3.Rows("12:20").Hidden = False
        Else
            .Text = "Initial Request"
            sheet3.Rows("12:20").Hidden = True
        End If
    End With
End Sub

显然,在这个例子中,我向Sheet3添加了一个矩形形状,它的名称为"矩形2"。您应该根据您的情况调整这些名称。

答案 1 :(得分:1)

尝试使用此代码:

Option Explicit

Sub Cloud_Click()

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")

If ws.Shapes("Cloud 2").TextFrame2.TextRange.Text = "Initial Request" Then
    ws.Shapes("Cloud 2").TextFrame2.TextRange.Text = "Hide rows"
    ws.Rows("12:20").Hidden = False
Else
    ws.Shapes("Cloud 2").TextFrame2.TextRange.Text = "Initial Request"
    ws.Rows("12:20").Hidden = True
End If

End Sub

我当然希望以下的屏幕演示能够解释其余部分。

enter image description here

相关问题