使用Excel VBA展开和折叠行

我正在build立一个不同部分的表单。 我不想使用命令button或切换button(他们的外观是丑陋的),因为这是客户我希望它是用户友好的。 无论如何,所以基本上我想要build立一个macros,当他们点击形状将折叠不必要的行,并展开正确的行。

到目前为止,这是我能够find…但它只适用于一个命令button。

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 

这工作完美…但是,有没有一种方法来转换,以便它可以添加到一个模块,因此分配给一个形状?

非常感谢您的帮助

你可以添加一个形状,比如说一个Rectangle并用这个等价的代码给你的macros指定一个macros:

 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”。 你应该根据你的情况调整这些名字。

试试这个代码:

 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 

我当然希望下面的屏幕演示将解释其余的部分。

在这里输入图像描述