用VBA操纵excel“autoshapes”

时间:2010-04-09 18:32:19

标签: vba excel-vba excel

我正在尝试在分配给Checkbox的VBA(Excel)中编写宏。只要单击该复选框,“自动形状”就会将其“顺序”从“发送到后”更改为“发送到前面”。

基本上,我正在尝试创建一个包含多个面板的仪表板,以便用户无需在工作表之间移动即可访问信息。每个面板将具有矩形自动形状作为其背景,并且面板的组件将在自动形状内“分组”。

可以这样做吗?我非常感谢编写代码的任何想法。

谢谢,

1 个答案:

答案 0 :(得分:2)

我并没有完全遵循你的更大目标,但为了将形状带到前面,请使用:

If MyCheckBox.Value = True Then
    MySheetName.Shapes("MyShapeName").ZOrder msoBringToFront
End If

您应该从MsoZOrderCmd枚举中选择所需的ZOrder移动,并且您的代码应该位于复选框控件的Change事件例程中。


编辑:

您还可以通过索引编号来引用形状。例如:

MySheetName.Shapes(0).ZOrder msoBringToFront

此外,要获取形状的名称,请单击它并查看Excel左上角的名称框(工具栏下方),或迭代所有形状,如下所示:

Sub Macro1()

Dim MyShape As Shape

For Each MyShape In Sheet1.Shapes

    Debug.Print MyShape.Name

Next MyShape

End Sub