2010-04-09 149 views
0

我正在嘗試在分配給複選框的VBA(Excel)中編寫一個宏。無論何時複選框被點擊,「autoshape」會將其「順序」從「發送到後退」更改爲「發送到前端」。使用VBA操作excel「autoshapes」

基本上,我試圖創建一個帶有多個面板的儀表板,以便用戶可以訪問信息而無需在工作表之間移動。每個面板都有一個矩形自動成形作爲其背景,面板的組件將在自動形狀中「分組」。

可以這樣做嗎?我非常感謝編寫代碼的任何想法。

感謝,

回答

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 
+0

子CheckBox3_Click() 如果CheckBox3.Value = TRUE,則 Sheet1.Shapes( 「blueoval」)ZORDER msoBringToFront 結束如果 結束小組 這是我輸入的代碼。爲什麼。我是否收到運行時錯誤424? – AME 2010-04-13 16:22:50

+0

假設您在設置zorder時出現此錯誤,這意味着VBA無法通過名稱「blueoval」找到形狀。你確定那是形狀的名字?你確定它在Sheet1上? – 2010-04-13 21:45:21