閱讀英文

共用方式為


Excel) (Shapes 物件

指定工作表上所有 Shape 物件的集合。

註解

每一個 Shape 物件都代表繪圖圖層中的物件,例如快取圖案、手繪多邊形、OLE 物件或圖片。

注意

如果您想要處理檔上圖案的子集,例如,若要只對檔上的快取圖案或只對選取的圖案執行某些動作,您必須建構包含您要使用之圖案的 ShapeRange 集合。

範例

使用Worksheet物件的Shapes屬性可傳回Shapes集合。 下列範例會選取 myDocument上的所有圖形。

注意

如果您想要執行一些 (,例如刪除或將屬性) 同時設定為工作表上的所有圖案,請選取所有圖案,然後在選取範圍上使用 ShapeRange 屬性來建立包含工作表上所有圖案的 ShapeRange 物件,然後將適當的屬性或方法套用至 ShapeRange 物件。

Set myDocument = Worksheets(1) 
myDocument.Shapes.SelectAll

使用 [圖形 (索引) ,其中 index 是圖形的名稱或索引編號,可傳回單一 Shape 物件。 下列範例會將 myDocument 上第一個圖案的填滿格式設定為預設的網底。

Set myDocument = Worksheets(1) 
myDocument.Shapes(1).Fill.PresetGradient _ 
 msoGradientHorizontal, 1, msoGradientBrass

使用範圍 (索引) ,其中 index是圖案的名稱或索引編號或圖案名稱或索引編號的陣列,可傳回代表Shapes集合子集的ShapeRange集合。 下列範例會設定 myDocument 上第一個及第三個圖案的填滿圖樣。

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)).Fill.Patterned _ 
 msoPatternHorizontalBrick

ActiveX 控制項在工作表上有兩個名稱:一個是包含該控制項的圖案名稱,當檢視工作表時,您可以在 [名稱] 方塊中看到,另一個是控制項的程式碼名稱,您可以在 [屬性] 視窗中 (Name) 右邊的儲存格裡看到。 當您第一次新增一個控制項到工作表中時,該圖案名稱和程式碼名稱是相符合的。 不過,如果您變更圖形名稱或程式碼名稱,另一個則不會自動變更為相符。

在控制項的事件程序中,使用的是控制項的程式碼名稱。 不過,當您從 ShapesOLEObjects 集合中傳回工作表的控制項時,必須使用圖案名稱,而不能使用程式碼名稱,以便根據名稱來參照控制項。 例如,假設您新增一個核取方塊到工作表中,而且預設圖案名稱和預設程式碼名稱都是 CheckBox1。 這時如果您藉由在 [屬性] 視窗的 (Name) 旁邊輸入 chkFinished 來變更控制項的程式碼名稱,則必須在事件程序名稱中使用 chkFinished,但是仍然必須使用 CheckBox1 才能從 ShapesOLEObject 集合中傳回控制項,如下列範例所示。

Private Sub chkFinished_Click() 
 ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1 
End Sub

方法

屬性

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應