我正在尝试在分配给Checkbox的VBA(Excel)中编写宏。只要单击该复选框,“自动形状”就会将其“顺序”从“发送到后”更改为“发送到前面”。
基本上,我正在尝试创建一个包含多个面板的仪表板,以便用户无需在工作表之间移动即可访问信息。每个面板将具有矩形自动形状作为其背景,并且面板的组件将在自动形状内“分组”。
可以这样做吗?我非常感谢编写代码的任何想法。
谢谢,
答案 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